efficient-storefront-blocks 0.66.2 → 0.68.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 (576) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/chunks/{EditorPreviewCheckout-HAUEGHGC.js → EditorPreviewCheckout-HFP2TRRR.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-KOPR3UDU.js → SiteEditorProvider-A7YYACG3.js} +1 -1
  4. package/dist/chunks/chunk-CFYEYTU6.js +254 -0
  5. package/dist/chunks/{chunk-Z7PJKX2P.js → chunk-EPJ5SM3A.js} +1 -1
  6. package/dist/chunks/{chunk-VEI75RPM.js → chunk-FL3KMJAT.js} +1 -1
  7. package/dist/chunks/{chunk-S66TL4Z3.js → chunk-YACB7UXA.js} +1 -1
  8. package/dist/chunks/{chunk-IHYVLVY3.js → chunk-YTQS5GY6.js} +1 -1
  9. package/dist/chunks/{fitment-data-UQDOQP66.js → fitment-data-RXCNCZLU.js} +1 -1
  10. package/dist/contract.js +1 -1
  11. package/dist/editor/components/BlogSource.js +1 -1
  12. package/dist/editor/components/ConsentBannerLayoutTiles.d.ts +1 -1
  13. package/dist/editor/components/HeaderSection.js +1 -1
  14. package/dist/editor/components/HeaderSettingsPanel.js +1 -1
  15. package/dist/editor/components/PreviewProductPicker.js +1 -1
  16. package/dist/editor/components/SocialLinksDoor.js +1 -1
  17. package/dist/editor/components/SwitchToBoxHeader.js +1 -1
  18. package/dist/editor/lib/api/section-templates.d.ts +1 -1
  19. package/dist/editor/lib/{puck → document}/blocks/commerce/AccountBlock/fields.d.ts +1 -1
  20. package/dist/editor/lib/document/blocks/commerce/AccountBlock/fields.js +1 -0
  21. package/dist/editor/lib/{puck → document}/blocks/commerce/AlloyWheelsListing/fields.d.ts +1 -1
  22. package/dist/editor/lib/document/blocks/commerce/AlloyWheelsListing/fields.js +1 -0
  23. package/dist/editor/lib/{puck → document}/blocks/commerce/BundleOffer/fields.d.ts +1 -1
  24. package/dist/editor/lib/document/blocks/commerce/BundleOffer/fields.js +1 -0
  25. package/dist/editor/lib/{puck → document}/blocks/commerce/CartBlock/fields.d.ts +1 -1
  26. package/dist/editor/lib/document/blocks/commerce/CartBlock/fields.js +1 -0
  27. package/dist/editor/lib/{puck → document}/blocks/commerce/CatalogFilterBar/fields.d.ts +1 -1
  28. package/dist/editor/lib/document/blocks/commerce/CatalogFilterBar/fields.js +1 -0
  29. package/dist/editor/lib/{puck → document}/blocks/commerce/CheckoutCTA/fields.d.ts +1 -1
  30. package/dist/editor/lib/document/blocks/commerce/CheckoutCTA/fields.js +1 -0
  31. package/dist/editor/lib/{puck → document}/blocks/commerce/CollectionCard/fields.d.ts +1 -1
  32. package/dist/editor/lib/document/blocks/commerce/CollectionCard/fields.js +1 -0
  33. package/dist/editor/lib/{puck → document}/blocks/commerce/Collections/fields.d.ts +1 -1
  34. package/dist/editor/lib/document/blocks/commerce/Collections/fields.js +1 -0
  35. package/dist/editor/lib/{puck → document}/blocks/commerce/CompatibleTyres/fields.d.ts +1 -1
  36. package/dist/editor/lib/document/blocks/commerce/CompatibleTyres/fields.js +1 -0
  37. package/dist/editor/lib/{puck → document}/blocks/commerce/CountrySwitchBlock/fields.d.ts +1 -1
  38. package/dist/editor/lib/document/blocks/commerce/CountrySwitchBlock/fields.js +1 -0
  39. package/dist/editor/lib/{puck → document}/blocks/commerce/DeliveryOptions/fields.d.ts +1 -1
  40. package/dist/editor/lib/document/blocks/commerce/DeliveryOptions/fields.js +1 -0
  41. package/dist/editor/lib/{puck → document}/blocks/commerce/DetailRows/fields.d.ts +1 -1
  42. package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -0
  43. package/dist/editor/lib/{puck → document}/blocks/commerce/EuTyreLabel/fields.d.ts +1 -1
  44. package/dist/editor/lib/document/blocks/commerce/EuTyreLabel/fields.js +1 -0
  45. package/dist/editor/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/fields.d.ts +1 -1
  46. package/dist/editor/lib/{puck → document}/blocks/commerce/FitmentFinder/fields.d.ts +1 -1
  47. package/dist/editor/lib/document/blocks/commerce/FitmentFinder/fields.js +1 -0
  48. package/dist/editor/lib/{puck → document}/blocks/commerce/FitmentTable/fields.d.ts +1 -1
  49. package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -0
  50. package/dist/editor/lib/{puck → document}/blocks/commerce/Gallery/fields.d.ts +1 -1
  51. package/dist/editor/lib/document/blocks/commerce/Gallery/fields.js +1 -0
  52. package/dist/editor/lib/{puck → document}/blocks/commerce/GalleryB/fields.d.ts +1 -1
  53. package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -0
  54. package/dist/editor/lib/{puck → document}/blocks/commerce/GalleryItem/fields.d.ts +1 -1
  55. package/dist/editor/lib/document/blocks/commerce/GalleryItem/fields.js +1 -0
  56. package/dist/editor/lib/{puck → document}/blocks/commerce/Header/fields.d.ts +1 -1
  57. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.d.ts +6 -0
  58. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.js +1 -0
  59. package/dist/editor/lib/{puck → document}/blocks/commerce/ProductGrid/fields.d.ts +1 -1
  60. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -0
  61. package/dist/editor/lib/{puck → document}/blocks/commerce/ProductHero/fields.d.ts +1 -1
  62. package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -0
  63. package/dist/editor/lib/{puck → document}/blocks/commerce/ProductRef/fields.d.ts +1 -1
  64. package/dist/editor/lib/document/blocks/commerce/ProductRef/fields.js +1 -0
  65. package/dist/editor/lib/{puck → document}/blocks/commerce/RelatedProducts/fields.d.ts +1 -1
  66. package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -0
  67. package/dist/editor/lib/{puck → document}/blocks/commerce/SearchBlock/fields.d.ts +1 -1
  68. package/dist/editor/lib/document/blocks/commerce/SearchBlock/fields.js +1 -0
  69. package/dist/editor/lib/{puck → document}/blocks/commerce/SpecTable/fields.d.ts +1 -1
  70. package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -0
  71. package/dist/editor/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/fields.d.ts +1 -1
  72. package/dist/editor/lib/{puck → document}/blocks/commerce/TyreFitment/fields.d.ts +1 -1
  73. package/dist/editor/lib/document/blocks/commerce/TyreFitment/fields.js +1 -0
  74. package/dist/editor/lib/{puck → document}/blocks/commerce/TyreSizes/fields.d.ts +1 -1
  75. package/dist/editor/lib/document/blocks/commerce/TyreSizes/fields.js +1 -0
  76. package/dist/editor/lib/{puck → document}/blocks/commerce/controls.d.ts +1 -1
  77. package/dist/editor/lib/document/blocks/commerce/controls.js +1 -0
  78. package/dist/editor/lib/document/blocks/commerce/index.js +1 -0
  79. package/dist/editor/lib/{puck → document}/blocks/commerce/page-rules.d.ts +1 -1
  80. package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -0
  81. package/dist/editor/lib/{puck → document}/blocks/service/AppointmentBooking/fields.d.ts +1 -1
  82. package/dist/editor/lib/document/blocks/service/AppointmentBooking/fields.js +1 -0
  83. package/dist/editor/lib/{puck → document}/blocks/service/BookingBox/fields.d.ts +1 -1
  84. package/dist/editor/lib/document/blocks/service/BookingBox/fields.js +1 -0
  85. package/dist/editor/lib/{puck → document}/blocks/service/ContactRouting/fields.d.ts +1 -1
  86. package/dist/editor/lib/document/blocks/service/ContactRouting/fields.js +1 -0
  87. package/dist/editor/lib/{puck → document}/blocks/service/Events/fields.d.ts +1 -1
  88. package/dist/editor/lib/document/blocks/service/Events/fields.js +1 -0
  89. package/dist/editor/lib/{puck → document}/blocks/service/Footer/fields.d.ts +1 -1
  90. package/dist/editor/lib/document/blocks/service/Footer/fields.js +1 -0
  91. package/dist/editor/lib/{puck → document}/blocks/service/FooterDivider/fields.d.ts +1 -1
  92. package/dist/editor/lib/document/blocks/service/FooterDivider/fields.js +1 -0
  93. package/dist/editor/lib/{puck → document}/blocks/service/FooterEmailSignup/fields.d.ts +1 -1
  94. package/dist/editor/lib/document/blocks/service/FooterEmailSignup/fields.js +1 -0
  95. package/dist/editor/lib/{puck → document}/blocks/service/FooterGroup/fields.d.ts +1 -1
  96. package/dist/editor/lib/document/blocks/service/FooterGroup/fields.js +1 -0
  97. package/dist/editor/lib/{puck → document}/blocks/service/FooterLogo/fields.d.ts +1 -1
  98. package/dist/editor/lib/document/blocks/service/FooterLogo/fields.js +1 -0
  99. package/dist/editor/lib/{puck → document}/blocks/service/FooterMenu/fields.d.ts +1 -1
  100. package/dist/editor/lib/document/blocks/service/FooterMenu/fields.js +1 -0
  101. package/dist/editor/lib/{puck → document}/blocks/service/FooterSocial/fields.d.ts +1 -1
  102. package/dist/editor/lib/document/blocks/service/FooterSocial/fields.js +1 -0
  103. package/dist/editor/lib/{puck → document}/blocks/service/FooterText/fields.d.ts +1 -1
  104. package/dist/editor/lib/document/blocks/service/FooterText/fields.js +1 -0
  105. package/dist/editor/lib/{puck → document}/blocks/service/Form/fields.d.ts +1 -1
  106. package/dist/editor/lib/document/blocks/service/Form/fields.js +1 -0
  107. package/dist/editor/lib/{puck → document}/blocks/service/LegalLineBlock/fields.d.ts +1 -1
  108. package/dist/editor/lib/document/blocks/service/LegalLineBlock/fields.js +1 -0
  109. package/dist/editor/lib/document/blocks/service/RateTable/fields.d.ts +2 -0
  110. package/dist/editor/lib/document/blocks/service/RateTable/fields.js +1 -0
  111. package/dist/editor/lib/{puck → document}/blocks/service/RatingBlock/fields.d.ts +1 -1
  112. package/dist/editor/lib/document/blocks/service/RatingBlock/fields.js +1 -0
  113. package/dist/editor/lib/{puck → document}/blocks/service/ReviewForm/fields.d.ts +1 -1
  114. package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -0
  115. package/dist/editor/lib/{puck → document}/blocks/service/Reviews/fields.d.ts +1 -1
  116. package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -0
  117. package/dist/editor/lib/{puck → document}/blocks/service/SiteFooter/fields.d.ts +1 -1
  118. package/dist/editor/lib/document/blocks/service/SiteFooter/fields.js +1 -0
  119. package/dist/editor/lib/{puck → document}/blocks/service/SiteHeader/fields.d.ts +1 -1
  120. package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -0
  121. package/dist/editor/lib/{puck → document}/blocks/service/SubmitBox/fields.d.ts +1 -1
  122. package/dist/editor/lib/document/blocks/service/SubmitBox/fields.js +1 -0
  123. package/dist/editor/lib/{puck → document}/blocks/service/SubmitBuild/fields.d.ts +1 -1
  124. package/dist/editor/lib/document/blocks/service/SubmitBuild/fields.js +1 -0
  125. package/dist/editor/lib/{puck → document}/blocks/service/Subscribe/fields.d.ts +1 -1
  126. package/dist/editor/lib/document/blocks/service/Subscribe/fields.js +1 -0
  127. package/dist/editor/lib/{puck → document}/blocks/service/SubscribeBlogs/fields.d.ts +1 -1
  128. package/dist/editor/lib/document/blocks/service/SubscribeBlogs/fields.js +1 -0
  129. package/dist/editor/lib/{puck → document}/blocks/service/controls.d.ts +1 -1
  130. package/dist/editor/lib/document/blocks/service/index.d.ts +1 -0
  131. package/dist/editor/lib/document/blocks/service/index.js +1 -0
  132. package/dist/editor/lib/{puck → document}/box-header-for-site.d.ts +1 -1
  133. package/dist/editor/lib/{puck → document}/box-header.d.ts +1 -1
  134. package/dist/editor/lib/document/box-header.js +1 -0
  135. package/dist/editor/lib/document/config.d.ts +69 -0
  136. package/dist/editor/lib/document/config.js +1 -0
  137. package/dist/editor/lib/efficient-backend.js +1 -1
  138. package/dist/editor/lib/efficient-block-sources.js +1 -1
  139. package/dist/editor/lib/storefront-editor-words.d.ts +13 -0
  140. package/dist/editor/lib/storefront-editor-words.js +1 -1
  141. package/dist/editor/lib/storefront-editor.js +1 -1
  142. package/dist/editor.css +1 -1
  143. package/dist/index.js +127 -425
  144. package/dist/links.js +1 -1
  145. package/dist/render/app/globals.css +23 -23
  146. package/dist/render/built-with.json +1 -1
  147. package/dist/render/components/AppointmentBooking.js +1 -1
  148. package/dist/render/components/BoxHeaderBar.js +1 -1
  149. package/dist/render/components/ChatLauncher.js +1 -1
  150. package/dist/render/components/CollectionCard.d.ts +1 -1
  151. package/dist/render/components/Collections.d.ts +1 -1
  152. package/dist/render/components/Collections.js +1 -1
  153. package/dist/render/components/ContactRouting.js +1 -1
  154. package/dist/render/components/GalleryCard.js +1 -1
  155. package/dist/render/components/Header.js +1 -1
  156. package/dist/render/components/LegalLine.d.ts +1 -1
  157. package/dist/render/components/LegalLine.js +1 -1
  158. package/dist/render/components/ProductGridSection.js +1 -1
  159. package/dist/render/components/PublishedFooter.js +1 -1
  160. package/dist/render/components/PublishedHeader.js +1 -1
  161. package/dist/render/components/RateTable.d.ts +10 -0
  162. package/dist/render/components/RateTable.js +1 -0
  163. package/dist/render/components/SpecTablePartBridge.js +1 -1
  164. package/dist/render/components/fitment/PickerField.js +1 -1
  165. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +1 -1
  166. package/dist/render/components/pdp-dynamic/DynamicDetailRows.d.ts +1 -1
  167. package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
  168. package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.js +1 -1
  169. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -1
  170. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
  171. package/dist/render/components/pdp-dynamic/DynamicProductGallery.js +1 -1
  172. package/dist/render/components/pdp-dynamic/DynamicProductHero.js +1 -1
  173. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
  174. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  175. package/dist/render/components/pdp-dynamic/DynamicTyreFitment.js +1 -1
  176. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
  177. package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -1
  178. package/dist/render/components/pdp-dynamic/KindGate.js +1 -1
  179. package/dist/render/components/pdp-dynamic/useSampleProduct.js +1 -1
  180. package/dist/render/components/useHeaderBar.js +1 -1
  181. package/dist/render/lib/api/index.js +1 -1
  182. package/dist/render/lib/booking/text-kinds.js +1 -1
  183. package/dist/render/lib/content/header-bar.js +1 -1
  184. package/dist/render/lib/{puck → document}/blocks/commerce/AccountBlock/meta.d.ts +1 -1
  185. package/dist/render/lib/{puck → document}/blocks/commerce/AccountBlock/render.d.ts +1 -1
  186. package/dist/render/lib/{puck → document}/blocks/commerce/AlloyWheelsListing/meta.d.ts +1 -1
  187. package/dist/render/lib/{puck → document}/blocks/commerce/AlloyWheelsListing/render.d.ts +1 -1
  188. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/render.js +1 -0
  189. package/dist/render/lib/{puck → document}/blocks/commerce/BundleOffer/meta.d.ts +1 -1
  190. package/dist/render/lib/{puck → document}/blocks/commerce/BundleOffer/render.d.ts +1 -1
  191. package/dist/render/lib/document/blocks/commerce/BundleOffer/render.js +1 -0
  192. package/dist/render/lib/{puck → document}/blocks/commerce/CartBlock/meta.d.ts +1 -1
  193. package/dist/render/lib/{puck → document}/blocks/commerce/CartBlock/render.d.ts +1 -1
  194. package/dist/render/lib/document/blocks/commerce/CartBlock/render.js +1 -0
  195. package/dist/render/lib/{puck → document}/blocks/commerce/CatalogFilterBar/meta.d.ts +1 -1
  196. package/dist/render/lib/{puck → document}/blocks/commerce/CatalogFilterBar/render.d.ts +1 -1
  197. package/dist/render/lib/document/blocks/commerce/CatalogFilterBar/render.js +1 -0
  198. package/dist/render/lib/{puck → document}/blocks/commerce/CheckoutCTA/meta.d.ts +1 -1
  199. package/dist/render/lib/{puck → document}/blocks/commerce/CheckoutCTA/render.d.ts +1 -1
  200. package/dist/render/lib/document/blocks/commerce/CheckoutCTA/render.js +1 -0
  201. package/dist/render/lib/{puck → document}/blocks/commerce/CollectionCard/meta.d.ts +1 -1
  202. package/dist/render/lib/{puck → document}/blocks/commerce/CollectionCard/render.d.ts +1 -1
  203. package/dist/render/lib/document/blocks/commerce/CollectionCard/render.js +1 -0
  204. package/dist/render/lib/{puck → document}/blocks/commerce/Collections/meta.d.ts +1 -1
  205. package/dist/render/lib/{puck → document}/blocks/commerce/Collections/render.d.ts +1 -1
  206. package/dist/render/lib/document/blocks/commerce/Collections/render.js +1 -0
  207. package/dist/render/lib/{puck → document}/blocks/commerce/CompatibleTyres/meta.d.ts +1 -1
  208. package/dist/render/lib/document/blocks/commerce/CompatibleTyres/meta.js +1 -0
  209. package/dist/render/lib/{puck → document}/blocks/commerce/CompatibleTyres/render.d.ts +1 -1
  210. package/dist/render/lib/document/blocks/commerce/CompatibleTyres/render.js +1 -0
  211. package/dist/render/lib/{puck → document}/blocks/commerce/CountrySwitchBlock/meta.d.ts +1 -1
  212. package/dist/render/lib/{puck → document}/blocks/commerce/CountrySwitchBlock/render.d.ts +1 -1
  213. package/dist/render/lib/{puck → document}/blocks/commerce/CountrySwitchBlock/render.js +1 -1
  214. package/dist/render/lib/{puck → document}/blocks/commerce/DeliveryOptions/meta.d.ts +1 -1
  215. package/dist/render/lib/{puck → document}/blocks/commerce/DeliveryOptions/render.d.ts +1 -1
  216. package/dist/render/lib/document/blocks/commerce/DeliveryOptions/render.js +1 -0
  217. package/dist/render/lib/{puck → document}/blocks/commerce/DetailRows/meta.d.ts +1 -1
  218. package/dist/render/lib/{puck → document}/blocks/commerce/DetailRows/render.d.ts +1 -1
  219. package/dist/render/lib/document/blocks/commerce/DetailRows/render.js +1 -0
  220. package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabel/meta.d.ts +1 -1
  221. package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabel/render.d.ts +1 -1
  222. package/dist/render/lib/document/blocks/commerce/EuTyreLabel/render.js +1 -0
  223. package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/meta.d.ts +1 -1
  224. package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/render.d.ts +1 -1
  225. package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/render.js +1 -1
  226. package/dist/render/lib/{puck → document}/blocks/commerce/FitmentFinder/meta.d.ts +1 -1
  227. package/dist/render/lib/document/blocks/commerce/FitmentFinder/meta.js +1 -0
  228. package/dist/render/lib/{puck → document}/blocks/commerce/FitmentFinder/render.d.ts +1 -1
  229. package/dist/render/lib/document/blocks/commerce/FitmentFinder/render.js +1 -0
  230. package/dist/render/lib/{puck → document}/blocks/commerce/FitmentTable/meta.d.ts +1 -1
  231. package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -0
  232. package/dist/render/lib/{puck → document}/blocks/commerce/FitmentTable/render.d.ts +1 -1
  233. package/dist/render/lib/document/blocks/commerce/FitmentTable/render.js +1 -0
  234. package/dist/render/lib/{puck → document}/blocks/commerce/Gallery/meta.d.ts +1 -1
  235. package/dist/render/lib/document/blocks/commerce/Gallery/meta.js +1 -0
  236. package/dist/render/lib/{puck → document}/blocks/commerce/Gallery/render.d.ts +1 -1
  237. package/dist/render/lib/document/blocks/commerce/Gallery/render.js +1 -0
  238. package/dist/render/lib/{puck → document}/blocks/commerce/GalleryB/meta.d.ts +1 -1
  239. package/dist/render/lib/document/blocks/commerce/GalleryB/meta.js +1 -0
  240. package/dist/render/lib/{puck → document}/blocks/commerce/GalleryB/render.d.ts +1 -1
  241. package/dist/render/lib/document/blocks/commerce/GalleryB/render.js +1 -0
  242. package/dist/render/lib/{puck → document}/blocks/commerce/GalleryItem/meta.d.ts +1 -1
  243. package/dist/render/lib/{puck → document}/blocks/commerce/GalleryItem/render.d.ts +1 -1
  244. package/dist/render/lib/document/blocks/commerce/GalleryItem/render.js +1 -0
  245. package/dist/render/lib/{puck → document}/blocks/commerce/Header/meta.d.ts +1 -1
  246. package/dist/render/lib/{puck → document}/blocks/commerce/Header/render.d.ts +1 -1
  247. package/dist/render/lib/{puck → document}/blocks/commerce/ProductGallery/meta.d.ts +1 -1
  248. package/dist/render/lib/{puck → document}/blocks/commerce/ProductGallery/render.d.ts +1 -1
  249. package/dist/render/lib/{puck → document}/blocks/commerce/ProductGallery/render.js +1 -1
  250. package/dist/render/lib/{puck → document}/blocks/commerce/ProductGrid/meta.d.ts +1 -1
  251. package/dist/render/lib/{puck → document}/blocks/commerce/ProductGrid/render.d.ts +1 -1
  252. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -0
  253. package/dist/render/lib/{puck → document}/blocks/commerce/ProductHero/meta.d.ts +1 -1
  254. package/dist/render/lib/{puck → document}/blocks/commerce/ProductHero/render.d.ts +1 -1
  255. package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -0
  256. package/dist/render/lib/{puck → document}/blocks/commerce/ProductRef/meta.d.ts +1 -1
  257. package/dist/render/lib/{puck → document}/blocks/commerce/ProductRef/render.d.ts +1 -1
  258. package/dist/render/lib/{puck → document}/blocks/commerce/RelatedProducts/meta.d.ts +1 -1
  259. package/dist/render/lib/{puck → document}/blocks/commerce/RelatedProducts/render.d.ts +1 -1
  260. package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -0
  261. package/dist/render/lib/{puck → document}/blocks/commerce/SearchBlock/meta.d.ts +1 -1
  262. package/dist/render/lib/{puck → document}/blocks/commerce/SearchBlock/render.d.ts +1 -1
  263. package/dist/render/lib/document/blocks/commerce/SearchBlock/render.js +1 -0
  264. package/dist/render/lib/{puck → document}/blocks/commerce/SpecTable/meta.d.ts +1 -1
  265. package/dist/render/lib/document/blocks/commerce/SpecTable/meta.js +1 -0
  266. package/dist/render/lib/{puck → document}/blocks/commerce/SpecTable/render.d.ts +1 -1
  267. package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -0
  268. package/dist/render/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/meta.d.ts +1 -1
  269. package/dist/render/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/render.d.ts +1 -1
  270. package/dist/render/lib/{puck → document}/blocks/commerce/TyreFitment/meta.d.ts +1 -1
  271. package/dist/render/lib/{puck → document}/blocks/commerce/TyreFitment/render.d.ts +1 -1
  272. package/dist/render/lib/document/blocks/commerce/TyreFitment/render.js +1 -0
  273. package/dist/render/lib/{puck → document}/blocks/commerce/TyreSizes/meta.d.ts +1 -1
  274. package/dist/render/lib/{puck → document}/blocks/commerce/TyreSizes/render.d.ts +1 -1
  275. package/dist/render/lib/document/blocks/commerce/TyreSizes/render.js +1 -0
  276. package/dist/render/lib/{puck → document}/blocks/commerce/metas.d.ts +1 -1
  277. package/dist/render/lib/document/blocks/commerce/placeholders.js +1 -0
  278. package/dist/render/lib/{puck → document}/blocks/commerce/renders.d.ts +1 -1
  279. package/dist/render/lib/{puck → document}/blocks/service/AppointmentBooking/meta.d.ts +1 -1
  280. package/dist/render/lib/{puck → document}/blocks/service/AppointmentBooking/render.d.ts +1 -1
  281. package/dist/render/lib/document/blocks/service/AppointmentBooking/render.js +1 -0
  282. package/dist/render/lib/{puck → document}/blocks/service/BookingBox/meta.d.ts +1 -1
  283. package/dist/render/lib/{puck → document}/blocks/service/BookingBox/render.d.ts +1 -1
  284. package/dist/render/lib/document/blocks/service/BookingBox/render.js +1 -0
  285. package/dist/render/lib/{puck → document}/blocks/service/ContactRouting/meta.d.ts +1 -1
  286. package/dist/render/lib/{puck → document}/blocks/service/ContactRouting/render.d.ts +1 -1
  287. package/dist/render/lib/document/blocks/service/ContactRouting/render.js +1 -0
  288. package/dist/render/lib/{puck → document}/blocks/service/Events/meta.d.ts +1 -1
  289. package/dist/render/lib/document/blocks/service/Events/meta.js +1 -0
  290. package/dist/render/lib/{puck → document}/blocks/service/Events/render.d.ts +1 -1
  291. package/dist/render/lib/document/blocks/service/Events/render.js +1 -0
  292. package/dist/render/lib/{puck → document}/blocks/service/Footer/meta.d.ts +1 -1
  293. package/dist/render/lib/{puck → document}/blocks/service/Footer/render.d.ts +1 -1
  294. package/dist/render/lib/{puck → document}/blocks/service/Footer/render.js +1 -1
  295. package/dist/render/lib/{puck → document}/blocks/service/FooterDivider/meta.d.ts +1 -1
  296. package/dist/render/lib/{puck → document}/blocks/service/FooterDivider/render.d.ts +1 -1
  297. package/dist/render/lib/{puck → document}/blocks/service/FooterEmailSignup/meta.d.ts +1 -1
  298. package/dist/render/lib/{puck → document}/blocks/service/FooterEmailSignup/render.d.ts +1 -1
  299. package/dist/render/lib/document/blocks/service/FooterEmailSignup/render.js +1 -0
  300. package/dist/render/lib/{puck → document}/blocks/service/FooterGroup/meta.d.ts +1 -1
  301. package/dist/render/lib/{puck → document}/blocks/service/FooterGroup/render.d.ts +1 -1
  302. package/dist/render/lib/{puck → document}/blocks/service/FooterLogo/meta.d.ts +1 -1
  303. package/dist/render/lib/{puck → document}/blocks/service/FooterLogo/render.d.ts +1 -1
  304. package/dist/render/lib/{puck → document}/blocks/service/FooterLogo/render.js +1 -1
  305. package/dist/render/lib/{puck → document}/blocks/service/FooterMenu/meta.d.ts +1 -1
  306. package/dist/render/lib/{puck → document}/blocks/service/FooterMenu/render.d.ts +1 -1
  307. package/dist/render/lib/{puck → document}/blocks/service/FooterMenu/render.js +1 -1
  308. package/dist/render/lib/{puck → document}/blocks/service/FooterSocial/meta.d.ts +1 -1
  309. package/dist/render/lib/{puck → document}/blocks/service/FooterSocial/render.d.ts +1 -1
  310. package/dist/render/lib/{puck → document}/blocks/service/FooterSocial/render.js +1 -1
  311. package/dist/render/lib/{puck → document}/blocks/service/FooterText/meta.d.ts +1 -1
  312. package/dist/render/lib/{puck → document}/blocks/service/FooterText/render.d.ts +1 -1
  313. package/dist/render/lib/document/blocks/service/FooterText/render.js +1 -0
  314. package/dist/render/lib/{puck → document}/blocks/service/Form/meta.d.ts +1 -1
  315. package/dist/render/lib/{puck → document}/blocks/service/Form/render.d.ts +1 -1
  316. package/dist/render/lib/document/blocks/service/Form/render.js +1 -0
  317. package/dist/render/lib/{puck → document}/blocks/service/LegalLineBlock/meta.d.ts +1 -1
  318. package/dist/render/lib/{puck → document}/blocks/service/LegalLineBlock/render.d.ts +1 -1
  319. package/dist/render/lib/document/blocks/service/RateTable/meta.d.ts +3 -0
  320. package/dist/render/lib/document/blocks/service/RateTable/meta.js +1 -0
  321. package/dist/render/lib/document/blocks/service/RateTable/render.d.ts +4 -0
  322. package/dist/render/lib/document/blocks/service/RateTable/render.js +1 -0
  323. package/dist/render/lib/{puck → document}/blocks/service/RatingBlock/meta.d.ts +1 -1
  324. package/dist/render/lib/{puck → document}/blocks/service/RatingBlock/render.d.ts +1 -1
  325. package/dist/render/lib/document/blocks/service/RatingBlock/render.js +1 -0
  326. package/dist/render/lib/{puck → document}/blocks/service/ReviewForm/meta.d.ts +1 -1
  327. package/dist/render/lib/{puck → document}/blocks/service/ReviewForm/render.d.ts +1 -1
  328. package/dist/render/lib/document/blocks/service/ReviewForm/render.js +1 -0
  329. package/dist/render/lib/{puck → document}/blocks/service/Reviews/meta.d.ts +1 -1
  330. package/dist/render/lib/{puck → document}/blocks/service/Reviews/render.d.ts +1 -1
  331. package/dist/render/lib/document/blocks/service/Reviews/render.js +1 -0
  332. package/dist/render/lib/{puck → document}/blocks/service/SiteFooter/meta.d.ts +1 -1
  333. package/dist/render/lib/{puck → document}/blocks/service/SiteFooter/render.d.ts +1 -1
  334. package/dist/render/lib/document/blocks/service/SiteFooter/render.js +1 -0
  335. package/dist/render/lib/{puck → document}/blocks/service/SiteHeader/meta.d.ts +1 -1
  336. package/dist/render/lib/{puck → document}/blocks/service/SiteHeader/render.d.ts +1 -1
  337. package/dist/render/lib/document/blocks/service/SiteHeader/render.js +1 -0
  338. package/dist/render/lib/{puck → document}/blocks/service/SubmitBox/meta.d.ts +1 -1
  339. package/dist/render/lib/{puck → document}/blocks/service/SubmitBox/render.d.ts +1 -1
  340. package/dist/render/lib/document/blocks/service/SubmitBox/render.js +1 -0
  341. package/dist/render/lib/{puck → document}/blocks/service/SubmitBuild/meta.d.ts +1 -1
  342. package/dist/render/lib/{puck → document}/blocks/service/SubmitBuild/render.d.ts +1 -1
  343. package/dist/render/lib/document/blocks/service/SubmitBuild/render.js +1 -0
  344. package/dist/render/lib/{puck → document}/blocks/service/Subscribe/meta.d.ts +1 -1
  345. package/dist/render/lib/{puck → document}/blocks/service/Subscribe/render.d.ts +1 -1
  346. package/dist/render/lib/document/blocks/service/Subscribe/render.js +1 -0
  347. package/dist/render/lib/{puck → document}/blocks/service/SubscribeBlogs/meta.d.ts +1 -1
  348. package/dist/render/lib/{puck → document}/blocks/service/SubscribeBlogs/render.d.ts +1 -1
  349. package/dist/render/lib/document/blocks/service/SubscribeBlogs/render.js +1 -0
  350. package/dist/render/lib/{puck → document}/blocks/service/metas.d.ts +2 -1
  351. package/dist/render/lib/document/blocks/service/metas.js +1 -0
  352. package/dist/render/lib/{puck → document}/blocks/service/renders.d.ts +2 -1
  353. package/dist/render/lib/document/blocks/service/renders.js +1 -0
  354. package/dist/render/lib/{puck → document}/blocks/service/subscribe.d.ts +1 -1
  355. package/dist/render/lib/document/blocks/service/subscribe.js +1 -0
  356. package/dist/render/lib/{puck → document}/blocks/text-part-shapes.json +18 -0
  357. package/dist/render/lib/document/footer-page-blocks.js +1 -0
  358. package/dist/render/lib/{puck → document}/lazy-draws.d.ts +2 -2
  359. package/dist/render/lib/document/lazy-draws.js +1 -0
  360. package/dist/render/lib/document/preview-pick.js +1 -0
  361. package/dist/render/lib/document/render-client.js +1 -0
  362. package/dist/render/lib/document/render-config.js +1 -0
  363. package/dist/render/lib/{puck → document}/slot-seeds.d.ts +2 -2
  364. package/dist/render/lib/document/slot-seeds.js +1 -0
  365. package/dist/render/lib/{puck → document}/storefront-root.d.ts +1 -1
  366. package/dist/render/lib/document/storefront-root.js +1 -0
  367. package/dist/render/lib/document/subscribe-content-type.js +1 -0
  368. package/dist/render/lib/popup/text-kind-style.js +1 -1
  369. package/dist/render/lib/sections/rate-table.d.ts +16 -0
  370. package/dist/render/lib/sections/rate-table.js +1 -0
  371. package/dist/render/lib/submit/text-kinds.js +1 -1
  372. package/dist/render/lib/wheels/catalog-default-layout.d.ts +1 -1
  373. package/dist/render/lib/wheels/catalog-default-layout.js +1 -1
  374. package/dist/words.d.ts +17 -5
  375. package/dist/words.js +4 -4
  376. package/package.json +4 -4
  377. package/dist/chunks/chunk-TAGGXC3A.js +0 -250
  378. package/dist/editor/lib/puck/blocks/commerce/AccountBlock/fields.js +0 -1
  379. package/dist/editor/lib/puck/blocks/commerce/AlloyWheelsListing/fields.js +0 -1
  380. package/dist/editor/lib/puck/blocks/commerce/BundleOffer/fields.js +0 -1
  381. package/dist/editor/lib/puck/blocks/commerce/CartBlock/fields.js +0 -1
  382. package/dist/editor/lib/puck/blocks/commerce/CatalogFilterBar/fields.js +0 -1
  383. package/dist/editor/lib/puck/blocks/commerce/CheckoutCTA/fields.js +0 -1
  384. package/dist/editor/lib/puck/blocks/commerce/CollectionCard/fields.js +0 -1
  385. package/dist/editor/lib/puck/blocks/commerce/Collections/fields.js +0 -1
  386. package/dist/editor/lib/puck/blocks/commerce/CompatibleTyres/fields.js +0 -1
  387. package/dist/editor/lib/puck/blocks/commerce/CountrySwitchBlock/fields.js +0 -1
  388. package/dist/editor/lib/puck/blocks/commerce/DeliveryOptions/fields.js +0 -1
  389. package/dist/editor/lib/puck/blocks/commerce/DetailRows/fields.js +0 -1
  390. package/dist/editor/lib/puck/blocks/commerce/EuTyreLabel/fields.js +0 -1
  391. package/dist/editor/lib/puck/blocks/commerce/FitmentFinder/fields.js +0 -1
  392. package/dist/editor/lib/puck/blocks/commerce/FitmentTable/fields.js +0 -1
  393. package/dist/editor/lib/puck/blocks/commerce/Gallery/fields.js +0 -1
  394. package/dist/editor/lib/puck/blocks/commerce/GalleryB/fields.js +0 -1
  395. package/dist/editor/lib/puck/blocks/commerce/GalleryItem/fields.js +0 -1
  396. package/dist/editor/lib/puck/blocks/commerce/ProductGallery/fields.d.ts +0 -6
  397. package/dist/editor/lib/puck/blocks/commerce/ProductGallery/fields.js +0 -1
  398. package/dist/editor/lib/puck/blocks/commerce/ProductGrid/fields.js +0 -1
  399. package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.js +0 -1
  400. package/dist/editor/lib/puck/blocks/commerce/ProductRef/fields.js +0 -1
  401. package/dist/editor/lib/puck/blocks/commerce/RelatedProducts/fields.js +0 -1
  402. package/dist/editor/lib/puck/blocks/commerce/SearchBlock/fields.js +0 -1
  403. package/dist/editor/lib/puck/blocks/commerce/SpecTable/fields.js +0 -1
  404. package/dist/editor/lib/puck/blocks/commerce/TyreFitment/fields.js +0 -1
  405. package/dist/editor/lib/puck/blocks/commerce/TyreSizes/fields.js +0 -1
  406. package/dist/editor/lib/puck/blocks/commerce/controls.js +0 -1
  407. package/dist/editor/lib/puck/blocks/commerce/index.js +0 -1
  408. package/dist/editor/lib/puck/blocks/commerce/page-rules.js +0 -1
  409. package/dist/editor/lib/puck/blocks/service/AppointmentBooking/fields.js +0 -1
  410. package/dist/editor/lib/puck/blocks/service/BookingBox/fields.js +0 -1
  411. package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +0 -1
  412. package/dist/editor/lib/puck/blocks/service/Events/fields.js +0 -1
  413. package/dist/editor/lib/puck/blocks/service/Footer/fields.js +0 -1
  414. package/dist/editor/lib/puck/blocks/service/FooterDivider/fields.js +0 -1
  415. package/dist/editor/lib/puck/blocks/service/FooterEmailSignup/fields.js +0 -1
  416. package/dist/editor/lib/puck/blocks/service/FooterGroup/fields.js +0 -1
  417. package/dist/editor/lib/puck/blocks/service/FooterLogo/fields.js +0 -1
  418. package/dist/editor/lib/puck/blocks/service/FooterMenu/fields.js +0 -1
  419. package/dist/editor/lib/puck/blocks/service/FooterSocial/fields.js +0 -1
  420. package/dist/editor/lib/puck/blocks/service/FooterText/fields.js +0 -1
  421. package/dist/editor/lib/puck/blocks/service/Form/fields.js +0 -1
  422. package/dist/editor/lib/puck/blocks/service/LegalLineBlock/fields.js +0 -1
  423. package/dist/editor/lib/puck/blocks/service/RatingBlock/fields.js +0 -1
  424. package/dist/editor/lib/puck/blocks/service/ReviewForm/fields.js +0 -1
  425. package/dist/editor/lib/puck/blocks/service/Reviews/fields.js +0 -1
  426. package/dist/editor/lib/puck/blocks/service/SiteFooter/fields.js +0 -1
  427. package/dist/editor/lib/puck/blocks/service/SiteHeader/fields.js +0 -1
  428. package/dist/editor/lib/puck/blocks/service/SubmitBox/fields.js +0 -1
  429. package/dist/editor/lib/puck/blocks/service/SubmitBuild/fields.js +0 -1
  430. package/dist/editor/lib/puck/blocks/service/Subscribe/fields.js +0 -1
  431. package/dist/editor/lib/puck/blocks/service/SubscribeBlogs/fields.js +0 -1
  432. package/dist/editor/lib/puck/blocks/service/index.d.ts +0 -1
  433. package/dist/editor/lib/puck/blocks/service/index.js +0 -1
  434. package/dist/editor/lib/puck/box-header.js +0 -1
  435. package/dist/editor/lib/puck/config.d.ts +0 -69
  436. package/dist/editor/lib/puck/config.js +0 -1
  437. package/dist/render/lib/puck/blocks/commerce/AlloyWheelsListing/render.js +0 -1
  438. package/dist/render/lib/puck/blocks/commerce/BundleOffer/render.js +0 -1
  439. package/dist/render/lib/puck/blocks/commerce/CartBlock/render.js +0 -1
  440. package/dist/render/lib/puck/blocks/commerce/CatalogFilterBar/render.js +0 -1
  441. package/dist/render/lib/puck/blocks/commerce/CheckoutCTA/render.js +0 -1
  442. package/dist/render/lib/puck/blocks/commerce/CollectionCard/render.js +0 -1
  443. package/dist/render/lib/puck/blocks/commerce/Collections/render.js +0 -1
  444. package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/meta.js +0 -1
  445. package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/render.js +0 -1
  446. package/dist/render/lib/puck/blocks/commerce/DeliveryOptions/render.js +0 -1
  447. package/dist/render/lib/puck/blocks/commerce/DetailRows/render.js +0 -1
  448. package/dist/render/lib/puck/blocks/commerce/EuTyreLabel/render.js +0 -1
  449. package/dist/render/lib/puck/blocks/commerce/FitmentFinder/meta.js +0 -1
  450. package/dist/render/lib/puck/blocks/commerce/FitmentFinder/render.js +0 -1
  451. package/dist/render/lib/puck/blocks/commerce/FitmentTable/meta.js +0 -1
  452. package/dist/render/lib/puck/blocks/commerce/FitmentTable/render.js +0 -1
  453. package/dist/render/lib/puck/blocks/commerce/Gallery/meta.js +0 -1
  454. package/dist/render/lib/puck/blocks/commerce/Gallery/render.js +0 -1
  455. package/dist/render/lib/puck/blocks/commerce/GalleryB/meta.js +0 -1
  456. package/dist/render/lib/puck/blocks/commerce/GalleryB/render.js +0 -1
  457. package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +0 -1
  458. package/dist/render/lib/puck/blocks/commerce/ProductGrid/render.js +0 -1
  459. package/dist/render/lib/puck/blocks/commerce/ProductHero/render.js +0 -1
  460. package/dist/render/lib/puck/blocks/commerce/RelatedProducts/render.js +0 -1
  461. package/dist/render/lib/puck/blocks/commerce/SearchBlock/render.js +0 -1
  462. package/dist/render/lib/puck/blocks/commerce/SpecTable/meta.js +0 -1
  463. package/dist/render/lib/puck/blocks/commerce/SpecTable/render.js +0 -1
  464. package/dist/render/lib/puck/blocks/commerce/TyreFitment/render.js +0 -1
  465. package/dist/render/lib/puck/blocks/commerce/TyreSizes/render.js +0 -1
  466. package/dist/render/lib/puck/blocks/commerce/placeholders.js +0 -1
  467. package/dist/render/lib/puck/blocks/service/AppointmentBooking/render.js +0 -1
  468. package/dist/render/lib/puck/blocks/service/BookingBox/render.js +0 -1
  469. package/dist/render/lib/puck/blocks/service/ContactRouting/render.js +0 -1
  470. package/dist/render/lib/puck/blocks/service/Events/meta.js +0 -1
  471. package/dist/render/lib/puck/blocks/service/Events/render.js +0 -1
  472. package/dist/render/lib/puck/blocks/service/FooterEmailSignup/render.js +0 -1
  473. package/dist/render/lib/puck/blocks/service/FooterText/render.js +0 -1
  474. package/dist/render/lib/puck/blocks/service/Form/render.js +0 -1
  475. package/dist/render/lib/puck/blocks/service/RatingBlock/render.js +0 -1
  476. package/dist/render/lib/puck/blocks/service/ReviewForm/render.js +0 -1
  477. package/dist/render/lib/puck/blocks/service/Reviews/render.js +0 -1
  478. package/dist/render/lib/puck/blocks/service/SiteFooter/render.js +0 -1
  479. package/dist/render/lib/puck/blocks/service/SiteHeader/render.js +0 -1
  480. package/dist/render/lib/puck/blocks/service/SubmitBox/render.js +0 -1
  481. package/dist/render/lib/puck/blocks/service/SubmitBuild/render.js +0 -1
  482. package/dist/render/lib/puck/blocks/service/Subscribe/render.js +0 -1
  483. package/dist/render/lib/puck/blocks/service/SubscribeBlogs/render.js +0 -1
  484. package/dist/render/lib/puck/blocks/service/metas.js +0 -1
  485. package/dist/render/lib/puck/blocks/service/renders.js +0 -1
  486. package/dist/render/lib/puck/blocks/service/subscribe.js +0 -1
  487. package/dist/render/lib/puck/footer-page-blocks.js +0 -1
  488. package/dist/render/lib/puck/lazy-draws.js +0 -1
  489. package/dist/render/lib/puck/preview-pick.js +0 -1
  490. package/dist/render/lib/puck/render-client.js +0 -1
  491. package/dist/render/lib/puck/render-config.js +0 -1
  492. package/dist/render/lib/puck/slot-seeds.js +0 -1
  493. package/dist/render/lib/puck/storefront-root.js +0 -1
  494. package/dist/render/lib/puck/subscribe-content-type.js +0 -1
  495. /package/dist/chunks/{chunk-TAGGXC3A.js.LEGAL.txt → chunk-CFYEYTU6.js.LEGAL.txt} +0 -0
  496. /package/dist/editor/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/fields.js +0 -0
  497. /package/dist/editor/lib/{puck → document}/blocks/commerce/Header/fields.js +0 -0
  498. /package/dist/editor/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/fields.js +0 -0
  499. /package/dist/editor/lib/{puck → document}/blocks/commerce/index.d.ts +0 -0
  500. /package/dist/editor/lib/{puck → document}/blocks/commerce/shared-fields.d.ts +0 -0
  501. /package/dist/editor/lib/{puck → document}/blocks/commerce/shared-fields.js +0 -0
  502. /package/dist/editor/lib/{puck → document}/blocks/service/controls.js +0 -0
  503. /package/dist/editor/lib/{puck → document}/blocks/service/placeholders.d.ts +0 -0
  504. /package/dist/editor/lib/{puck → document}/blocks/service/placeholders.js +0 -0
  505. /package/dist/editor/lib/{puck → document}/box-header-for-site.js +0 -0
  506. /package/dist/render/lib/{puck → document}/blocks/commerce/AccountBlock/meta.js +0 -0
  507. /package/dist/render/lib/{puck → document}/blocks/commerce/AccountBlock/render.js +0 -0
  508. /package/dist/render/lib/{puck → document}/blocks/commerce/AlloyWheelsListing/meta.js +0 -0
  509. /package/dist/render/lib/{puck → document}/blocks/commerce/BundleOffer/meta.js +0 -0
  510. /package/dist/render/lib/{puck → document}/blocks/commerce/CartBlock/meta.js +0 -0
  511. /package/dist/render/lib/{puck → document}/blocks/commerce/CatalogFilterBar/meta.js +0 -0
  512. /package/dist/render/lib/{puck → document}/blocks/commerce/CheckoutCTA/meta.js +0 -0
  513. /package/dist/render/lib/{puck → document}/blocks/commerce/CollectionCard/meta.js +0 -0
  514. /package/dist/render/lib/{puck → document}/blocks/commerce/Collections/meta.js +0 -0
  515. /package/dist/render/lib/{puck → document}/blocks/commerce/CountrySwitchBlock/meta.js +0 -0
  516. /package/dist/render/lib/{puck → document}/blocks/commerce/DeliveryOptions/meta.js +0 -0
  517. /package/dist/render/lib/{puck → document}/blocks/commerce/DetailRows/meta.js +0 -0
  518. /package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabel/meta.js +0 -0
  519. /package/dist/render/lib/{puck → document}/blocks/commerce/EuTyreLabelBlock/meta.js +0 -0
  520. /package/dist/render/lib/{puck → document}/blocks/commerce/GalleryItem/meta.js +0 -0
  521. /package/dist/render/lib/{puck → document}/blocks/commerce/Header/meta.js +0 -0
  522. /package/dist/render/lib/{puck → document}/blocks/commerce/Header/render.js +0 -0
  523. /package/dist/render/lib/{puck → document}/blocks/commerce/ProductGallery/meta.js +0 -0
  524. /package/dist/render/lib/{puck → document}/blocks/commerce/ProductGrid/meta.js +0 -0
  525. /package/dist/render/lib/{puck → document}/blocks/commerce/ProductHero/meta.js +0 -0
  526. /package/dist/render/lib/{puck → document}/blocks/commerce/ProductRef/meta.js +0 -0
  527. /package/dist/render/lib/{puck → document}/blocks/commerce/ProductRef/render.js +0 -0
  528. /package/dist/render/lib/{puck → document}/blocks/commerce/RelatedProducts/meta.js +0 -0
  529. /package/dist/render/lib/{puck → document}/blocks/commerce/SearchBlock/meta.js +0 -0
  530. /package/dist/render/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/meta.js +0 -0
  531. /package/dist/render/lib/{puck → document}/blocks/commerce/ThemeSwitchBlock/render.js +0 -0
  532. /package/dist/render/lib/{puck → document}/blocks/commerce/TyreFitment/meta.js +0 -0
  533. /package/dist/render/lib/{puck → document}/blocks/commerce/TyreSizes/meta.js +0 -0
  534. /package/dist/render/lib/{puck → document}/blocks/commerce/metas.js +0 -0
  535. /package/dist/render/lib/{puck → document}/blocks/commerce/placeholders.d.ts +0 -0
  536. /package/dist/render/lib/{puck → document}/blocks/commerce/renders.js +0 -0
  537. /package/dist/render/lib/{puck → document}/blocks/service/AppointmentBooking/meta.js +0 -0
  538. /package/dist/render/lib/{puck → document}/blocks/service/BookingBox/meta.js +0 -0
  539. /package/dist/render/lib/{puck → document}/blocks/service/ContactRouting/meta.js +0 -0
  540. /package/dist/render/lib/{puck → document}/blocks/service/Footer/meta.js +0 -0
  541. /package/dist/render/lib/{puck → document}/blocks/service/FooterDivider/meta.js +0 -0
  542. /package/dist/render/lib/{puck → document}/blocks/service/FooterDivider/render.js +0 -0
  543. /package/dist/render/lib/{puck → document}/blocks/service/FooterEmailSignup/meta.js +0 -0
  544. /package/dist/render/lib/{puck → document}/blocks/service/FooterGroup/meta.js +0 -0
  545. /package/dist/render/lib/{puck → document}/blocks/service/FooterGroup/render.js +0 -0
  546. /package/dist/render/lib/{puck → document}/blocks/service/FooterLogo/meta.js +0 -0
  547. /package/dist/render/lib/{puck → document}/blocks/service/FooterMenu/meta.js +0 -0
  548. /package/dist/render/lib/{puck → document}/blocks/service/FooterSocial/meta.js +0 -0
  549. /package/dist/render/lib/{puck → document}/blocks/service/FooterText/meta.js +0 -0
  550. /package/dist/render/lib/{puck → document}/blocks/service/Form/meta.js +0 -0
  551. /package/dist/render/lib/{puck → document}/blocks/service/LegalLineBlock/meta.js +0 -0
  552. /package/dist/render/lib/{puck → document}/blocks/service/LegalLineBlock/render.js +0 -0
  553. /package/dist/render/lib/{puck → document}/blocks/service/RatingBlock/meta.js +0 -0
  554. /package/dist/render/lib/{puck → document}/blocks/service/ReviewForm/meta.js +0 -0
  555. /package/dist/render/lib/{puck → document}/blocks/service/Reviews/meta.js +0 -0
  556. /package/dist/render/lib/{puck → document}/blocks/service/SiteFooter/meta.js +0 -0
  557. /package/dist/render/lib/{puck → document}/blocks/service/SiteHeader/meta.js +0 -0
  558. /package/dist/render/lib/{puck → document}/blocks/service/SubmitBox/meta.js +0 -0
  559. /package/dist/render/lib/{puck → document}/blocks/service/SubmitBuild/meta.js +0 -0
  560. /package/dist/render/lib/{puck → document}/blocks/service/Subscribe/meta.js +0 -0
  561. /package/dist/render/lib/{puck → document}/blocks/service/SubscribeBlogs/meta.js +0 -0
  562. /package/dist/render/lib/{puck → document}/current-product.d.ts +0 -0
  563. /package/dist/render/lib/{puck → document}/current-product.js +0 -0
  564. /package/dist/render/lib/{puck → document}/current-record.d.ts +0 -0
  565. /package/dist/render/lib/{puck → document}/current-record.js +0 -0
  566. /package/dist/render/lib/{puck → document}/fitment-table-dynamic.d.ts +0 -0
  567. /package/dist/render/lib/{puck → document}/fitment-table-dynamic.js +0 -0
  568. /package/dist/render/lib/{puck → document}/footer-page-blocks.d.ts +0 -0
  569. /package/dist/render/lib/{puck → document}/preview-pick.d.ts +0 -0
  570. /package/dist/render/lib/{puck → document}/preview-product.d.ts +0 -0
  571. /package/dist/render/lib/{puck → document}/preview-product.js +0 -0
  572. /package/dist/render/lib/{puck → document}/render-client.d.ts +0 -0
  573. /package/dist/render/lib/{puck → document}/render-config.d.ts +0 -0
  574. /package/dist/render/lib/{puck → document}/subscribe-content-type.d.ts +0 -0
  575. /package/dist/render/lib/{puck → document}/template-product-kind.d.ts +0 -0
  576. /package/dist/render/lib/{puck → document}/template-product-kind.js +0 -0
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as x,Fragment as He}from"react/jsx-runtime";import{GRID_CARD_SHOW as k}from"../lib/sections/card-show-defaults.js";import{useEffect as B,useId as Oe,useMemo as d,useState as ke}from"react";import{CARD_IMAGE_BG_OFF as Be,resolveCardImageBackground as De}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as Ge}from"efficient-web-builder/format/lib/content/card-image-shape";import{containerGapProps as Ue,GAP_LENGTH_VAR as je,GAP_ZONE_CLASS as We}from"efficient-web-builder/format/lib/content/container-gap";import Ke from"next/link";import Xe from"./ProductCard.js";import{CARD_ROWS_GRID_CLASS as Ze,cardRowsGridStyle as Ve}from"./WheelCardFrame.js";import{ProductCardChromeProvider as qe}from"./ProductCardChrome.js";import{gridClassImageSizes as Ye}from"../lib/sections/card-image-sizes.js";import{fillRowCss as Je}from"../lib/sections/fill-row.js";import{noHoleBands as ee,noHoleCss as re,showsASetCard as te}from"../lib/sections/grid-no-hole.js";import{setIsWide as Qe,summarySetBuild as er}from"../lib/wheels/set-mode.js";import{answersForKind as se}from"../lib/content/field-usage.js";import{wheelCardEyebrowShows as rr}from"./ProductCardEyebrow.js";import tr from"./NoCurrencyNote.js";import{DEFAULT_CARD_OUTLINE as sr,cardIndexCss as nr,parseCardIndexFormat as or}from"efficient-web-builder/format/lib/sections/product-card-style";import{DEFAULT_COVER_INDEX as ar}from"../lib/wheels/cover-rendering.js";import{SITE_WIDTH_CAP as ir,centredCap as lr}from"efficient-web-builder/format/lib/content/page-width";import{ProductCatalogProvider as mr,SectionWheelsProvider as dr}from"./ProductRef.js";import{useCurrency as pr}from"./CurrencyContext.js";import{COLLECTION_ATTR as cr,useCatalogFilter as gr}from"./catalog/CatalogFilterContext.js";import{renderGold as D,renderHeadline as ur}from"efficient-web-builder/render/components/goldPhrases";import{applyCatalogFilters as xr}from"../lib/wheels/catalog-filters.js";import{normalizeCatalogRows as hr}from"../lib/wheels/wheel-summary-casing.js";import fr from"./TyreSummaryCard.js";import{itemKind as G,plpItemsOfKinds as yr,plpKindNoun as Cr,resolvePlpKinds as ne}from"../lib/catalog/plp-item.js";import{rowsForGridSource as vr}from"../lib/wheels/grid-source.js";import{useUnifiedProductCatalog as br}from"./useProductCatalog.js";import{STICKY_UNDERHEADER_CLASS as wr}from"efficient-web-builder/render/lib/puck/header-clearance";import{finishFamiliesOf as Sr}from"../lib/wheels/finish-defaults.js";import{lugCountsOf as $r}from"../lib/wheels/lug-count.js";import{diametersOf as Mr}from"../lib/wheels/size-range.js";import{say as Nr}from"efficient-web-builder/format/lib/editor-words";import{DEFAULT_TITLE_SIZE as _r}from"../lib/sections/product-grid-title.js";const n={headingMediumUpTo800Xs:"max-[800px]:text-[length:var(--size-headingMedium,28px)]",headingMediumUpTo800Small:"max-[800px]:text-[length:var(--size-headingMedium,32px)]",headingMediumUpTo800Large:"max-[800px]:text-[length:var(--size-headingMedium,36px)]",headingMediumUpTo800Xl:"max-[800px]:text-[length:var(--size-headingMedium,40px)]",body:"text-[length:var(--size-body,13px)]",headingMedium1:"text-[length:var(--size-headingMedium,40px)]",headingMedium2:"text-[length:var(--size-headingMedium,48px)]",headingMedium3:"text-[length:var(--size-headingMedium,56px)]",headingMedium4:"text-[length:var(--size-headingMedium,64px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},oe={1:"grid-cols-1",2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",5:"grid-cols-5 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",6:"grid-cols-6 max-[1100px]:grid-cols-3 max-[800px]:grid-cols-1"},ae=[{value:"para",label:"Paragraph size — 13px",cls:`font-mono font-normal uppercase tracking-[0.22em] ${n.labelLarge}`},{value:"sm",label:"Small — 40px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium1} ${n.headingMediumUpTo800Xs}`},{value:"md",label:"Medium — 48px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium2} ${n.headingMediumUpTo800Small}`},{value:"lg",label:"Large — 56px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium3} ${n.headingMediumUpTo800Large}`},{value:"xl",label:"Extra large — 64px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium4} ${n.headingMediumUpTo800Xl}`}];function Er(h){return(ae.find(p=>p.value===h)??ae.find(p=>p.value===_r)).cls}function Tr({num:h,catalog:p,kinds:N,title:_,titleSize:ie,padTop:U,description:v,link:f,products:le,wheels:me,source:c,columns:de,limit:o,editing:y,contentCapped:pe=!1,imageBackground:ce,spinOnHover:ge,coverIndex:ue,indexBadge:xe,outline:he,showBadge:fe,fieldUsage:g,showCardPrice:ye,showCardFinishes:Ce,showCardSizes:ve,showCardBuy:be,showCardPage:we,cardImage:Se,gap:$e}){const E=d(()=>g?se(g,"alloy-wheel"):void 0,[g]),Me=d(()=>g?se(g,"tyre"):void 0,[g]),t=`pg-${Oe().replace(/:/g,"")}`,m=oe[Math.min(6,Math.max(1,de??4))]??oe[4],j=typeof o=="number"&&o>0,W=pe,K=br(y===!0&&!!c),i=d(()=>c?hr(vr(c,yr(K??p??[],ne(N)))):null,[p,K,c,N]),T=c?.process,u=!!T,{filters:b,reportCount:L,reportLugs:z,reportSizes:I,reportFinishes:P,vehicle:X}=gr(),{currency:A}=pr(),F=u&&!!b.process&&b.process!==T,r=d(()=>i?u?xr(i,b,A,X.fit):i:null,[i,u,b,A,X.fit]);B(()=>{if(u)return L(t,F?0:r?.length??0),()=>L(t,0)},[u,F,r,L,t]);const Ne=d(()=>{const s=(r??[]).filter(l=>G(l)!=="tyre");if(s.length===0)return!1;const a=s.some(l=>!!l.process);return s.some(l=>!!l.setWords)||rr({kind:!1,brand:!1,process:a},E??[])},[r,E]),w=d(()=>({lugs:$r(i??[]),sizes:Mr(i??[]),finishes:Sr(i??[])}),[i]);B(()=>(z(t,w.lugs),I(t,w.sizes),P(t,w.finishes),()=>{z(t,[]),I(t,[]),P(t,[])}),[w,z,I,P,t]);const C=Ue("ProductGrid",$e,"both"),Z=C.className.includes(We),R=`${t} grid${C.className} bg-[var(--catalog-grid-bg)] ${m}`,_e=Z?`${R} ${Ze}`:R,Ee=Z?{...C.style,...Ve(`var(${je})`)}:C.style,Te=r?r.length>0?e("div",{className:_e,style:Ee,children:r.map((s,a)=>G(s)==="tyre"?e(fr,{item:s,currency:A,editing:y,fieldUsage:Me},`tyre:${s.slug}-${a}`):e(Xe,{wheel:s,variant:"catalog"},`${s.slug}-${a}`))}):y?e("div",{className:"flex min-h-[320px] items-center justify-center rounded bg-surface-2 p-4 text-center",children:e("span",{className:`font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:Nr("No products in “{name}” yet",{name:c?.name??""})})}):null:e(le,{className:R,style:C.style,minEmptyHeight:320}),S=r?r.length:null,V=Cr(ne(N)),Le=h||_||v||f?x("div",{className:`${wr} sticky top-[var(--sf-header-h,88px)] z-30 mb-5 flex items-center justify-between gap-4 max-[800px]:flex-wrap max-[800px]:gap-y-2 border-b border-line bg-bg/95 py-3 backdrop-blur-md ${W?"":"-mx-[var(--sf-site-gutter,40px)] px-[var(--sf-site-gutter,40px)] max-[800px]:-mx-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]"}`,children:[x("div",{className:"flex min-w-0 items-end gap-6 max-[800px]:flex-col max-[800px]:items-stretch max-[800px]:gap-3",children:[h&&e("span",{className:`font-mono ${n.labelLarge} leading-none uppercase tracking-[0.22em] text-fg-dim`,children:D(h)}),_&&e("h2",{className:`${Er(ie)} leading-none text-fg max-[800px]:leading-[1] [&>span]:block`,children:ur(_,!1)})]}),(v||f||S!==null)&&x("div",{className:"flex items-center gap-5 max-[800px]:gap-3 min-[800px]:grow min-[800px]:justify-end",children:[v&&e("span",{className:`max-w-[340px] truncate font-display ${n.body} leading-[1.4] text-fg-dim max-[800px]:hidden min-[800px]:w-0 min-[800px]:grow min-[800px]:text-right`,children:D(v)}),f&&x(Ke,{href:f.href,className:`inline-flex items-center gap-2 whitespace-nowrap font-mono ${n.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:[D(f.text),e("span",{"aria-hidden":!0,children:"→"})]}),S!==null&&x("span",{className:`whitespace-nowrap font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:[S," ",S===1?V.one:V.many]})]})]}):null,ze=typeof U=="number"?U:120,q=or(xe),$=d(()=>{if(!r)return null;const s=r.map(a=>G(a)!=="tyre"&&Qe(er(a))?2:1);return te(s,o)?ee(m,s,o):null},[r,m,o]),[Ie,Pe]=ke("");B(()=>{if(r)return;const s=document.querySelector(`.${t}`);if(!s)return;const a=()=>{const l=[...s.children].map(Re=>Re.classList.contains("col-span-2")?2:1);Pe(te(l,o)?re(t,ee(m,l,o,!1),l.length):"")};a();const O=new MutationObserver(a);return O.observe(s,{childList:!0}),()=>O.disconnect()},[r,t,m,o]);const Ae=$?$[0].tracks:r?j?Math.min(r.length,o):r.length:void 0,M=$?re(t,$,r.length):Ie,Y=M?"":Je(t,m,{limit:o,cards:r?.length}),J=nr(t,q),Q=x(He,{children:[j&&!M&&e("style",{children:`.${t} > *:nth-child(n+${o+1}){display:none}`}),M&&e("style",{children:M}),Y&&e("style",{children:Y}),J&&e("style",{children:J}),Le,Te,e(tr,{editing:y})]});if(F)return null;const H=e("section",{...u?{[cr]:T}:{},className:"relative z-[2] bg-bg px-[var(--sf-site-gutter,40px)] pt-[var(--pg-pt)] pb-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:pt-[70px] max-[800px]:pb-[70px]",style:{"--pg-pt":`${ze}px`,...Ge(Se)},children:W?e("div",{style:lr(ir),children:Q}):Q}),Fe=i?H:y?e(mr,{children:H}):e(dr,{wheels:me,children:H});return e(qe,{imageSizes:Ye(m,Ae),imageBackgroundFill:De(ce,Be),spinOnHover:ge??!0,coverIndex:ue??ar,indexBadge:q,outline:he??sr,showBadge:fe??!0,fieldUsage:E,reserveEyebrow:Ne,showCardPrice:ye??!0,showCardFinishes:Ce??!0,showCardSizes:ve??k.showCardSizes,showCardBuy:be??k.showCardBuy,showCardPage:we??k.showCardPage,children:Fe})}export{ae as TITLE_SIZES,Tr as default};
1
+ "use client";import{jsx as e,jsxs as x,Fragment as He}from"react/jsx-runtime";import{GRID_CARD_SHOW as k}from"../lib/sections/card-show-defaults.js";import{useEffect as B,useId as Oe,useMemo as d,useState as ke}from"react";import{CARD_IMAGE_BG_OFF as Be,resolveCardImageBackground as De}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as Ge}from"efficient-web-builder/format/lib/content/card-image-shape";import{containerGapProps as Ue,GAP_LENGTH_VAR as je,GAP_ZONE_CLASS as We}from"efficient-web-builder/format/lib/content/container-gap";import Ke from"next/link";import Xe from"./ProductCard.js";import{CARD_ROWS_GRID_CLASS as Ze,cardRowsGridStyle as Ve}from"./WheelCardFrame.js";import{ProductCardChromeProvider as qe}from"./ProductCardChrome.js";import{gridClassImageSizes as Ye}from"../lib/sections/card-image-sizes.js";import{fillRowCss as Je}from"../lib/sections/fill-row.js";import{noHoleBands as ee,noHoleCss as re,showsASetCard as te}from"../lib/sections/grid-no-hole.js";import{setIsWide as Qe,summarySetBuild as er}from"../lib/wheels/set-mode.js";import{answersForKind as se}from"../lib/content/field-usage.js";import{wheelCardEyebrowShows as rr}from"./ProductCardEyebrow.js";import tr from"./NoCurrencyNote.js";import{DEFAULT_CARD_OUTLINE as sr,cardIndexCss as nr,parseCardIndexFormat as or}from"efficient-web-builder/format/lib/sections/product-card-style";import{DEFAULT_COVER_INDEX as ar}from"../lib/wheels/cover-rendering.js";import{SITE_WIDTH_CAP as ir,centredCap as lr}from"efficient-web-builder/format/lib/content/page-width";import{ProductCatalogProvider as mr,SectionWheelsProvider as dr}from"./ProductRef.js";import{useCurrency as pr}from"./CurrencyContext.js";import{COLLECTION_ATTR as cr,useCatalogFilter as gr}from"./catalog/CatalogFilterContext.js";import{renderGold as D,renderHeadline as ur}from"efficient-web-builder/render/components/goldPhrases";import{applyCatalogFilters as xr}from"../lib/wheels/catalog-filters.js";import{normalizeCatalogRows as hr}from"../lib/wheels/wheel-summary-casing.js";import fr from"./TyreSummaryCard.js";import{itemKind as G,plpItemsOfKinds as yr,plpKindNoun as Cr,resolvePlpKinds as ne}from"../lib/catalog/plp-item.js";import{rowsForGridSource as vr}from"../lib/wheels/grid-source.js";import{useUnifiedProductCatalog as br}from"./useProductCatalog.js";import{STICKY_UNDERHEADER_CLASS as wr}from"efficient-web-builder/render/lib/document/header-clearance";import{finishFamiliesOf as Sr}from"../lib/wheels/finish-defaults.js";import{lugCountsOf as $r}from"../lib/wheels/lug-count.js";import{diametersOf as Mr}from"../lib/wheels/size-range.js";import{say as Nr}from"efficient-web-builder/format/lib/editor-words";import{DEFAULT_TITLE_SIZE as _r}from"../lib/sections/product-grid-title.js";const n={headingMediumUpTo800Xs:"max-[800px]:text-[length:var(--size-headingMedium,28px)]",headingMediumUpTo800Small:"max-[800px]:text-[length:var(--size-headingMedium,32px)]",headingMediumUpTo800Large:"max-[800px]:text-[length:var(--size-headingMedium,36px)]",headingMediumUpTo800Xl:"max-[800px]:text-[length:var(--size-headingMedium,40px)]",body:"text-[length:var(--size-body,13px)]",headingMedium1:"text-[length:var(--size-headingMedium,40px)]",headingMedium2:"text-[length:var(--size-headingMedium,48px)]",headingMedium3:"text-[length:var(--size-headingMedium,56px)]",headingMedium4:"text-[length:var(--size-headingMedium,64px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},oe={1:"grid-cols-1",2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",5:"grid-cols-5 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",6:"grid-cols-6 max-[1100px]:grid-cols-3 max-[800px]:grid-cols-1"},ae=[{value:"para",label:"Paragraph size — 13px",cls:`font-mono font-normal uppercase tracking-[0.22em] ${n.labelLarge}`},{value:"sm",label:"Small — 40px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium1} ${n.headingMediumUpTo800Xs}`},{value:"md",label:"Medium — 48px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium2} ${n.headingMediumUpTo800Small}`},{value:"lg",label:"Large — 56px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium3} ${n.headingMediumUpTo800Large}`},{value:"xl",label:"Extra large — 64px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium4} ${n.headingMediumUpTo800Xl}`}];function Er(h){return(ae.find(p=>p.value===h)??ae.find(p=>p.value===_r)).cls}function Tr({num:h,catalog:p,kinds:N,title:_,titleSize:ie,padTop:U,description:v,link:f,products:le,wheels:me,source:c,columns:de,limit:o,editing:y,contentCapped:pe=!1,imageBackground:ce,spinOnHover:ge,coverIndex:ue,indexBadge:xe,outline:he,showBadge:fe,fieldUsage:g,showCardPrice:ye,showCardFinishes:Ce,showCardSizes:ve,showCardBuy:be,showCardPage:we,cardImage:Se,gap:$e}){const E=d(()=>g?se(g,"alloy-wheel"):void 0,[g]),Me=d(()=>g?se(g,"tyre"):void 0,[g]),t=`pg-${Oe().replace(/:/g,"")}`,m=oe[Math.min(6,Math.max(1,de??4))]??oe[4],j=typeof o=="number"&&o>0,W=pe,K=br(y===!0&&!!c),i=d(()=>c?hr(vr(c,yr(K??p??[],ne(N)))):null,[p,K,c,N]),T=c?.process,u=!!T,{filters:b,reportCount:L,reportLugs:z,reportSizes:I,reportFinishes:P,vehicle:X}=gr(),{currency:A}=pr(),F=u&&!!b.process&&b.process!==T,r=d(()=>i?u?xr(i,b,A,X.fit):i:null,[i,u,b,A,X.fit]);B(()=>{if(u)return L(t,F?0:r?.length??0),()=>L(t,0)},[u,F,r,L,t]);const Ne=d(()=>{const s=(r??[]).filter(l=>G(l)!=="tyre");if(s.length===0)return!1;const a=s.some(l=>!!l.process);return s.some(l=>!!l.setWords)||rr({kind:!1,brand:!1,process:a},E??[])},[r,E]),w=d(()=>({lugs:$r(i??[]),sizes:Mr(i??[]),finishes:Sr(i??[])}),[i]);B(()=>(z(t,w.lugs),I(t,w.sizes),P(t,w.finishes),()=>{z(t,[]),I(t,[]),P(t,[])}),[w,z,I,P,t]);const C=Ue("ProductGrid",$e,"both"),Z=C.className.includes(We),R=`${t} grid${C.className} bg-[var(--catalog-grid-bg)] ${m}`,_e=Z?`${R} ${Ze}`:R,Ee=Z?{...C.style,...Ve(`var(${je})`)}:C.style,Te=r?r.length>0?e("div",{className:_e,style:Ee,children:r.map((s,a)=>G(s)==="tyre"?e(fr,{item:s,currency:A,editing:y,fieldUsage:Me},`tyre:${s.slug}-${a}`):e(Xe,{wheel:s,variant:"catalog"},`${s.slug}-${a}`))}):y?e("div",{className:"flex min-h-[320px] items-center justify-center rounded bg-surface-2 p-4 text-center",children:e("span",{className:`font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:Nr("No products in “{name}” yet",{name:c?.name??""})})}):null:e(le,{className:R,style:C.style,minEmptyHeight:320}),S=r?r.length:null,V=Cr(ne(N)),Le=h||_||v||f?x("div",{className:`${wr} sticky top-[var(--sf-header-h,88px)] z-30 mb-5 flex items-center justify-between gap-4 max-[800px]:flex-wrap max-[800px]:gap-y-2 border-b border-line bg-bg/95 py-3 backdrop-blur-md ${W?"":"-mx-[var(--sf-site-gutter,40px)] px-[var(--sf-site-gutter,40px)] max-[800px]:-mx-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]"}`,children:[x("div",{className:"flex min-w-0 items-end gap-6 max-[800px]:flex-col max-[800px]:items-stretch max-[800px]:gap-3",children:[h&&e("span",{className:`font-mono ${n.labelLarge} leading-none uppercase tracking-[0.22em] text-fg-dim`,children:D(h)}),_&&e("h2",{className:`${Er(ie)} leading-none text-fg max-[800px]:leading-[1] [&>span]:block`,children:ur(_,!1)})]}),(v||f||S!==null)&&x("div",{className:"flex items-center gap-5 max-[800px]:gap-3 min-[800px]:grow min-[800px]:justify-end",children:[v&&e("span",{className:`max-w-[340px] truncate font-display ${n.body} leading-[1.4] text-fg-dim max-[800px]:hidden min-[800px]:w-0 min-[800px]:grow min-[800px]:text-right`,children:D(v)}),f&&x(Ke,{href:f.href,className:`inline-flex items-center gap-2 whitespace-nowrap font-mono ${n.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:[D(f.text),e("span",{"aria-hidden":!0,children:"→"})]}),S!==null&&x("span",{className:`whitespace-nowrap font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:[S," ",S===1?V.one:V.many]})]})]}):null,ze=typeof U=="number"?U:120,q=or(xe),$=d(()=>{if(!r)return null;const s=r.map(a=>G(a)!=="tyre"&&Qe(er(a))?2:1);return te(s,o)?ee(m,s,o):null},[r,m,o]),[Ie,Pe]=ke("");B(()=>{if(r)return;const s=document.querySelector(`.${t}`);if(!s)return;const a=()=>{const l=[...s.children].map(Re=>Re.classList.contains("col-span-2")?2:1);Pe(te(l,o)?re(t,ee(m,l,o,!1),l.length):"")};a();const O=new MutationObserver(a);return O.observe(s,{childList:!0}),()=>O.disconnect()},[r,t,m,o]);const Ae=$?$[0].tracks:r?j?Math.min(r.length,o):r.length:void 0,M=$?re(t,$,r.length):Ie,Y=M?"":Je(t,m,{limit:o,cards:r?.length}),J=nr(t,q),Q=x(He,{children:[j&&!M&&e("style",{children:`.${t} > *:nth-child(n+${o+1}){display:none}`}),M&&e("style",{children:M}),Y&&e("style",{children:Y}),J&&e("style",{children:J}),Le,Te,e(tr,{editing:y})]});if(F)return null;const H=e("section",{...u?{[cr]:T}:{},className:"relative z-[2] bg-bg px-[var(--sf-site-gutter,40px)] pt-[var(--pg-pt)] pb-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:pt-[70px] max-[800px]:pb-[70px]",style:{"--pg-pt":`${ze}px`,...Ge(Se)},children:W?e("div",{style:lr(ir),children:Q}):Q}),Fe=i?H:y?e(mr,{children:H}):e(dr,{wheels:me,children:H});return e(qe,{imageSizes:Ye(m,Ae),imageBackgroundFill:De(ce,Be),spinOnHover:ge??!0,coverIndex:ue??ar,indexBadge:q,outline:he??sr,showBadge:fe??!0,fieldUsage:E,reserveEyebrow:Ne,showCardPrice:ye??!0,showCardFinishes:Ce??!0,showCardSizes:ve??k.showCardSizes,showCardBuy:be??k.showCardBuy,showCardPage:we??k.showCardPage,children:Fe})}export{ae as TITLE_SIZES,Tr as default};
@@ -1 +1 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{Render as a}from"efficient-easel/render";import{renderConfig as d}from"../lib/puck/render-config.js";import{migrateRenamedProps as u}from"efficient-web-builder/format/lib/puck/renamed-props";import{SITE_FOOTER_KIND as f}from"efficient-web-builder/format/lib/content/footer";import{PublishedFooterContext as p}from"efficient-web-builder/render/components/PublishedFooterContext";import{EMPTY_SOCIAL_LINKS as g}from"efficient-web-builder/format/lib/content/social-links";function I({footerBlock:l,rootProps:e,headerSettings:o,siteName:n,legalName:t,foundedYear:i,socialLinks:m}){const s=u({root:{props:{...e??{},kind:f}},content:[l],zones:{}});return r(p.Provider,{value:{logoUrl:o?.logoUrl??null,logoReversed:o?.logoReversed??null,logoInkIsDark:o?.logoInkIsDark??null,siteName:n,legalName:t??null,foundedYear:i??null,socialLinks:m??g},children:r(a,{config:d(),data:s})})}export{I as default};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{Render as a}from"efficient-easel/render";import{renderConfig as d}from"../lib/document/render-config.js";import{migrateRenamedProps as u}from"efficient-web-builder/format/lib/document/renamed-props";import{SITE_FOOTER_KIND as f}from"efficient-web-builder/format/lib/content/footer";import{PublishedFooterContext as p}from"efficient-web-builder/render/components/PublishedFooterContext";import{EMPTY_SOCIAL_LINKS as g}from"efficient-web-builder/format/lib/content/social-links";function I({footerBlock:l,rootProps:e,headerSettings:o,siteName:n,legalName:t,foundedYear:i,socialLinks:m}){const s=u({root:{props:{...e??{},kind:f}},content:[l],zones:{}});return r(p.Provider,{value:{logoUrl:o?.logoUrl??null,logoReversed:o?.logoReversed??null,logoInkIsDark:o?.logoInkIsDark??null,siteName:n,legalName:t??null,foundedYear:i??null,socialLinks:m??g},children:r(a,{config:d(),data:s})})}export{I as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import{Render as i}from"efficient-easel/render";import n from"./BoxHeaderBar.js";import{headerRenderConfig as s}from"../lib/puck/render-config.js";import{migrateRenamedProps as p}from"efficient-web-builder/format/lib/puck/renamed-props";function m({group:e}){const r=p({root:{props:{}},content:[e],zones:{}}),o=e.props??{};return t(n,{sticky:o.sticky,topTextColor:o.topTextColor,heightPx:o.heightPx,theme:o.sectionAccent,children:t(i,{config:s(),data:r})})}export{m as default};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{Render as i}from"efficient-easel/render";import n from"./BoxHeaderBar.js";import{headerRenderConfig as s}from"../lib/document/render-config.js";import{migrateRenamedProps as p}from"efficient-web-builder/format/lib/document/renamed-props";function m({group:e}){const r=p({root:{props:{}},content:[e],zones:{}}),o=e.props??{};return t(n,{sticky:o.sticky,topTextColor:o.topTextColor,heightPx:o.heightPx,theme:o.sectionAccent,children:t(i,{config:s(),data:r})})}export{m as default};
@@ -0,0 +1,10 @@
1
+ import { type RateGroup } from "../lib/sections/rate-table.js";
2
+ export declare const RATE_NONE = "\u2013";
3
+ interface RateTableProps {
4
+ title?: string;
5
+ description?: string;
6
+ groups: readonly RateGroup[];
7
+ contained: boolean;
8
+ }
9
+ export default function RateTable({ title, description, groups, contained }: RateTableProps): import("react").JSX.Element | null;
10
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import c from"efficient-web-builder/render/components/BlockFrame";import{renderGold as m,renderHeadline as o,splitParagraphs as d}from"efficient-web-builder/render/components/goldPhrases";import{RATE_TABLE_SCROLL_AFTER as p}from"../lib/sections/rate-table.js";const x="–";function h({title:a,description:r,groups:n,contained:s}){return n.length?e(c,{contained:s,className:"py-6",children:t("div",{className:"flex flex-col gap-10",children:[(a||r)&&t("div",{className:"flex max-w-[680px] flex-col gap-3",children:[a&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium leading-[1.05] tracking-[-0.03em] max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:o(a,!1)}),r&&d(r).map((l,i)=>e("p",{className:"text-[15px] leading-[1.6] opacity-85",children:m(l)},i))]}),n.map((l,i)=>e(f,{group:l},`${l.name}-${i}`))]})}):null}function f({group:a}){const r=a.columns.length>p;return t("div",{className:"flex flex-col gap-3",children:[a.name&&e("h3",{className:"font-mono text-[12px] uppercase tracking-[0.18em]",children:m(a.name)}),e("div",{className:r?"overflow-x-auto":void 0,children:t("table",{className:r?"w-full min-w-[560px] border-collapse text-[15px] tabular-nums":"w-full border-collapse text-[15px] tabular-nums",children:[e("caption",{className:"sr-only",children:a.name}),e("thead",{children:t("tr",{className:"border-b border-line",children:[e("td",{className:"py-2"}),a.columns.map((n,s)=>e("th",{scope:"col",className:"py-2 pl-4 text-right align-bottom text-[12px] font-normal opacity-60",children:n},s))]})}),e("tbody",{children:a.rows.map((n,s)=>t("tr",{className:"border-b border-line last:border-b-0",children:[e("th",{scope:"row",className:"py-3 pr-2 text-left align-baseline font-normal",children:m(n.label)}),n.cells.map((l,i)=>e("td",{className:`whitespace-nowrap py-3 pl-4 text-right align-baseline${l.standard||!l.amount?" opacity-60":""}`,children:l.amount||x},i))]},s))})]})})]})}export{x as RATE_NONE,h as default};
@@ -1 +1 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{SectionTextParts as o}from"efficient-web-builder/render/lib/puck/editing-bridges";function i({nodeId:e,children:t}){return r(o,{nodeId:e,sectionType:"SpecTable",children:t})}export{i as default};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{SectionTextParts as o}from"efficient-web-builder/render/lib/document/editing-bridges";function i({nodeId:e,children:t}){return r(o,{nodeId:e,sectionType:"SpecTable",children:t})}export{i as default};
@@ -1 +1 @@
1
- "use client";import{jsx as a,jsxs as f}from"react/jsx-runtime";import g from"efficient-web-builder/render/components/PartStyledKind";import{ThemedSelectList as y,useThemedSelect as I}from"../ThemedSelect.js";import{PART_KIND_ATTR as u}from"efficient-web-builder/render/lib/puck/text-parts";import{TEXT_KIND_BODY as b,TEXT_KIND_NAME as h}from"efficient-web-builder/format/lib/sections/section-text-kinds";const n={body:"text-[length:var(--size-body,15px)]",headingSmall:"text-[length:var(--size-headingSmall,24px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]",labelXl:"text-[length:var(--size-label,14px)]"};function T(o,l){return[{value:"",label:l??"—"},...o.map(i=>({value:i.value,label:i.label}))]}function z({label:o,value:l,options:i,onChange:v,placeholder:p,disabled:t,compact:s=!1,editing:d=!1}){const m=(i.find(r=>r.value===l)?.label??l)||p||"—",x=T(i,p),e=I({items:x,value:l,onPick:v}),c=e.open;return f("div",{ref:e.wrapRef,className:"relative min-w-0",children:[f("div",{ref:r=>{e.triggerRef.current=r},role:"button",tabIndex:t?-1:0,"aria-haspopup":"listbox","aria-expanded":c,"aria-controls":c?e.listId:void 0,"aria-activedescendant":e.activeId,"aria-label":o,"aria-disabled":t||void 0,onClick:()=>!t&&e.toggle(),onKeyDown:r=>!t&&e.onTriggerKeyDown(r),className:["relative flex h-full flex-col bg-bg transition-colors",s?"gap-1 px-3 py-3":"min-h-[160px] gap-4 px-6 py-8",t?"opacity-50":"cursor-pointer hover:bg-surface"].join(" "),children:[a("span",{...d?{[u]:h}:{},className:["font-mono uppercase text-accent",s?`${n.labelXs} tracking-[0.2em]`:`${n.labelLarge} tracking-[0.3em]`].join(" "),children:a(g,{kind:h,children:o})}),a("span",{title:m,className:["truncate font-display font-medium tracking-[-0.02em]",s?`${n.body} leading-[1.2]`:`mt-auto ${n.headingSmall} leading-[1.1]`,l?"text-fg":"text-fg-dim"].join(" "),...d?{[u]:b}:{},children:a(g,{kind:b,children:m})}),a("span",{className:["pointer-events-none absolute font-mono text-accent",s?`right-3 top-3 ${n.labelSmall}`:`right-[22px] top-[22px] ${n.labelXl}`].join(" "),children:"▾"})]}),c&&!t&&a(y,{id:e.listId,tone:"cell",items:x,value:l,focusIdx:e.focusIdx,onFocus:e.setFocusIdx,onPick:e.pick,listRef:e.listRef})]})}export{z as PickerField,T as pickerItems};
1
+ "use client";import{jsx as a,jsxs as f}from"react/jsx-runtime";import g from"efficient-web-builder/render/components/PartStyledKind";import{ThemedSelectList as y,useThemedSelect as I}from"../ThemedSelect.js";import{PART_KIND_ATTR as u}from"efficient-web-builder/render/lib/document/text-parts";import{TEXT_KIND_BODY as b,TEXT_KIND_NAME as h}from"efficient-web-builder/format/lib/sections/section-text-kinds";const n={body:"text-[length:var(--size-body,15px)]",headingSmall:"text-[length:var(--size-headingSmall,24px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]",labelXl:"text-[length:var(--size-label,14px)]"};function T(o,l){return[{value:"",label:l??"—"},...o.map(i=>({value:i.value,label:i.label}))]}function z({label:o,value:l,options:i,onChange:v,placeholder:p,disabled:t,compact:s=!1,editing:d=!1}){const m=(i.find(r=>r.value===l)?.label??l)||p||"—",x=T(i,p),e=I({items:x,value:l,onPick:v}),c=e.open;return f("div",{ref:e.wrapRef,className:"relative min-w-0",children:[f("div",{ref:r=>{e.triggerRef.current=r},role:"button",tabIndex:t?-1:0,"aria-haspopup":"listbox","aria-expanded":c,"aria-controls":c?e.listId:void 0,"aria-activedescendant":e.activeId,"aria-label":o,"aria-disabled":t||void 0,onClick:()=>!t&&e.toggle(),onKeyDown:r=>!t&&e.onTriggerKeyDown(r),className:["relative flex h-full flex-col bg-bg transition-colors",s?"gap-1 px-3 py-3":"min-h-[160px] gap-4 px-6 py-8",t?"opacity-50":"cursor-pointer hover:bg-surface"].join(" "),children:[a("span",{...d?{[u]:h}:{},className:["font-mono uppercase text-accent",s?`${n.labelXs} tracking-[0.2em]`:`${n.labelLarge} tracking-[0.3em]`].join(" "),children:a(g,{kind:h,children:o})}),a("span",{title:m,className:["truncate font-display font-medium tracking-[-0.02em]",s?`${n.body} leading-[1.2]`:`mt-auto ${n.headingSmall} leading-[1.1]`,l?"text-fg":"text-fg-dim"].join(" "),...d?{[u]:b}:{},children:a(g,{kind:b,children:m})}),a("span",{className:["pointer-events-none absolute font-mono text-accent",s?`right-3 top-3 ${n.labelSmall}`:`right-[22px] top-[22px] ${n.labelXl}`].join(" "),children:"▾"})]}),c&&!t&&a(y,{id:e.listId,tone:"cell",items:x,value:l,focusIdx:e.focusIdx,onFocus:e.setFocusIdx,onPick:e.pick,listRef:e.listRef})]})}export{z as PickerField,T as pickerItems};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import u from"../SectionBand.js";import B from"../BundleCard.js";import{cardImageShapeTokens as m}from"efficient-web-builder/format/lib/content/card-image-shape";import N from"efficient-web-builder/render/components/SectionHeader";import O from"./KindGate.js";import{useCurrency as _}from"../CurrencyContext.js";import{renderGold as f,renderHeadline as j}from"efficient-web-builder/render/components/goldPhrases";import{useCurrentProduct as k}from"../../lib/puck/current-product.js";import{say as C}from"efficient-web-builder/format/lib/editor-words";const x="border-b border-line py-[120px] max-[1100px]:py-20",g="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20",S=["alloy-wheel"],y={2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1"};function D(r){return e(O,{kinds:S,type:"BundleOffer",editing:r.editing,children:e(v,{...r})})}function v({num:r,title:o,description:t,columns:d=3,editing:b=!1,omitHead:n=!1,cardImage:i}){const l=k(),{currency:h}=_(),s=l?.product.kind==="alloy-wheel"?l.product.source.bundles??[]:[],c=n?null:e(N,{num:r?f(r):void 0,title:o?j(o,!1):void 0,description:t?f(t):void 0,accent:!0});return s.length===0?b?a(u,{className:n?g:x,style:m(i),children:[c,e("p",{className:"border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:C("Bundles containing this product appear here on a product page.")})]}):null:a(u,{className:n?g:x,style:m(i),children:[c,e("div",{className:`mt-10 grid gap-6 ${y[d]??y[3]}`,children:s.slice(0,d).map(p=>e(B,{bundle:p,currency:h},p.slug))})]})}export{D as default,S as supportedKinds};
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import u from"../SectionBand.js";import B from"../BundleCard.js";import{cardImageShapeTokens as m}from"efficient-web-builder/format/lib/content/card-image-shape";import N from"efficient-web-builder/render/components/SectionHeader";import O from"./KindGate.js";import{useCurrency as _}from"../CurrencyContext.js";import{renderGold as f,renderHeadline as j}from"efficient-web-builder/render/components/goldPhrases";import{useCurrentProduct as k}from"../../lib/document/current-product.js";import{say as C}from"efficient-web-builder/format/lib/editor-words";const x="border-b border-line py-[120px] max-[1100px]:py-20",g="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20",S=["alloy-wheel"],y={2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1"};function D(r){return e(O,{kinds:S,type:"BundleOffer",editing:r.editing,children:e(v,{...r})})}function v({num:r,title:o,description:t,columns:d=3,editing:b=!1,omitHead:n=!1,cardImage:i}){const l=k(),{currency:h}=_(),s=l?.product.kind==="alloy-wheel"?l.product.source.bundles??[]:[],c=n?null:e(N,{num:r?f(r):void 0,title:o?j(o,!1):void 0,description:t?f(t):void 0,accent:!0});return s.length===0?b?a(u,{className:n?g:x,style:m(i),children:[c,e("p",{className:"border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:C("Bundles containing this product appear here on a product page.")})]}):null:a(u,{className:n?g:x,style:m(i),children:[c,e("div",{className:`mt-10 grid gap-6 ${y[d]??y[3]}`,children:s.slice(0,d).map(p=>e(B,{bundle:p,currency:h},p.slug))})]})}export{D as default,S as supportedKinds};
@@ -1,5 +1,5 @@
1
1
  import { type DetailRow } from "../DetailRows.js";
2
- import { type CurrentRecord } from "../../lib/puck/current-record.js";
2
+ import { type CurrentRecord } from "../../lib/document/current-record.js";
3
3
  import type { ProductKind } from "../../lib/api/index.js";
4
4
  export declare const supportedKinds: readonly ProductKind[];
5
5
  interface Props {
@@ -1 +1 @@
1
- "use client";import{jsx as s}from"react/jsx-runtime";import y from"../SectionBand.js";import f from"../DetailRows.js";import R from"./KindGate.js";import x from"./RecordPhotoGallery.js";import{useCurrentProduct as D}from"../../lib/puck/current-product.js";import{SAMPLE_RECORD as b,recordFacts as k,recordPictures as p,useCurrentRecord as S,useDrawsOtherRecord as B}from"../../lib/puck/current-record.js";import{detailShotTag as P,pickDetailShots as T}from"../../lib/wheels/detail-shots.js";import{selectedStuds as N}from"../../lib/wheels/selected-studs.js";import{useSampleProduct as v}from"./useSampleProduct.js";import{say as C}from"efficient-web-builder/format/lib/editor-words";const F=["alloy-wheel"];function h(e,n){return e.finishes.find(t=>t.name===n)??e.finishes[0]}function L(e,n){return(h(e,n)?.features??[]).map(t=>({eyebrow:t.eyebrow,title:t.heading,copy:t.description,tag:t.mark,image:t.image||void 0}))}function j(e,n,t){const r=T(h(e,n),t);return r.rows.map(i=>({eyebrow:i.eyebrow?.trim()||void 0,title:i.title,copy:i.line||void 0,image:i.url,tag:P(i,r,t),imageShape:"square"}))}function E(e){return B(!!e.editing)?s(G,{...e}):s(R,{kinds:F,type:"DetailRows",editing:e.editing,children:s(K,{...e})})}function w(e){const n=k(e),t=p(e)[0];return!n.length&&!t&&!e.title.trim()?[]:[{title:e.title,specs:n,image:t?.url||void 0}]}function G({startLeft:e,padTop:n,padBottom:t,editing:r=!1}){const i=S(),o=i?w(i):r?w(b):[];if(o.length===0)return null;const a=i?p(i,{firstField:!0}):[];return a.length&&(o[0]={...o[0],media:s(x,{pictures:a,name:i?.title??"",editing:r,fit:"column"})}),s(f,{rows:o,startLeft:e,padTop:n,padBottom:t,editing:r})}function K({rowsFrom:e,startLeft:n,padTop:t,padBottom:r,editing:i=!1}){const o=D(),a=v(i&&!o),c=o?.product??a,l=c?.kind==="alloy-wheel"?c.source:null,u=o?o.selection.shown.finish:void 0,g=o?N(o.selection):null,d=e==="details",m=l?d?j(l,u,g):L(l,u):[];return d&&m.length===0?i?s(y,{className:"border-b border-line py-14 max-[1100px]:py-10",children:s("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:C("No detail shots on this finish yet. Tick a close-up on the design's renderings and give it a title. This section is hidden on the live page until then.")})}):null:s(f,{rows:m,startLeft:n,padTop:t,padBottom:r,editing:i})}export{E as default,w as recordDetailRows,F as supportedKinds};
1
+ "use client";import{jsx as s}from"react/jsx-runtime";import y from"../SectionBand.js";import f from"../DetailRows.js";import R from"./KindGate.js";import x from"./RecordPhotoGallery.js";import{useCurrentProduct as D}from"../../lib/document/current-product.js";import{SAMPLE_RECORD as b,recordFacts as k,recordPictures as p,useCurrentRecord as S,useDrawsOtherRecord as B}from"../../lib/document/current-record.js";import{detailShotTag as P,pickDetailShots as T}from"../../lib/wheels/detail-shots.js";import{selectedStuds as N}from"../../lib/wheels/selected-studs.js";import{useSampleProduct as v}from"./useSampleProduct.js";import{say as C}from"efficient-web-builder/format/lib/editor-words";const F=["alloy-wheel"];function h(e,n){return e.finishes.find(t=>t.name===n)??e.finishes[0]}function L(e,n){return(h(e,n)?.features??[]).map(t=>({eyebrow:t.eyebrow,title:t.heading,copy:t.description,tag:t.mark,image:t.image||void 0}))}function j(e,n,t){const r=T(h(e,n),t);return r.rows.map(i=>({eyebrow:i.eyebrow?.trim()||void 0,title:i.title,copy:i.line||void 0,image:i.url,tag:P(i,r,t),imageShape:"square"}))}function E(e){return B(!!e.editing)?s(G,{...e}):s(R,{kinds:F,type:"DetailRows",editing:e.editing,children:s(K,{...e})})}function w(e){const n=k(e),t=p(e)[0];return!n.length&&!t&&!e.title.trim()?[]:[{title:e.title,specs:n,image:t?.url||void 0}]}function G({startLeft:e,padTop:n,padBottom:t,editing:r=!1}){const i=S(),o=i?w(i):r?w(b):[];if(o.length===0)return null;const a=i?p(i,{firstField:!0}):[];return a.length&&(o[0]={...o[0],media:s(x,{pictures:a,name:i?.title??"",editing:r,fit:"column"})}),s(f,{rows:o,startLeft:e,padTop:n,padBottom:t,editing:r})}function K({rowsFrom:e,startLeft:n,padTop:t,padBottom:r,editing:i=!1}){const o=D(),a=v(i&&!o),c=o?.product??a,l=c?.kind==="alloy-wheel"?c.source:null,u=o?o.selection.shown.finish:void 0,g=o?N(o.selection):null,d=e==="details",m=l?d?j(l,u,g):L(l,u):[];return d&&m.length===0?i?s(y,{className:"border-b border-line py-14 max-[1100px]:py-10",children:s("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:C("No detail shots on this finish yet. Tick a close-up on the design's renderings and give it a title. This section is hidden on the live page until then.")})}):null:s(f,{rows:m,startLeft:n,padTop:t,padBottom:r,editing:i})}export{E as default,w as recordDetailRows,F as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import c,{EU_LABEL_BAND as m,EuTyreLabelGrades as d}from"../EuTyreLabels.js";import p from"../SectionBand.js";import a from"./KindGate.js";import{useEuTyreLabels as f}from"../useEuTyreLabels.js";import{useCurrentProduct as y}from"../../lib/puck/current-product.js";import{useSampleProduct as b}from"./useSampleProduct.js";import{say as E}from"efficient-web-builder/format/lib/editor-words";const s=["tyre"];function L(e){return r(a,{kinds:s,type:"EuTyreLabel",editing:e.editing,children:r(T,{...e})})}function T({num:e,editing:t=!1}){const n=l(t);return n.length===0&&t?r(p,{className:m,children:r(i,{})}):r(c,{labels:n,num:e??"",capped:!1})}function _({editing:e=!1}){return r(a,{kinds:s,type:"EuTyreLabel",editing:e,children:r(h,{editing:e})})}function h({editing:e}){const t=l(e);return t.length===0?e?r(i,{}):null:r(d,{labels:t})}function l(e){const t=y(),n=b(e&&!t),o=t?.product??n,u=o?.kind==="tyre"?o.source.variants:[];return f(u)}function i(){return r("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:E("The EU label appears here for every size with an EPREL registration number. It is read live from the registry and never stored.")})}export{_ as DynamicEuTyreLabelBlock,L as default,s as supportedKinds};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import c,{EU_LABEL_BAND as m,EuTyreLabelGrades as d}from"../EuTyreLabels.js";import p from"../SectionBand.js";import a from"./KindGate.js";import{useEuTyreLabels as f}from"../useEuTyreLabels.js";import{useCurrentProduct as y}from"../../lib/document/current-product.js";import{useSampleProduct as b}from"./useSampleProduct.js";import{say as E}from"efficient-web-builder/format/lib/editor-words";const s=["tyre"];function L(e){return r(a,{kinds:s,type:"EuTyreLabel",editing:e.editing,children:r(T,{...e})})}function T({num:e,editing:t=!1}){const n=l(t);return n.length===0&&t?r(p,{className:m,children:r(i,{})}):r(c,{labels:n,num:e??"",capped:!1})}function _({editing:e=!1}){return r(a,{kinds:s,type:"EuTyreLabel",editing:e,children:r(h,{editing:e})})}function h({editing:e}){const t=l(e);return t.length===0?e?r(i,{}):null:r(d,{labels:t})}function l(e){const t=y(),n=b(e&&!t),o=t?.product??n,u=o?.kind==="tyre"?o.source.variants:[];return f(u)}function i(){return r("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:E("The EU label appears here for every size with an EPREL registration number. It is read live from the registry and never stored.")})}export{_ as DynamicEuTyreLabelBlock,L as default,s as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as o}from"react/jsx-runtime";import x from"../FitmentTable.js";import w from"./KindGate.js";import{useCurrentProduct as y}from"../../lib/puck/current-product.js";import{useSampleProduct as F}from"./useSampleProduct.js";const T=["alloy-wheel"];function b(t){return o(w,{kinds:T,type:"FitmentTable",editing:t.editing,children:o(g,{...t})})}function g({num:t,title:r,description:s,showFilter:l,tooltipDefaultOn:m,footnote:a,footnoteLinkText:d,footnoteLinkHref:f,editing:n=!1,omitHead:c=!1}){const e=y(),u=F(n&&!e),i=e?.product??u,p=i?.kind==="alloy-wheel"?i.source.fitments??[]:[];return o(x,{num:t,title:r,description:s,rows:p,showFilter:l,tooltipDefaultOn:m,footnote:a,footnoteLinkText:d,footnoteLinkHref:f,editing:n,omitHead:c,fieldUsage:e?.fieldUsage})}export{b as default,T as supportedKinds};
1
+ "use client";import{jsx as o}from"react/jsx-runtime";import x from"../FitmentTable.js";import w from"./KindGate.js";import{useCurrentProduct as y}from"../../lib/document/current-product.js";import{useSampleProduct as F}from"./useSampleProduct.js";const T=["alloy-wheel"];function b(t){return o(w,{kinds:T,type:"FitmentTable",editing:t.editing,children:o(g,{...t})})}function g({num:t,title:r,description:s,showFilter:l,tooltipDefaultOn:m,footnote:a,footnoteLinkText:d,footnoteLinkHref:f,editing:n=!1,omitHead:c=!1}){const e=y(),u=F(n&&!e),i=e?.product??u,p=i?.kind==="alloy-wheel"?i.source.fitments??[]:[];return o(x,{num:t,title:r,description:s,rows:p,showFilter:l,tooltipDefaultOn:m,footnote:a,footnoteLinkText:d,footnoteLinkHref:f,editing:n,omitHead:c,fieldUsage:e?.fieldUsage})}export{b as default,T as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as _}from"react/jsx-runtime";import L from"efficient-web-builder/render/components/Btn";import M,{GALLERY_GRID_ATTR as B,GalleryLinksContext as C}from"../GalleryItem.js";import{SharedPartKinds as H}from"efficient-web-builder/render/components/PublishedPartStylesContext";import{renderHeadline as j}from"efficient-web-builder/render/components/goldPhrases";import D from"efficient-web-builder/render/components/SectionHeader";import F from"./KindGate.js";import K from"./RecordPhotoGallery.js";import{headIsEmpty as U,ownPadding as Z}from"../../lib/sections/own-padding.js";import{PLP_KINDS as $}from"../../lib/catalog/plp-item.js";import{useCurrentProduct as z}from"../../lib/puck/current-product.js";import{SAMPLE_PICTURE_COUNT as V,SAMPLE_RECORD as W,recordPictures as X,useCurrentRecord as Y,useDrawsOtherRecord as q}from"../../lib/puck/current-record.js";import{mediaGroupVehicle as J}from"../../lib/content/source-values.js";import{useSampleProduct as Q}from"./useSampleProduct.js";import{say as R}from"efficient-web-builder/format/lib/editor-words";const ee=$,E=["photos","lifestyle","accessories","others"];function re(e,o){if(!e)return[];if(o==="all")return E.flatMap(n=>e[n]??[]);const a=E.includes(o)?o:null;return a?e[a]??[]:[]}const S="relative z-[2] bg-bg py-[120px] max-[800px]:py-[70px]",A="relative z-[2] bg-bg pt-0 pb-[120px] max-[800px]:pt-0 max-[800px]:pb-[70px]",O="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]";function te(e){return q(!!e.editing)?t(ie,{...e}):t(F,{kinds:ee,type:"GalleryB",editing:e.editing,children:t(ae,{...e})})}function ie(e){const{editing:o=!1}=e,a=Y(),n=a?X(a,{firstField:!0}).map(s=>({images:[s.url],eyebrow:s.alt&&s.alt!==a.title?s.alt:void 0,...s.video?{video:s.video}:{}})):o?Array.from({length:V},()=>({images:[""]})):[];return t(T,{...e,tiles:n,owner:{name:(a??W).title},photosOnly:!0,emptyHint:R("This record’s pictures appear here on its page. A record with no pictures draws nothing.")})}function ae({omitHead:e=!1,num:o,title:a,linkText:n,linkHref:s,galleryHref:u="/gallery",submitHref:y="/contact",zone:v="all",photoDisplay:h="covers",previewHover:b,display:N,displayPhone:d,styleOwner:c,editing:m=!1,padTop:w,padBottom:p}){const g=z(),G=Q(m&&!g),l=g?.product??G,f=re(l?.mediaGroups,v).map(r=>({images:(r.items??[]).filter(i=>i.kind==="image").map(i=>i.url),vehicle:J(r),finish:r.finish})).filter(r=>r.images.length>0),x=(h==="auto"?f.length>=4?"covers":"all":h)==="all"?f.flatMap(r=>r.images.map(i=>({images:[i],vehicle:r.vehicle,finish:r.finish}))):f;return t(T,{omitHead:e,num:o,title:a,linkText:n,linkHref:s,galleryHref:u,submitHref:y,previewHover:b,display:N,displayPhone:d,styleOwner:c,editing:m,padTop:w,padBottom:p,tiles:l?x.map(r=>({images:r.images,eyebrow:r.vehicle||void 0,meta:r.finish})):[],owner:{name:l?.name??"",href:l?.href,process:l?.eyebrow},emptyHint:R("This product’s photos appear here on a product page. Add media groups in the product’s Media tab.")})}function T({omitHead:e=!1,num:o,title:a,linkText:n,linkHref:s,galleryHref:u="/gallery",submitHref:y="/contact",previewHover:v,display:h,displayPhone:b,styleOwner:N,editing:d=!1,tiles:c,owner:m,emptyHint:w,photosOnly:p=!1,padTop:g,padBottom:G}){const l=n?{text:n,href:s||"#"}:void 0,f=a?j(a,!1):void 0,P=e?null:t(D,{num:o,title:f,link:l}),x=!d&&U(o,a,l?.text)?null:P,r=Z(g,G);return c.length===0?d?t("section",{className:e?A:S,style:r,children:_("div",{className:O,children:[x,t("p",{className:"mt-8 border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:w})]})}):null:t("section",{className:e?A:S,style:r,children:_("div",{className:O,children:[x,p?t(K,{pictures:c.map(i=>({url:i.images[0]??"",alt:i.eyebrow,video:i.video})),name:m.name,editing:d}):t(C.Provider,{value:{galleryHref:u,submitHref:y,previewHover:v,display:h,displayPhone:b,styleOwner:N,photosOnly:p},children:t(H,{children:t("div",{[B]:"",className:"grid grid-cols-4 gap-2 max-[1500px]:grid-cols-3 max-[800px]:grid-cols-1 max-[800px]:gap-1",children:c.map((i,k)=>t(M,{image:i.images[0],photos:i.images.slice(1).map(I=>({src:I})),href:m.href,process:m.process,eyebrow:i.eyebrow,name:m.name,meta:i.meta,editing:d},`${i.eyebrow}-${k}`))})})}),!p&&t("div",{className:"mt-12 flex flex-col items-center gap-3",children:t(L,{href:u,variant:"ghost",children:"See Gallery"})})]})})}export{te as default,ee as supportedKinds};
1
+ "use client";import{jsx as t,jsxs as _}from"react/jsx-runtime";import L from"efficient-web-builder/render/components/Btn";import M,{GALLERY_GRID_ATTR as B,GalleryLinksContext as C}from"../GalleryItem.js";import{SharedPartKinds as H}from"efficient-web-builder/render/components/PublishedPartStylesContext";import{renderHeadline as j}from"efficient-web-builder/render/components/goldPhrases";import D from"efficient-web-builder/render/components/SectionHeader";import F from"./KindGate.js";import K from"./RecordPhotoGallery.js";import{headIsEmpty as U,ownPadding as Z}from"../../lib/sections/own-padding.js";import{PLP_KINDS as $}from"../../lib/catalog/plp-item.js";import{useCurrentProduct as z}from"../../lib/document/current-product.js";import{SAMPLE_PICTURE_COUNT as V,SAMPLE_RECORD as W,recordPictures as X,useCurrentRecord as Y,useDrawsOtherRecord as q}from"../../lib/document/current-record.js";import{mediaGroupVehicle as J}from"../../lib/content/source-values.js";import{useSampleProduct as Q}from"./useSampleProduct.js";import{say as R}from"efficient-web-builder/format/lib/editor-words";const ee=$,E=["photos","lifestyle","accessories","others"];function re(e,o){if(!e)return[];if(o==="all")return E.flatMap(n=>e[n]??[]);const a=E.includes(o)?o:null;return a?e[a]??[]:[]}const S="relative z-[2] bg-bg py-[120px] max-[800px]:py-[70px]",A="relative z-[2] bg-bg pt-0 pb-[120px] max-[800px]:pt-0 max-[800px]:pb-[70px]",O="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]";function te(e){return q(!!e.editing)?t(ie,{...e}):t(F,{kinds:ee,type:"GalleryB",editing:e.editing,children:t(ae,{...e})})}function ie(e){const{editing:o=!1}=e,a=Y(),n=a?X(a,{firstField:!0}).map(s=>({images:[s.url],eyebrow:s.alt&&s.alt!==a.title?s.alt:void 0,...s.video?{video:s.video}:{}})):o?Array.from({length:V},()=>({images:[""]})):[];return t(T,{...e,tiles:n,owner:{name:(a??W).title},photosOnly:!0,emptyHint:R("This record’s pictures appear here on its page. A record with no pictures draws nothing.")})}function ae({omitHead:e=!1,num:o,title:a,linkText:n,linkHref:s,galleryHref:u="/gallery",submitHref:y="/contact",zone:v="all",photoDisplay:h="covers",previewHover:b,display:N,displayPhone:d,styleOwner:c,editing:m=!1,padTop:w,padBottom:p}){const g=z(),G=Q(m&&!g),l=g?.product??G,f=re(l?.mediaGroups,v).map(r=>({images:(r.items??[]).filter(i=>i.kind==="image").map(i=>i.url),vehicle:J(r),finish:r.finish})).filter(r=>r.images.length>0),x=(h==="auto"?f.length>=4?"covers":"all":h)==="all"?f.flatMap(r=>r.images.map(i=>({images:[i],vehicle:r.vehicle,finish:r.finish}))):f;return t(T,{omitHead:e,num:o,title:a,linkText:n,linkHref:s,galleryHref:u,submitHref:y,previewHover:b,display:N,displayPhone:d,styleOwner:c,editing:m,padTop:w,padBottom:p,tiles:l?x.map(r=>({images:r.images,eyebrow:r.vehicle||void 0,meta:r.finish})):[],owner:{name:l?.name??"",href:l?.href,process:l?.eyebrow},emptyHint:R("This product’s photos appear here on a product page. Add media groups in the product’s Media tab.")})}function T({omitHead:e=!1,num:o,title:a,linkText:n,linkHref:s,galleryHref:u="/gallery",submitHref:y="/contact",previewHover:v,display:h,displayPhone:b,styleOwner:N,editing:d=!1,tiles:c,owner:m,emptyHint:w,photosOnly:p=!1,padTop:g,padBottom:G}){const l=n?{text:n,href:s||"#"}:void 0,f=a?j(a,!1):void 0,P=e?null:t(D,{num:o,title:f,link:l}),x=!d&&U(o,a,l?.text)?null:P,r=Z(g,G);return c.length===0?d?t("section",{className:e?A:S,style:r,children:_("div",{className:O,children:[x,t("p",{className:"mt-8 border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:w})]})}):null:t("section",{className:e?A:S,style:r,children:_("div",{className:O,children:[x,p?t(K,{pictures:c.map(i=>({url:i.images[0]??"",alt:i.eyebrow,video:i.video})),name:m.name,editing:d}):t(C.Provider,{value:{galleryHref:u,submitHref:y,previewHover:v,display:h,displayPhone:b,styleOwner:N,photosOnly:p},children:t(H,{children:t("div",{[B]:"",className:"grid grid-cols-4 gap-2 max-[1500px]:grid-cols-3 max-[800px]:grid-cols-1 max-[800px]:gap-1",children:c.map((i,k)=>t(M,{image:i.images[0],photos:i.images.slice(1).map(I=>({src:I})),href:m.href,process:m.process,eyebrow:i.eyebrow,name:m.name,meta:i.meta,editing:d},`${i.eyebrow}-${k}`))})})}),!p&&t("div",{className:"mt-12 flex flex-col items-center gap-3",children:t(L,{href:u,variant:"ghost",children:"See Gallery"})})]})})}export{te as default,ee as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as s,jsxs as c}from"react/jsx-runtime";import l from"../ProductGallery.js";import a from"../ProductLightbox.js";import{SECTION_NOTICE_TEXT_CLASS as p}from"../SectionNotice.js";import{heroView as d}from"../product-hero/hero-view.js";import{useIsLightTheme as f}from"../useIsLightTheme.js";import{useLightbox as g}from"../useLightbox.js";import{useProductSelection as x}from"../useProductSelection.js";import{useCurrentProduct as h}from"../../lib/puck/current-product.js";import{say as L}from"efficient-web-builder/format/lib/editor-words";import{useSampleProduct as S}from"./useSampleProduct.js";function b({editing:o=!1,...t}){const r=h();return r?e(n,{product:r.product,selection:r.selection,onLightbox:r.openLightbox,editing:o,...t}):o?e(y,{...t}):null}function n({product:o,selection:t,onLightbox:r,editing:i,...u}){const m=f();return e(l,{product:o,view:d(o,t,i),angleIdx:t.angleIdx,onSelect:t.setAngleIdx,isLight:m,onLightbox:r,...u})}function y(o){const t=S(!0);return t?e(I,{product:t,...o}):e("p",{className:p,children:L("Loading sample product…")})}function I({product:o,...t}){const r=x(o,{editing:!0}),i=g();return c(s,{children:[e(n,{product:o,selection:r,onLightbox:i.open,editing:!0,...t}),e(a,{item:i.item,onClose:i.close})]})}export{b as default};
1
+ "use client";import{jsx as e,Fragment as s,jsxs as c}from"react/jsx-runtime";import l from"../ProductGallery.js";import a from"../ProductLightbox.js";import{SECTION_NOTICE_TEXT_CLASS as p}from"../SectionNotice.js";import{heroView as d}from"../product-hero/hero-view.js";import{useIsLightTheme as f}from"../useIsLightTheme.js";import{useLightbox as g}from"../useLightbox.js";import{useProductSelection as x}from"../useProductSelection.js";import{useCurrentProduct as h}from"../../lib/document/current-product.js";import{say as L}from"efficient-web-builder/format/lib/editor-words";import{useSampleProduct as S}from"./useSampleProduct.js";function b({editing:o=!1,...t}){const r=h();return r?e(n,{product:r.product,selection:r.selection,onLightbox:r.openLightbox,editing:o,...t}):o?e(y,{...t}):null}function n({product:o,selection:t,onLightbox:r,editing:i,...u}){const m=f();return e(l,{product:o,view:d(o,t,i),angleIdx:t.angleIdx,onSelect:t.setAngleIdx,isLight:m,onLightbox:r,...u})}function y(o){const t=S(!0);return t?e(I,{product:t,...o}):e("p",{className:p,children:L("Loading sample product…")})}function I({product:o,...t}){const r=x(o,{editing:!0}),i=g();return c(s,{children:[e(n,{product:o,selection:r,onLightbox:i.open,editing:!0,...t}),e(a,{item:i.item,onClose:i.close})]})}export{b as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,Fragment as s,jsxs as p}from"react/jsx-runtime";import u from"../ProductHeroPanel.js";import l from"../ProductLightbox.js";import m from"../SectionNotice.js";import d from"./KindGate.js";import{useLightbox as a}from"../useLightbox.js";import{useProductSelection as f}from"../useProductSelection.js";import{PLP_KINDS as h}from"../../lib/catalog/plp-item.js";import{useCurrentProduct as x}from"../../lib/puck/current-product.js";import{useSampleProduct as P}from"./useSampleProduct.js";import{say as g}from"efficient-web-builder/format/lib/editor-words";const L=h;function b({editing:e=!1,pricePlacement:r,showVehicleFitment:i=!0,...o}){const n=x();return t(d,{kinds:L,type:"ProductHero",editing:e,children:n?t(u,{product:n.product,selection:n.selection,onLightbox:n.openLightbox,editing:e,pricePlacement:r,showVehicleFitment:i,...o}):e?t(S,{pricePlacement:r,showVehicleFitment:i,...o}):t(m,{size:"tall",children:"Bound to the current product — preview on a product page."})})}function S({pricePlacement:e,showVehicleFitment:r,...i}){const o=P(!0);return o?t(F,{product:o,pricePlacement:e,showVehicleFitment:r,...i}):t(m,{size:"tall",children:g("Loading sample product…")})}function F({product:e,pricePlacement:r,showVehicleFitment:i,...o}){const n=f(e,{editing:!0}),c=a();return p(s,{children:[t(u,{product:e,selection:n,onLightbox:c.open,editing:!0,pricePlacement:r,showVehicleFitment:i,...o}),t(l,{item:c.item,onClose:c.close})]})}export{F as SampleHeroLoaded,b as default,L as supportedKinds};
1
+ "use client";import{jsx as t,Fragment as s,jsxs as p}from"react/jsx-runtime";import u from"../ProductHeroPanel.js";import l from"../ProductLightbox.js";import m from"../SectionNotice.js";import d from"./KindGate.js";import{useLightbox as a}from"../useLightbox.js";import{useProductSelection as f}from"../useProductSelection.js";import{PLP_KINDS as h}from"../../lib/catalog/plp-item.js";import{useCurrentProduct as x}from"../../lib/document/current-product.js";import{useSampleProduct as P}from"./useSampleProduct.js";import{say as g}from"efficient-web-builder/format/lib/editor-words";const L=h;function b({editing:e=!1,pricePlacement:r,showVehicleFitment:i=!0,...o}){const n=x();return t(d,{kinds:L,type:"ProductHero",editing:e,children:n?t(u,{product:n.product,selection:n.selection,onLightbox:n.openLightbox,editing:e,pricePlacement:r,showVehicleFitment:i,...o}):e?t(S,{pricePlacement:r,showVehicleFitment:i,...o}):t(m,{size:"tall",children:"Bound to the current product — preview on a product page."})})}function S({pricePlacement:e,showVehicleFitment:r,...i}){const o=P(!0);return o?t(F,{product:o,pricePlacement:e,showVehicleFitment:r,...i}):t(m,{size:"tall",children:g("Loading sample product…")})}function F({product:e,pricePlacement:r,showVehicleFitment:i,...o}){const n=f(e,{editing:!0}),c=a();return p(s,{children:[t(u,{product:e,selection:n,onLightbox:c.open,editing:!0,pricePlacement:r,showVehicleFitment:i,...o}),t(l,{item:c.item,onClose:c.close})]})}export{F as SampleHeroLoaded,b as default,L as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as O}from"react/jsx-runtime";import A from"../SectionBand.js";import{GRID_CARD_SHOW as k}from"../../lib/sections/card-show-defaults.js";import{useEffect as W,useId as V,useState as X}from"react";import{resolveCardImageBackground as Z,THEME_CARD_IMAGE_BG as q}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as B}from"efficient-web-builder/format/lib/content/card-image-shape";import{DEFAULT_COVER_INDEX as J}from"../../lib/wheels/cover-rendering.js";import{DEFAULT_CARD_INDEX_FORMAT as Q,DEFAULT_CARD_OUTLINE as Y,cardIndexCss as ee}from"efficient-web-builder/format/lib/sections/product-card-style";import re from"../CompatibleTyres.js";import oe from"../ProductCard.js";import{CARD_ROWS_GRID_CLASS as te,cardRowsGridStyle as ie}from"../WheelCardFrame.js";import{ProductCardChromeProvider as se}from"../ProductCardChrome.js";import{gridClassImageSizes as ne}from"../../lib/sections/card-image-sizes.js";import{fillRowCss as ae}from"../../lib/sections/fill-row.js";import le from"efficient-web-builder/render/components/SectionHeader";import de from"../ViewMoreLink.js";import{useSiteMenuLinks as ce}from"../catalog/SiteMenuLinks.js";import{renderGold as F,renderHeadline as me}from"efficient-web-builder/render/components/goldPhrases";import pe from"./KindGate.js";import{loadProductCatalog as ue}from"../useProductCatalog.js";import{PLP_KINDS as fe}from"../../lib/catalog/plp-item.js";import{relatedCardCount as he,relatedViewMore as ge}from"../../lib/catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as xe,relationshipApplies as Ce,relationshipByKey as ye}from"../../lib/catalog/relationships.js";import{useCurrentProduct as we}from"../../lib/puck/current-product.js";import{PLACEHOLDER_RELATED as H}from"../../lib/wheels/placeholder-wheel.js";import{say as T}from"efficient-web-builder/format/lib/editor-words";const G={label:"text-[length:var(--size-label,13px)]"},be=fe,$={2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1"};function _e(r){return e(pe,{kinds:be,type:"RelatedProducts",editing:r.editing,children:e(Se,{...r})})}function Se({num:r,title:t,description:c,columns:n=3,cardCount:_,relationship:S=xe,footnote:E,footnoteLinkText:R,footnoteLinkHref:D,editing:o=!1,omitHead:x=!1,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w}){const d=we(),U=ce(),I=he(_),[j,N]=X([]);W(()=>{if(d||!o)return;let v=!1;return ue().then(M=>{const K=M.length>0?M:H;v||N(K)}).catch(()=>{v||N(H)}),()=>{v=!0}},[d,o]);const s=ye(S);if(!s)return null;const L=ge(s,U),P=x?null:e(le,{num:r?F(r):void 0,title:me(t||s.heading,!1),description:c?F(c):void 0,accent:!0});if(!d)return o?e(z,{header:P,wheels:j.slice(0,I),columns:n,viewMore:L,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w}):null;if(!Ce(s,d.product.kind))return o?e(A,{className:"border-b border-line py-14 max-[1100px]:py-10",style:B(i),children:e("p",{className:`font-mono ${G.label} uppercase tracking-[0.18em] text-fg-dim`,children:T("“{relationship}” does not apply to this product. It is hidden on the live page.",{relationship:T(s.label)})})}):null;const b=s.resolve(d.product,d.relatedWheels);return b.kind==="tyre"?e(re,{omitHead:x,columns:n,cardImage:i,outline:m,indexBadge:p,num:r,title:t||s.heading,description:c,tyres:[...b.tyres].slice(0,I),footnote:E,footnoteLinkText:R,footnoteLinkHref:D,viewMore:L,editing:o}):b.wheels.length===0?o?O(A,{className:"border-b border-line py-[120px] max-[1100px]:py-20",style:B(i),children:[P,e("p",{className:`border-t border-line py-6 font-mono ${G.label} uppercase tracking-[0.18em] text-fg-dim`,children:T("Related products appear here on a product page.")})]}):null:e(z,{header:P,wheels:[...b.wheels].slice(0,I),columns:n,viewMore:L,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w})}function z({header:r,wheels:t,columns:c,viewMore:n,cardImage:_,outline:S,indexBadge:E,showBadge:R,showCardPrice:D,showCardFinishes:o,showCardSizes:x,showCardBuy:i,showCardPage:m,coverIndex:p,imageBackground:C,spinOnHover:y}){const a=`rp-${V().replace(/:/g,"")}`;if(t.length===0)return null;const l=$[Math.min(4,Math.max(2,c))]??$[3],u=E??Q,f=ee(a,u),h=ae(a,l,{cards:t.length});return O(A,{className:"border-b border-line py-[120px] max-[1100px]:py-20",style:B(_),children:[f&&e("style",{children:f}),h&&e("style",{children:h}),r,e(se,{imageSizes:ne(l,t.length),imageBackgroundFill:Z(C,q),spinOnHover:y??!0,coverIndex:p??J,outline:S??Y,indexBadge:u,showBadge:R??!0,showCardPrice:D??!0,showCardFinishes:o??!0,showCardSizes:x??k.showCardSizes,showCardBuy:i??k.showCardBuy,showCardPage:m??k.showCardPage,children:e("div",{className:`${a} grid gap-[2px] ${te} bg-[var(--catalog-grid-bg)] ${l}`,style:ie("2px"),children:t.map((g,w)=>e(oe,{wheel:g,variant:"catalog"},`${g.slug}-${w}`))})}),e("div",{className:"mt-10 flex",children:e(de,{href:n.href,label:n.label})})]})}export{Se as RelatedProductsBody,_e as default,be as supportedKinds};
1
+ "use client";import{jsx as e,jsxs as O}from"react/jsx-runtime";import A from"../SectionBand.js";import{GRID_CARD_SHOW as k}from"../../lib/sections/card-show-defaults.js";import{useEffect as W,useId as V,useState as X}from"react";import{resolveCardImageBackground as Z,THEME_CARD_IMAGE_BG as q}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as B}from"efficient-web-builder/format/lib/content/card-image-shape";import{DEFAULT_COVER_INDEX as J}from"../../lib/wheels/cover-rendering.js";import{DEFAULT_CARD_INDEX_FORMAT as Q,DEFAULT_CARD_OUTLINE as Y,cardIndexCss as ee}from"efficient-web-builder/format/lib/sections/product-card-style";import re from"../CompatibleTyres.js";import oe from"../ProductCard.js";import{CARD_ROWS_GRID_CLASS as te,cardRowsGridStyle as ie}from"../WheelCardFrame.js";import{ProductCardChromeProvider as se}from"../ProductCardChrome.js";import{gridClassImageSizes as ne}from"../../lib/sections/card-image-sizes.js";import{fillRowCss as ae}from"../../lib/sections/fill-row.js";import le from"efficient-web-builder/render/components/SectionHeader";import de from"../ViewMoreLink.js";import{useSiteMenuLinks as ce}from"../catalog/SiteMenuLinks.js";import{renderGold as F,renderHeadline as me}from"efficient-web-builder/render/components/goldPhrases";import pe from"./KindGate.js";import{loadProductCatalog as ue}from"../useProductCatalog.js";import{PLP_KINDS as fe}from"../../lib/catalog/plp-item.js";import{relatedCardCount as he,relatedViewMore as ge}from"../../lib/catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as xe,relationshipApplies as Ce,relationshipByKey as ye}from"../../lib/catalog/relationships.js";import{useCurrentProduct as we}from"../../lib/document/current-product.js";import{PLACEHOLDER_RELATED as H}from"../../lib/wheels/placeholder-wheel.js";import{say as T}from"efficient-web-builder/format/lib/editor-words";const G={label:"text-[length:var(--size-label,13px)]"},be=fe,$={2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1"};function _e(r){return e(pe,{kinds:be,type:"RelatedProducts",editing:r.editing,children:e(Se,{...r})})}function Se({num:r,title:t,description:c,columns:n=3,cardCount:_,relationship:S=xe,footnote:E,footnoteLinkText:R,footnoteLinkHref:D,editing:o=!1,omitHead:x=!1,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w}){const d=we(),U=ce(),I=he(_),[j,N]=X([]);W(()=>{if(d||!o)return;let v=!1;return ue().then(M=>{const K=M.length>0?M:H;v||N(K)}).catch(()=>{v||N(H)}),()=>{v=!0}},[d,o]);const s=ye(S);if(!s)return null;const L=ge(s,U),P=x?null:e(le,{num:r?F(r):void 0,title:me(t||s.heading,!1),description:c?F(c):void 0,accent:!0});if(!d)return o?e(z,{header:P,wheels:j.slice(0,I),columns:n,viewMore:L,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w}):null;if(!Ce(s,d.product.kind))return o?e(A,{className:"border-b border-line py-14 max-[1100px]:py-10",style:B(i),children:e("p",{className:`font-mono ${G.label} uppercase tracking-[0.18em] text-fg-dim`,children:T("“{relationship}” does not apply to this product. It is hidden on the live page.",{relationship:T(s.label)})})}):null;const b=s.resolve(d.product,d.relatedWheels);return b.kind==="tyre"?e(re,{omitHead:x,columns:n,cardImage:i,outline:m,indexBadge:p,num:r,title:t||s.heading,description:c,tyres:[...b.tyres].slice(0,I),footnote:E,footnoteLinkText:R,footnoteLinkHref:D,viewMore:L,editing:o}):b.wheels.length===0?o?O(A,{className:"border-b border-line py-[120px] max-[1100px]:py-20",style:B(i),children:[P,e("p",{className:`border-t border-line py-6 font-mono ${G.label} uppercase tracking-[0.18em] text-fg-dim`,children:T("Related products appear here on a product page.")})]}):null:e(z,{header:P,wheels:[...b.wheels].slice(0,I),columns:n,viewMore:L,cardImage:i,outline:m,indexBadge:p,showBadge:C,showCardPrice:y,showCardFinishes:a,showCardSizes:l,showCardBuy:u,showCardPage:f,coverIndex:h,imageBackground:g,spinOnHover:w})}function z({header:r,wheels:t,columns:c,viewMore:n,cardImage:_,outline:S,indexBadge:E,showBadge:R,showCardPrice:D,showCardFinishes:o,showCardSizes:x,showCardBuy:i,showCardPage:m,coverIndex:p,imageBackground:C,spinOnHover:y}){const a=`rp-${V().replace(/:/g,"")}`;if(t.length===0)return null;const l=$[Math.min(4,Math.max(2,c))]??$[3],u=E??Q,f=ee(a,u),h=ae(a,l,{cards:t.length});return O(A,{className:"border-b border-line py-[120px] max-[1100px]:py-20",style:B(_),children:[f&&e("style",{children:f}),h&&e("style",{children:h}),r,e(se,{imageSizes:ne(l,t.length),imageBackgroundFill:Z(C,q),spinOnHover:y??!0,coverIndex:p??J,outline:S??Y,indexBadge:u,showBadge:R??!0,showCardPrice:D??!0,showCardFinishes:o??!0,showCardSizes:x??k.showCardSizes,showCardBuy:i??k.showCardBuy,showCardPage:m??k.showCardPage,children:e("div",{className:`${a} grid gap-[2px] ${te} bg-[var(--catalog-grid-bg)] ${l}`,style:ie("2px"),children:t.map((g,w)=>e(oe,{wheel:g,variant:"catalog"},`${g.slug}-${w}`))})}),e("div",{className:"mt-10 flex",children:e(de,{href:n.href,label:n.label})})]})}export{Se as RelatedProductsBody,_e as default,be as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as c}from"react/jsx-runtime";import h from"../SpecTable.js";import v from"./KindGate.js";import{useEuTyreLabels as A}from"../useEuTyreLabels.js";import{buildSpecSheet as E,sourceFromWheel as P}from"../../lib/wheels/spec-sheet.js";import{buildTyreSpecSheet as k}from"../../lib/tyres/spec-sheet.js";import{partVariant as L}from"../../lib/catalog/from-wheel.js";import{useCurrentProduct as V}from"../../lib/puck/current-product.js";import{applySpecAnswers as b}from"../../lib/content/field-usage.js";import{useSampleProduct as _}from"./useSampleProduct.js";const j=["alloy-wheel","tyre"],G=[],I=[];function K(n,r,s){const i=n.variants??[];return(r?i.find(t=>t.sku===r):void 0)??(s?i.find(t=>t.size===s):void 0)??i[0]??null}function M(n){return c(v,{kinds:j,type:"SpecTable",editing:n.editing,children:c(N,{...n})})}function N({num:n,title:r,description:s,showDiagram:i=!0,editing:t=!1,nodeId:d,omitHead:u=!1}){const e=V(),w=_(t&&!e),a=e?.product??w,l=a?.kind==="tyre"?a.source:null,y=A(l?.variants??G),p=e?.fieldUsage??I;if(l){const f=K(l,e?.selection.part?.id,e?.selection.shown.size),g=y.find(z=>z.size===f?.size)??null,x=k({brand:l.brand,variant:f,euLabel:g});return c(h,{capped:!1,num:n,title:r,description:s,rows:b(x.rows,p),diagram:null,editing:t,nodeId:d,omitHead:u})}const o=a?.kind==="alloy-wheel"?a.source:null,S=e?e.selection.shown.finish:o?.finishes[0]?.name,T=e&&o?L(o,e.selection.part)?.size??void 0:void 0,m=o?E(P(o),S,T):{rows:[],diagram:null};return c(h,{capped:!1,num:n,title:r,description:s,rows:b(m.rows,p),diagram:i?m.diagram:null,editing:t,nodeId:d,omitHead:u})}export{M as default,j as supportedKinds};
1
+ "use client";import{jsx as c}from"react/jsx-runtime";import h from"../SpecTable.js";import v from"./KindGate.js";import{useEuTyreLabels as A}from"../useEuTyreLabels.js";import{buildSpecSheet as E,sourceFromWheel as P}from"../../lib/wheels/spec-sheet.js";import{buildTyreSpecSheet as k}from"../../lib/tyres/spec-sheet.js";import{partVariant as L}from"../../lib/catalog/from-wheel.js";import{useCurrentProduct as V}from"../../lib/document/current-product.js";import{applySpecAnswers as b}from"../../lib/content/field-usage.js";import{useSampleProduct as _}from"./useSampleProduct.js";const j=["alloy-wheel","tyre"],G=[],I=[];function K(n,r,s){const i=n.variants??[];return(r?i.find(t=>t.sku===r):void 0)??(s?i.find(t=>t.size===s):void 0)??i[0]??null}function M(n){return c(v,{kinds:j,type:"SpecTable",editing:n.editing,children:c(N,{...n})})}function N({num:n,title:r,description:s,showDiagram:i=!0,editing:t=!1,nodeId:d,omitHead:u=!1}){const e=V(),w=_(t&&!e),a=e?.product??w,l=a?.kind==="tyre"?a.source:null,y=A(l?.variants??G),p=e?.fieldUsage??I;if(l){const f=K(l,e?.selection.part?.id,e?.selection.shown.size),g=y.find(z=>z.size===f?.size)??null,x=k({brand:l.brand,variant:f,euLabel:g});return c(h,{capped:!1,num:n,title:r,description:s,rows:b(x.rows,p),diagram:null,editing:t,nodeId:d,omitHead:u})}const o=a?.kind==="alloy-wheel"?a.source:null,S=e?e.selection.shown.finish:o?.finishes[0]?.name,T=e&&o?L(o,e.selection.part)?.size??void 0:void 0,m=o?E(P(o),S,T):{rows:[],diagram:null};return c(h,{capped:!1,num:n,title:r,description:s,rows:b(m.rows,p),diagram:i?m.diagram:null,editing:t,nodeId:d,omitHead:u})}export{M as default,j as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import d from"../SectionBand.js";import f from"efficient-web-builder/render/components/SectionHeader";import T,{BAND_INLINE as y,BAND_OWN_BOX as x,TYRE_FITMENT_DESCRIPTION as h,TYRE_FITMENT_TITLE as N}from"../TyreVehicleFitment.js";import _ from"./KindGate.js";import{useCurrentProduct as g}from"../../lib/puck/current-product.js";import{useSampleProduct as E}from"./useSampleProduct.js";import{say as I}from"efficient-web-builder/format/lib/editor-words";const v=["tyre"];function F(e){return t(_,{kinds:v,type:"TyreFitment",editing:e.editing,children:t(B,{...e})})}function B({num:e,title:i,description:s,escapeText:p,escapeHref:u,omitHead:n=!1,editing:o=!1}){const a=g(),m=E(o&&!a),c=a?.product??m,r=c?.kind==="tyre"?c.source:null;return!r||r.variants.length===0?o?l(d,{className:n?x:y,children:[n?null:t(f,{num:e,title:i||N,description:s||h,accent:!0}),t("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:I("The vehicle question appears here on a tyre product page, with one verdict per size.")})]}):null:t(T,{num:e,title:i||void 0,description:s||void 0,escapeText:p,escapeHref:u,omitHead:n,capped:!1,slug:r.slug,variants:r.variants})}export{F as default,v as supportedKinds};
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import d from"../SectionBand.js";import f from"efficient-web-builder/render/components/SectionHeader";import T,{BAND_INLINE as y,BAND_OWN_BOX as x,TYRE_FITMENT_DESCRIPTION as h,TYRE_FITMENT_TITLE as N}from"../TyreVehicleFitment.js";import _ from"./KindGate.js";import{useCurrentProduct as g}from"../../lib/document/current-product.js";import{useSampleProduct as E}from"./useSampleProduct.js";import{say as I}from"efficient-web-builder/format/lib/editor-words";const v=["tyre"];function F(e){return t(_,{kinds:v,type:"TyreFitment",editing:e.editing,children:t(B,{...e})})}function B({num:e,title:i,description:s,escapeText:p,escapeHref:u,omitHead:n=!1,editing:o=!1}){const a=g(),m=E(o&&!a),c=a?.product??m,r=c?.kind==="tyre"?c.source:null;return!r||r.variants.length===0?o?l(d,{className:n?x:y,children:[n?null:t(f,{num:e,title:i||N,description:s||h,accent:!0}),t("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:I("The vehicle question appears here on a tyre product page, with one verdict per size.")})]}):null:t(T,{num:e,title:i||void 0,description:s||void 0,escapeText:p,escapeHref:u,omitHead:n,capped:!1,slug:r.slug,variants:r.variants})}export{F as default,v as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as d}from"react/jsx-runtime";import m from"../SectionBand.js";import b from"../SectionFootnote.js";import h from"efficient-web-builder/render/components/SectionHeader";import S from"../TyreCard.js";import{useCurrency as N}from"../CurrencyContext.js";import{renderGold as l,renderHeadline as z}from"efficient-web-builder/render/components/goldPhrases";import T from"./KindGate.js";import{useCurrentProduct as _}from"../../lib/puck/current-product.js";import{TYRE_ILLUSTRATION_NOTE as k}from"../../lib/wheels/tyre-render.js";import{useSampleProduct as E}from"./useSampleProduct.js";import{say as A}from"efficient-web-builder/format/lib/editor-words";const u="border-b border-line py-[120px] max-[1100px]:py-20",f="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20",B=[],P=["tyre"];function U(t){return r(T,{kinds:P,type:"TyreSizes",editing:t.editing,children:r(j,{...t})})}function j({num:t,title:s,description:o,editing:i=!1,omitHead:e=!1}){const n=_(),x=E(i&&!n),p=n?.product??x,c=p?.kind==="tyre"?p.source.variants:[],a=e?null:r(h,{num:t?l(t):void 0,title:z(s||"Available *sizes.*",!1),description:l(o||"Every size this tyre is made in, with its own price and stock."),accent:!0});if(c.length===0)return i?d(m,{className:e?f:u,children:[a,r("p",{className:"border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:A("This product’s sizes appear here on a product page.")})]}):null;const y=c.some(g=>!g.image);return d(m,{className:e?f:u,children:[a,r(D,{variants:c,fieldUsage:n?.fieldUsage??B}),r(b,{text:y?k:""})]})}function D({variants:t,fieldUsage:s}){const{currency:o,formatPrice:i}=N();return r("div",{className:"grid grid-cols-3 gap-2 max-[1100px]:grid-cols-2 max-[720px]:grid-cols-1",children:t.map(e=>r(S,{fieldUsage:s,size:e.size,specs:e.specs,prices:e.prices,image:e.image,inStock:e.inStock,currency:o,formatPrice:i},e.sku))})}export{U as default,P as supportedKinds};
1
+ "use client";import{jsx as r,jsxs as d}from"react/jsx-runtime";import m from"../SectionBand.js";import b from"../SectionFootnote.js";import h from"efficient-web-builder/render/components/SectionHeader";import S from"../TyreCard.js";import{useCurrency as N}from"../CurrencyContext.js";import{renderGold as l,renderHeadline as z}from"efficient-web-builder/render/components/goldPhrases";import T from"./KindGate.js";import{useCurrentProduct as _}from"../../lib/document/current-product.js";import{TYRE_ILLUSTRATION_NOTE as k}from"../../lib/wheels/tyre-render.js";import{useSampleProduct as E}from"./useSampleProduct.js";import{say as A}from"efficient-web-builder/format/lib/editor-words";const u="border-b border-line py-[120px] max-[1100px]:py-20",f="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20",B=[],P=["tyre"];function U(t){return r(T,{kinds:P,type:"TyreSizes",editing:t.editing,children:r(j,{...t})})}function j({num:t,title:s,description:o,editing:i=!1,omitHead:e=!1}){const n=_(),x=E(i&&!n),p=n?.product??x,c=p?.kind==="tyre"?p.source.variants:[],a=e?null:r(h,{num:t?l(t):void 0,title:z(s||"Available *sizes.*",!1),description:l(o||"Every size this tyre is made in, with its own price and stock."),accent:!0});if(c.length===0)return i?d(m,{className:e?f:u,children:[a,r("p",{className:"border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:A("This product’s sizes appear here on a product page.")})]}):null;const y=c.some(g=>!g.image);return d(m,{className:e?f:u,children:[a,r(D,{variants:c,fieldUsage:n?.fieldUsage??B}),r(b,{text:y?k:""})]})}function D({variants:t,fieldUsage:s}){const{currency:o,formatPrice:i}=N();return r("div",{className:"grid grid-cols-3 gap-2 max-[1100px]:grid-cols-2 max-[720px]:grid-cols-1",children:t.map(e=>r(S,{fieldUsage:s,size:e.size,specs:e.specs,prices:e.prices,image:e.image,inStock:e.inStock,currency:o,formatPrice:i},e.sku))})}export{U as default,P as supportedKinds};
@@ -1 +1 @@
1
- "use client";import{jsx as m}from"react/jsx-runtime";import e from"./DynamicFitmentTable.js";import a from"../FitmentTable.js";import{useCurrentProduct as f}from"../../lib/puck/current-product.js";import{isEditorOnDynamicPage as s}from"efficient-web-builder/format/lib/puck/editor-page-context";import{fitmentTableIsDynamic as c}from"../../lib/puck/fitment-table-dynamic.js";import{getFitments as l}from"../../lib/wheels/fitments.js";function p({dynamic:r,wheel:t,omitHead:i=!1,...o}){const n=f()!==null||!!o.editing&&s();return c({dynamic:r,wheel:t},n)?m(e,{...o,omitHead:i}):m(a,{...o,omitHead:i,rows:l(typeof t=="string"?t:"")})}export{p as default};
1
+ "use client";import{jsx as m}from"react/jsx-runtime";import e from"./DynamicFitmentTable.js";import a from"../FitmentTable.js";import{useCurrentProduct as f}from"../../lib/document/current-product.js";import{isEditorOnDynamicPage as s}from"efficient-web-builder/format/lib/document/editor-page-context";import{fitmentTableIsDynamic as c}from"../../lib/document/fitment-table-dynamic.js";import{getFitments as l}from"../../lib/wheels/fitments.js";function p({dynamic:r,wheel:t,omitHead:i=!1,...o}){const n=f()!==null||!!o.editing&&s();return c({dynamic:r,wheel:t},n)?m(e,{...o,omitHead:i}):m(a,{...o,omitHead:i,rows:l(typeof t=="string"?t:"")})}export{p as default};
@@ -1 +1 @@
1
- "use client";import{Fragment as a,jsx as n}from"react/jsx-runtime";import l from"../SectionBand.js";import{SECTION_LABELS as c}from"efficient-web-builder/format/lib/puck/section-catalog";import{useCurrentProduct as d}from"../../lib/puck/current-product.js";import{PLP_KIND_LABELS as m}from"../../lib/catalog/plp-item.js";import{say as r}from"efficient-web-builder/format/lib/editor-words";function u({kinds:e,type:o,editing:i=!1,children:s}){const t=d();return!t||e.includes(t.product.kind)?n(a,{children:s}):i?n(l,{className:"border-b border-line py-14 max-[1100px]:py-10",children:n("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:r("{section} does not apply to {kind}. It is hidden on the live page.",{section:r(c[o]??o),kind:p(t.product.kind)})})}):null}function p(e){switch(e){case"alloy-wheel":return r("Alloy wheels");case"tyre":return r("Tyres");default:return m[e]}}export{u as default};
1
+ "use client";import{Fragment as a,jsx as n}from"react/jsx-runtime";import l from"../SectionBand.js";import{SECTION_LABELS as c}from"efficient-web-builder/format/lib/document/section-catalog";import{useCurrentProduct as d}from"../../lib/document/current-product.js";import{PLP_KIND_LABELS as m}from"../../lib/catalog/plp-item.js";import{say as r}from"efficient-web-builder/format/lib/editor-words";function u({kinds:e,type:o,editing:i=!1,children:s}){const t=d();return!t||e.includes(t.product.kind)?n(a,{children:s}):i?n(l,{className:"border-b border-line py-14 max-[1100px]:py-10",children:n("p",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:r("{section} does not apply to {kind}. It is hidden on the live page.",{section:r(c[o]??o),kind:p(t.product.kind)})})}):null}function p(e){switch(e){case"alloy-wheel":return r("Alloy wheels");case"tyre":return r("Tyres");default:return m[e]}}export{u as default};
@@ -1 +1 @@
1
- "use client";import{useEffect as s,useState as p}from"react";import{fromTyre as a}from"../../lib/catalog/from-tyre.js";import{fromWheel as u}from"../../lib/catalog/from-wheel.js";import{storefrontAdmin as d}from"../../lib/api/index.js";import{getEditorToken as E}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as P}from"efficient-web-builder/render/lib/editor-site";import{usePreviewProductSlug as h}from"../../lib/puck/preview-product.js";import{previewSlugFor as S,useCurrentPreviewPick as k}from"../../lib/puck/preview-pick.js";import{useTemplateProductKind as w}from"../../lib/puck/template-product-kind.js";import{PLACEHOLDER_TYRE as L}from"../../lib/tyres/placeholder-tyre.js";import{PLACEHOLDER_WHEEL as g}from"../../lib/wheels/placeholder-wheel.js";let c=null,m=null;const i=new Map;function v(e){const r=E(),t=P();(r!==c||t!==m)&&(c=r,m=t,i.clear());let o=i.get(e);return o||(o=r?d.getWheelDetail(r,e,{siteId:t}).catch(()=>null):Promise.resolve(null),i.set(e,o)),o}function T(e){return e==="tyre"?a(L):u(g)}const W=["alloy-wheel"];function A(e,r){return e?u(e):T(r)}function B(e){const r=S(k(),h()),t=w(),[o,n]=p(null);return s(()=>{if(!e||!r||!W.includes(t)){n(null);return}let l=!1;return v(r).then(f=>{l||n(f)}),()=>{l=!0}},[e,r,t]),e?A(o,t):null}export{W as PREVIEWABLE_KINDS,A as sampleProductFor,B as useSampleProduct};
1
+ "use client";import{useEffect as s,useState as p}from"react";import{fromTyre as a}from"../../lib/catalog/from-tyre.js";import{fromWheel as u}from"../../lib/catalog/from-wheel.js";import{storefrontAdmin as d}from"../../lib/api/index.js";import{getEditorToken as E}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as P}from"efficient-web-builder/render/lib/editor-site";import{usePreviewProductSlug as h}from"../../lib/document/preview-product.js";import{previewSlugFor as S,useCurrentPreviewPick as k}from"../../lib/document/preview-pick.js";import{useTemplateProductKind as w}from"../../lib/document/template-product-kind.js";import{PLACEHOLDER_TYRE as L}from"../../lib/tyres/placeholder-tyre.js";import{PLACEHOLDER_WHEEL as g}from"../../lib/wheels/placeholder-wheel.js";let c=null,m=null;const i=new Map;function v(e){const r=E(),t=P();(r!==c||t!==m)&&(c=r,m=t,i.clear());let o=i.get(e);return o||(o=r?d.getWheelDetail(r,e,{siteId:t}).catch(()=>null):Promise.resolve(null),i.set(e,o)),o}function T(e){return e==="tyre"?a(L):u(g)}const W=["alloy-wheel"];function A(e,r){return e?u(e):T(r)}function B(e){const r=S(k(),h()),t=w(),[o,n]=p(null);return s(()=>{if(!e||!r||!W.includes(t)){n(null);return}let l=!1;return v(r).then(f=>{l||n(f)}),()=>{l=!0}},[e,r,t]),e?A(o,t):null}export{W as PREVIEWABLE_KINDS,A as sampleProductFor,B as useSampleProduct};
@@ -1 +1 @@
1
- "use client";import{useEffect as l,useLayoutEffect as R,useRef as H,useState as m}from"react";import{HEADER_DRAWN_HEIGHT_VAR as v,HEADER_SET_HEIGHT_VAR as _}from"efficient-web-builder/render/lib/puck/header-clearance";import{fitHeaderToRow as w}from"../lib/header-fit.js";function z({stickyMode:u,heightPx:f}){const s=H(null),[E,b]=m(!1),[p,a]=m(!1);return l(()=>{const e=s.current?.ownerDocument?.defaultView??window,r=f;let n=e.scrollY;function o(){const t=e.scrollY;b(t>10),u==="on_scroll_up"&&(t<=r?a(!1):t>n+4?a(!0):t<n-4&&a(!1)),n=t}return o(),e.addEventListener("scroll",o,{passive:!0}),()=>e.removeEventListener("scroll",o)},[u,f]),l(()=>{u!=="on_scroll_up"&&a(!1)},[u]),l(()=>{const e=s.current?.ownerDocument?.documentElement;e&&e.style.setProperty(_,`${f}px`)},[f]),l(()=>{const e=s.current,r=e?.ownerDocument,n=r?.defaultView;if(!e||!r||!n)return;let o="";const t=d=>{const c=`${Math.round(d)}px`;c!==o&&(o=c,r.documentElement.style.setProperty(v,c),r.body?.style.setProperty(v,c))};if(typeof n.ResizeObserver!="function"){t(e.getBoundingClientRect().height);return}const i=new n.ResizeObserver(d=>{const c=d[0]?.borderBoxSize?.[0];t(c?c.blockSize:e.getBoundingClientRect().height)});return i.observe(e),()=>i.disconnect()},[]),l(()=>{const e=s.current?.ownerDocument?.documentElement;e&&e.setAttribute("data-header-sticky",u)},[u]),R(()=>{s.current&&w(s.current)}),l(()=>{const e=s.current,r=e?.ownerDocument,n=r?.defaultView;if(!e||!r||!n)return;let o=!0;const t=()=>{o&&w(e)};e.addEventListener("load",t,!0),r.fonts?.ready.then(t,()=>{});const i=typeof n.ResizeObserver=="function"?new n.ResizeObserver(t):null;return i?.observe(e),()=>{o=!1,e.removeEventListener("load",t,!0),i?.disconnect()}},[]),{headerRef:s,scrolled:E,navHidden:p}}export{z as useHeaderBar};
1
+ "use client";import{useEffect as l,useLayoutEffect as R,useRef as H,useState as m}from"react";import{HEADER_DRAWN_HEIGHT_VAR as v,HEADER_SET_HEIGHT_VAR as _}from"efficient-web-builder/render/lib/document/header-clearance";import{fitHeaderToRow as w}from"../lib/header-fit.js";function z({stickyMode:u,heightPx:f}){const s=H(null),[E,b]=m(!1),[p,a]=m(!1);return l(()=>{const e=s.current?.ownerDocument?.defaultView??window,r=f;let n=e.scrollY;function o(){const t=e.scrollY;b(t>10),u==="on_scroll_up"&&(t<=r?a(!1):t>n+4?a(!0):t<n-4&&a(!1)),n=t}return o(),e.addEventListener("scroll",o,{passive:!0}),()=>e.removeEventListener("scroll",o)},[u,f]),l(()=>{u!=="on_scroll_up"&&a(!1)},[u]),l(()=>{const e=s.current?.ownerDocument?.documentElement;e&&e.style.setProperty(_,`${f}px`)},[f]),l(()=>{const e=s.current,r=e?.ownerDocument,n=r?.defaultView;if(!e||!r||!n)return;let o="";const t=d=>{const c=`${Math.round(d)}px`;c!==o&&(o=c,r.documentElement.style.setProperty(v,c),r.body?.style.setProperty(v,c))};if(typeof n.ResizeObserver!="function"){t(e.getBoundingClientRect().height);return}const i=new n.ResizeObserver(d=>{const c=d[0]?.borderBoxSize?.[0];t(c?c.blockSize:e.getBoundingClientRect().height)});return i.observe(e),()=>i.disconnect()},[]),l(()=>{const e=s.current?.ownerDocument?.documentElement;e&&e.setAttribute("data-header-sticky",u)},[u]),R(()=>{s.current&&w(s.current)}),l(()=>{const e=s.current,r=e?.ownerDocument,n=r?.defaultView;if(!e||!r||!n)return;let o=!0;const t=()=>{o&&w(e)};e.addEventListener("load",t,!0),r.fonts?.ready.then(t,()=>{});const i=typeof n.ResizeObserver=="function"?new n.ResizeObserver(t):null;return i?.observe(e),()=>{o=!1,e.removeEventListener("load",t,!0),i?.disconnect()}},[]),{headerRef:s,scrolled:E,navHidden:p}}export{z as useHeaderBar};
@@ -1 +1 @@
1
- import{PREVIEW_TOKEN_HEADER as Y,SITE_HOST_HEADER as tt,SITE_SLUG_HEADER as et}from"../site-headers.js";import{PRODUCT_API_BASE as rt,PRODUCT_BACKEND_URL as k}from"./origins.js";import{backendHopHeaders as at,clientIpFromForwardedFor as st,FORWARDED_FOR_HEADER as nt,hopCachingOf as ot}from"../forwarded-for.js";import it from"efficient-web-builder/format/lib/puck/media-manifest.json";import{auth as P}from"../auth.js";import{efficientClientOpen as ct}from"efficient-easel/screen/lib/session";import{listableWheelSummaries as J}from"../wheels/listable-wheels.js";import{dropRenderlessFinishes as L}from"../wheels/renderable-finishes.js";const dt=process.env.NEXT_PUBLIC_API_URL??"http://localhost:8000";class m extends Error{status;data;constructor(e,s,o){super(s),this.status=e,this.data=o}}const _="Unable to reach the server. This could be a problem with your internet connection, or the server may be undergoing maintenance or an upgrade. Please try again shortly.",ut=new Set([502,503,504]),N=0,lt="This editor runs on its host's own backend, which does not serve this request.",pt=5e3,yt=15e3,ht=()=>typeof window>"u"?pt:yt;function D(t){const e=(t.method??"GET").toUpperCase();if(!(t.body!=null||e!=="GET"&&e!=="HEAD")&&!(t.audience!=null&&t.audience!=="shop")&&typeof AbortSignal?.timeout=="function")return AbortSignal.timeout(ht())}const x=t=>t instanceof Error&&t.name==="TimeoutError",H=(t,e)=>ut.has(t)?_:e,ft=["admin","venue"];let F="admin";function ae(t){F=ft.includes(t)?t:"admin"}function gt(){return F}const mt=/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$/;let M=null;function se(t){M=t&&mt.test(t)?t:null}function wt(){return M}function St(t){if(typeof window>"u"||!t.startsWith("/api/v1/"))return t;const e=j();return!e||/[?&]site=/.test(t)?t:C(t,`site=${encodeURIComponent(e)}`)}async function i(t,e={}){const{token:s,baseUrl:o,headers:l,audience:p,...w}=e;if(typeof window<"u"&&!ct())throw new m(N,lt,null);if(typeof window>"u"&&o===void 0)throw new Error(`apiFetch(${JSON.stringify(t)}) ran on the server without an explicit baseUrl. The API_URL default it would inherit is browser-only (the prod image bakes NEXT_PUBLIC_API_URL="" for same-origin use, which a Node fetch cannot resolve). Pass a base explicitly: \`await backendOpts()\` (or baseUrl: PRODUCT_FETCH_BASE) for product reads, or the server-only PRODUCT_BACKEND_URL env for other backend surfaces.`);const a=typeof FormData<"u"&&w.body instanceof FormData;let r;try{r=await fetch(`${o??dt}${St(t)}`,{...w,headers:{...a?{}:{"Content-Type":"application/json"},...s?{Authorization:`Bearer ${s}`}:{},...p===null?{}:{"X-Portal-Audience":p??"shop"},...l},signal:w.signal??D({...w,audience:p})})}catch(y){throw y instanceof TypeError||x(y)?new m(N,_,null):y}let n;try{n=await r.text()}catch(y){throw x(y)?new m(N,_,null):y}let c=null;if(n)try{c=JSON.parse(n)}catch{throw new m(r.status,r.ok?"Expected JSON but received a non-JSON response":H(r.status,r.statusText),n)}if(!r.ok){const y=(c&&typeof c=="object"&&"detail"in c&&typeof c.detail=="string"?c.detail:null)??H(r.status,r.statusText);throw new m(r.status,y,c)}return c}let O=null;async function B(){return O||(O=Pt().finally(()=>{O=null}),O)}async function Pt(){const t=P.takeLegacyRefresh(),e=await bt.refresh(t??void 0);return P.setTokens(e.access),e.access}async function q(){return P.getAccess()??B()}async function h(t,e={}){let s;try{s=await q()}catch{throw P.clear(),new m(401,"Not signed in",null)}try{return await i(t,{...e,token:s})}catch(o){if(!(o instanceof m)||o.status!==401)throw o;try{const l=await B();return await i(t,{...e,token:l})}catch{throw P.clear(),o}}}async function G(t,e={}){if(P.getAccess())try{return{data:await h(t,e),asShopper:!0}}catch(s){if(!(s instanceof m)||s.status!==401)throw s}return{data:await i(t,e),asShopper:!1}}async function W(){const t=await h("/api/auth/me/");if(t.portal!=="shop")throw P.clear(),new m(403,"This session is not valid for this shop.",null);return t}const bt={login:(t,e)=>i("/api/auth/login/",{method:"POST",body:JSON.stringify({email:t,password:e,portal:"shop"}),credentials:"include"}),refresh:t=>i("/api/auth/refresh/",{method:"POST",body:JSON.stringify(t?{refresh:t,portal:"shop"}:{portal:"shop"}),credentials:"include"}),logout:async()=>{P.clear();try{await i("/api/auth/logout/",{method:"POST",body:JSON.stringify({portal:"shop"}),credentials:"include"})}catch{}},restoreSession:async()=>{const t=await q();return await W(),t},me:W,updateMe:t=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify(t)}),changePassword:(t,e)=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify({password:e,old_password:t})}),changeEmail:(t,e)=>h("/api/shop-portal/change-email/",{method:"POST",body:JSON.stringify({new_email:t,current_password:e})}),myProfile:()=>h("/api/shop-portal/profile/"),updateMyProfile:t=>h("/api/shop-portal/profile/",{method:"PATCH",body:JSON.stringify(t)}),myAddresses:()=>h("/api/shop-portal/delivery-locations/"),createAddress:t=>h("/api/shop-portal/delivery-locations/",{method:"POST",body:JSON.stringify(t)}),updateAddress:(t,e)=>h(`/api/shop-portal/delivery-locations/${t}/`,{method:"PATCH",body:JSON.stringify(e)}),deleteAddress:t=>h(`/api/shop-portal/delivery-locations/${t}/`,{method:"DELETE"}),passwordResetRequest:t=>i("/api/auth/password-reset/",{method:"POST",body:JSON.stringify({email:t})}),passwordResetConfirm:(t,e,s)=>i("/api/auth/password-reset/confirm/",{method:"POST",body:JSON.stringify({uid:t,token:e,new_password:s})}),brands:()=>h("/api/products/brands/"),myOrders:()=>h("/api/shop-portal/orders/").then(t=>t.results),myOrder:t=>h(`/api/shop-portal/orders/${t}/`),cancelOrder:t=>h(`/api/shop-portal/orders/${t}/cancel/`,{method:"POST"}),myReturns:t=>h(`/api/shop-portal/returns/${t?`?order=${encodeURIComponent(t)}`:""}`).then(e=>e.results),createReturn:t=>h("/api/shop-portal/returns/",{method:"POST",body:JSON.stringify(t)}),withdrawReturn:t=>h(`/api/shop-portal/returns/${t}/cancel/`,{method:"POST"}),uploadReturnPhoto:(t,e)=>{const s=new FormData;return s.append("claim_item",t),s.append("file",e),s.append("media_type",e.type.startsWith("video/")?"video":"image"),h("/api/shop-portal/return-media/",{method:"POST",body:s})}};import{media as Ot,absolutizeApiUrl as v}from"efficient-web-builder/render/lib/media";import{analyzeLogoSvg as Tt,isSvgUrl as At}from"efficient-web-builder/format/lib/logo/reverse-svg";import{getEditorSiteId as Rt}from"efficient-web-builder/render/lib/editor-site";import{shopRouteBase as Et,webRuntimeSiteSlug as j}from"efficient-web-builder/format/lib/web-runtime";function g(t){if(typeof t=="string")return t.startsWith("/media/")?Ot(t):t;if(Array.isArray(t))return t.map(g);if(t&&typeof t=="object"){const e={};for(const[s,o]of Object.entries(t))e[s]=s==="captions"&&o&&typeof o=="object"&&!Array.isArray(o)?Object.fromEntries(Object.entries(o).map(([l,p])=>[g(l),p])):g(o);return e}return t}import{PRODUCT_API_BASE as ge}from"./origins.js";const z=typeof window>"u"&&k!=="",Ct=z?k:rt,$t=Et,b=()=>({baseUrl:$t(),audience:null});function d(t,e){const s=e?`?process=${encodeURIComponent(e)}`:"";return`/api/v1${t}${s}`}const Ut=100,K=50;function V(t,e,s){const o=new URLSearchParams;for(const[l,p]of Object.entries(e))p!=null&&p!==""&&o.set(l,String(p));return o.set("pageSize",String(Ut)),s&&o.set("cursor",s),`/api/v1${t}?${o.toString()}`}function _t(t,e){return V("/wheels",{process:t},e)}function Nt(t,e,s){return V("/products",{kind:t.join(","),make:e?.make,model:e?.model,year:e?.year,modification:e?.modification},s)}function vt(t){if(!t)return null;try{return new URL(t,"http://cursor.invalid").searchParams.get("cursor")}catch{return null}}async function X(t,e,s=()=>!1){const o=[];let l=null;try{for(let p=0;p<K;p++){const w=await i(await e(l),await u());if(o.push(...w.results),l=vt(w.next),!l)break}l&&console.warn(`[${t}] stopped at ${K} pages (${o.length} rows); catalog may be truncated`)}catch(p){if(s(p))throw p;console.warn(`[${t}] product API unavailable, returning []`,p)}return o}const It=t=>t instanceof m&&t.status===400;function kt(t){return t.flatMap(e=>e.kind==="alloy-wheel"?J([e]):[e])}async function Z(){return(await Jt()).host}async function Jt(){try{const{headers:t}=await import("next/headers"),e=await t(),s=p=>p?.split(",")[0]?.split(":")[0]?.trim().toLowerCase()||null,o=s(e.get(tt)??e.get("x-forwarded-host")??e.get("host")),l=s(e.get("host"));return{host:o,matchesRequestHost:o!==null&&o===l}}catch{return{host:null,matchesRequestHost:!1}}}async function Lt(){try{const{headers:t}=await import("next/headers");return st((await t()).get(nt))}catch{return null}}async function Dt(){try{const{headers:t}=await import("next/headers");return(await t()).get(et)||null}catch{return null}}async function xt(){const t=await Dt();if(t)return`site=${encodeURIComponent(t)}`;const e=await Z();return e?`host=${encodeURIComponent(e)}`:""}async function f(t){if(typeof window<"u"){const e=j();return e?C(t,`site=${encodeURIComponent(e)}`):t}return C(t,await xt())}function C(t,e){return e?`${t}${t.includes("?")?"&":"?"}${e}`:t}const Ht="preview";async function Ft(){if(typeof window<"u")return null;try{const{headers:t}=await import("next/headers");return(await t()).get(Y)}catch{return null}}async function Mt(){try{const{headers:t}=await import("next/headers");return(await t()).get("user-agent")}catch{return null}}async function I(t,e){const s=await Ft();if(s===null)return[await f(t),await u(e)];const o=C(await f(t),`${Ht}=${encodeURIComponent(s)}`),{next:l,cache:p,...w}=e??{},a=await u({...w,cache:"no-store"}),r=await Mt();return r&&(a.headers={...a.headers,"user-agent":r}),[o,a]}async function Bt(t){if(!z)return;const[e,s]=await Promise.all([Z(),Lt()]),o=at(e,s,t);return Object.keys(o).length>0?o:void 0}async function u(t){const e=await Bt(ot(t)),s={baseUrl:Ct,...t};return e&&(s.headers={...e,...t?.headers}),s}const T=typeof window>"u";function A(t,e){const s=new URLSearchParams;for(const[l,p]of Object.entries(e))p!==void 0&&p!==""&&s.set(l,String(p));const o=s.toString();return`/api/v1/fitment${t}${o?`?${o}`:""}`}const de={listMakes:async t=>{if(T){const{fitmentData:s}=await import("./fitment-data.js");return s.makes(t)}return(await i(A("/makes",{region:t}),b())).results},listModels:async(t,e)=>{if(T){const{fitmentData:o}=await import("./fitment-data.js");return o.models(t,e)}return(await i(A("/models",{make:t,region:e}),b())).results},listYears:async(t,e,s)=>{if(T){const{fitmentData:l}=await import("./fitment-data.js");return l.years(t,e,s)}return(await i(A("/years",{make:t,model:e,region:s}),b())).results},listModifications:async(t,e,s,o)=>{if(T){const{fitmentData:p}=await import("./fitment-data.js");return p.modifications(t,e,s,o)}return(await i(A("/modifications",{make:t,model:e,year:s,region:o}),b())).results},getStockFitment:async(t,e,s,o,l)=>{if(T){const{fitmentData:p}=await import("./fitment-data.js");return p.stockFitment(t,e,s,o,l)}return i(A("/stock-fitment",{make:t,model:e,year:s,modification:o,region:l}),b())}},ue={listWheels:async t=>{const e=await X("products.listWheels",async s=>await f(_t(t,s)));return J(g(e))},listCatalog:async(t,e)=>{if(t.length===0)throw new Error("products.listCatalog() needs at least one kind. An empty list would omit `kind`, which the contract reads as `alloy-wheel` — so the call would silently return the wheel catalog instead of nothing.");const s=await X("products.listCatalog",async o=>await f(Nt(t,e,o)),It);return kt(g(s))},getWheel:async t=>L(g(await i(await f(d(`/wheels/${t}`)),await u()))),getTyre:async t=>g(await i(await f(d(`/tyres/${t}`)),await u())),listBundles:async()=>{try{return await i(await f(d("/bundles")),await u())}catch{return[]}},getBundle:async t=>i(await f(d(`/bundles/${t}`)),await u()),listGalleryBuilds:async(t={})=>{const{process:e=null,wheelSlug:s=null}=t;if(typeof window>"u"){const{listGalleryBuilds:o}=await import("./gallery-builds-data.js");return g(o(e,s))}try{const o=new URLSearchParams;e&&o.set("process",e),s&&o.set("wheelSlug",s);const l=o.toString(),p=await i(`/api/v1/gallery-builds${l?`?${l}`:""}`,b());return g(p.results)}catch(o){return console.warn("[products.listGalleryBuilds] product API unavailable, returning []",o),[]}},getSite:async()=>i(await f(d("/site")),await u()),getSiteBySlug:async t=>i(`${d("/site")}?${new URLSearchParams({site:t})}`,typeof window>"u"?await u():void 0),listPages:async()=>g(await i(await f(d("/pages")),await u())),listPopups:async()=>i(await f(d("/popups")),await u()),listProductTemplates:async()=>{try{return await i(await f(d("/product-templates")),await u())}catch(t){return console.warn("[products.listProductTemplates] unavailable, returning []",t),[]}},listDynamicPages:async t=>{const e=t?`?recordType=${encodeURIComponent(t)}`:"";try{return await i(await f(`${d("/dynamic-pages")}${e}`),await u())}catch(s){if(s instanceof m&&s.status===404)return[];throw s}},getRecord:async(t,e)=>{try{return await i(await f(d(`/records/${encodeURIComponent(t)}/${encodeURIComponent(e)}`)),await u())}catch(s){if(s instanceof m&&s.status===404)return null;throw s}},listRecordKeys:async t=>{try{const e=await i(await f(d(`/records/${encodeURIComponent(t)}`)),await u({cache:"no-store"}));return Array.isArray(e?.keys)?e.keys.filter(s=>typeof s=="string"&&s!==""):[]}catch(e){if(e instanceof m&&e.status===404)return[];throw e}},listProductTypeChoices:async()=>{try{return await i(await f(d("/product-type-choices")),await u())}catch(t){return console.warn("[products.listProductTypeChoices] unavailable, returning []",t),[]}},listFieldUsage:async()=>{try{return await i(await f(d("/field-usage")),await u())}catch(t){return console.warn("[products.listFieldUsage] unavailable, returning []",t),[]}},getPage:async(t,e={})=>{const s=e.record?`?record=${encodeURIComponent(e.record)}`:"",[o,l]=await I(d(`/pages/${t}`)+s,e.revalidate!==void 0?{next:{revalidate:e.revalidate}}:void 0);return g(await i(o,l))},listBlogPosts:async(t={})=>{const e=t.category?`?category=${encodeURIComponent(t.category)}`:"";try{return(await i(d("/blog-posts")+e,await u())).map(o=>({...o,coverImage:v(o.coverImage)??""}))}catch(s){return console.warn("[products.listBlogPosts] blog API unavailable, returning []",s),[]}},getBlogPost:async t=>{const e=await i(d(`/blog-posts/${t}`),await u());return{...e,coverImage:v(e.coverImage)??""}},createOrder:async t=>i(d("/orders"),await u({method:"POST",body:JSON.stringify(t)})),createOrderAuthed:async t=>h(d("/orders"),await u({method:"POST",body:JSON.stringify(t)})),lookupOrder:async t=>i(d("/orders/lookup"),await u({method:"POST",body:JSON.stringify(t)})),createPaymentIntent:async t=>i(d("/payments/intent"),await u({method:"POST",body:JSON.stringify(t)})),createPaypalOrder:async t=>i(d("/payments/paypal/order"),await u({method:"POST",body:JSON.stringify(t)})),capturePaypalOrder:async t=>i(d("/payments/paypal/capture"),await u({method:"POST",body:JSON.stringify(t)})),createAfterpayCheckout:async t=>i(d("/payments/afterpay/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureAfterpayPayment:async t=>i(d("/payments/afterpay/capture"),await u({method:"POST",body:JSON.stringify(t)})),chargeSquare:async t=>i(d("/payments/square/charge"),await u({method:"POST",body:JSON.stringify(t)})),createGocardlessBillingRequest:async t=>i(d("/payments/gocardless/billing-request"),await u({method:"POST",body:JSON.stringify(t)})),completeGocardlessPayment:async t=>i(d("/payments/gocardless/complete"),await u({method:"POST",body:JSON.stringify(t)})),createZipCheckout:async t=>i(d("/payments/zip/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureZipPayment:async t=>i(d("/payments/zip/capture"),await u({method:"POST",body:JSON.stringify(t)})),createKlarnaCheckout:async t=>i(d("/payments/klarna/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureKlarnaPayment:async t=>i(d("/payments/klarna/capture"),await u({method:"POST",body:JSON.stringify(t)})),createStockAlert:async t=>i(d("/stock-alerts"),await u({method:"POST",body:JSON.stringify(t)})),createPreOrderIntent:async t=>i(d("/pre-order-intents"),await u({method:"POST",body:JSON.stringify(t)})),createNewsletterSubscription:async t=>i(d("/newsletter-subscriptions"),await u({method:"POST",body:JSON.stringify(t)})),unsubscribeNewsletter:async t=>i(d("/newsletter-unsubscribe"),await u({method:"POST",body:JSON.stringify(t)})),captureCart:async t=>i(d("/carts"),await u({method:"POST",body:JSON.stringify(t)})),restoreCart:async t=>i(d("/carts/restore"),await u({method:"POST",body:JSON.stringify(t)})),unsubscribeCartReminders:async t=>i(d("/carts/unsubscribe"),await u({method:"POST",body:JSON.stringify(t)})),listReviews:async(t={})=>{const e=new URLSearchParams;t.limit&&e.set("limit",String(t.limit)),t.designCode&&e.set("designCode",t.designCode);const s=d("/reviews"),o=e.toString();try{return await i(await f(o?`${s}?${o}`:s),await u())}catch(l){return console.warn("[products.listReviews] product API unavailable, returning []",l),[]}},submitReview:async t=>i(d("/reviews"),await u({method:"POST",body:JSON.stringify(t)})),getForm:async t=>i(d(`/forms/${encodeURIComponent(t)}`),await u()),submitForm:async(t,e)=>i(d(`/forms/${encodeURIComponent(t)}/submissions`),await u({method:"POST",body:JSON.stringify(e)})),listShippingMethods:async()=>{try{return await i(d("/shipping-methods"),await u())}catch(t){return console.warn("[products.listShippingMethods] product API unavailable, returning []",t),[]}},listCountrySubdivisions:async t=>{try{return await i(d(`/countries/${encodeURIComponent(t)}/subdivisions`),await u())}catch(e){return console.warn("[products.listCountrySubdivisions] unavailable, returning []",e),[]}},quoteCart:async t=>{const e=d("/cart/quote"),s=await u({method:"POST",body:JSON.stringify(t)});return t.couponCode?(await G(e,s)).data:i(e,s)},validateCoupon:async t=>{const{data:e,asShopper:s}=await G(d("/coupons/validate"),await u({method:"POST",body:JSON.stringify(t)}));return{...e,askedAsShopper:s}},getHeaderSettings:async()=>{const t=D({method:"GET"}),e=await i(...await I(d("/header-settings"),{signal:t})),s=v(e.logoUrl);let o=null,l=null;if(s&&At(s)){const p=await Tt(s,t);p&&(o=p.reversed,l=p.inkIsDark)}return{...e,logoUrl:s,logoReversed:o,logoInkIsDark:l}},getThemeSettings:async()=>i(...await I(d("/theme-settings"))),getChatSettings:async()=>i(await f(d("/chat-settings")),await u())},le={listServices:async()=>{try{return await i(d("/bookings/services"),await u())}catch(t){return console.warn("[bookings.listServices] API unavailable, returning []",t),{results:[],currency:"USD"}}},getAvailability:async(t,e)=>i(d(`/bookings/availability?service=${encodeURIComponent(t)}&date=${e}`),await u()),create:async t=>i(d("/bookings"),await u({method:"POST",body:JSON.stringify(t)})),get:async t=>i(d(`/bookings/manage/${encodeURIComponent(t)}`),await u()),cancel:async t=>i(d(`/bookings/manage/${encodeURIComponent(t)}/cancel`),await u({method:"POST"})),createPaymentIntent:async t=>i(d("/bookings/payments/intent"),await u({method:"POST",body:JSON.stringify({manageToken:t})}))};class qt extends Error{slug;count;constructor(e,s){super(`Slug "${e}" exists on ${s} websites; a site is required to pick one.`),this.slug=e,this.count=s,this.name="AmbiguousPageSlugError"}}const $=(t,e,s)=>{const o=new URLSearchParams({...e?{site:e}:{},...s?{draft:"1"}:{}}).toString();return`/api/storefront/${t}/${o?`?${o}`:""}`},R=t=>`/api/storefront/sites/${encodeURIComponent(t)}/`,Gt=t=>`${R(t)}currencies/`,Wt="/api/storefront/media/ingest/";class jt extends Error{constructor(){super("This editor is not connected to a website, so an upload has nowhere to go. Open the page from the website the file should belong to, then try again."),this.name="MediaUploadDestinationError"}}function zt(){const t=Rt();if(!t)throw new jt;return`${Wt}?${new URLSearchParams({site:t})}`}const U={"X-Puck-Media-Manifest":it.contentHash},pe=Q({});function Q(t){return(e,s={})=>{const o=wt(),l=t.headers||o?{...o?{"Accept-Language":o}:{},...t.headers,...s.headers}:void 0;return i(e,{...s,...t.baseUrl!==void 0?{baseUrl:t.baseUrl}:{},...l?{headers:l}:{},audience:t.audience??gt()})}}function Kt(t={}){const e=Q(t),s=t.siteDrafts===!0,o=a=>$("header-settings",a,s),l=a=>$("theme-settings",a,s),p=a=>$("chat-settings",a,s),w=a=>$("social-settings",a,s);return{findPageBySlug:async(a,r,n)=>{const c=new URLSearchParams({slug:a});n&&c.set("site",n);const y=await e(`/api/storefront/pages/?${c.toString()}`,{token:r}),S=Array.isArray(y)?y:y.results??[];if(!n&&S.length>1)throw new qt(a,S.length);return S[0]??null},getPageById:(a,r)=>e(`/api/storefront/pages/${a}/`,{token:r}),saveLayout:(a,r,n,c,y)=>e(`/api/storefront/pages/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r,expected_updated_at:c,...y?{client_id:y}:{}}),token:n}),duplicatePage:(a,r,n)=>e(`/api/storefront/pages/${a}/duplicate/`,{method:"POST",body:JSON.stringify({title:r.title,slug:r.slug}),token:n}),geocode:(a,r,n)=>e(`/api/storefront/geocode/?${new URLSearchParams(n?{q:a,country:n}:{q:a})}`,{token:r}),listBlockSources:a=>e("/api/storefront/block-sources/",{token:a}),listRecordTypes:a=>e("/api/storefront/record-types/",{token:a}),createPagePreviewLink:(a,r)=>e(`/api/storefront/pages/${a}/preview-link/`,{method:"POST",token:r}),claimPageEditLock:(a,r,n,c=!1)=>e(`/api/storefront/pages/${a}/edit-lock/`,{method:"POST",body:JSON.stringify({client_id:n,takeover:c}),token:r}),releasePageEditLock:(a,r)=>e(`/api/storefront/pages/${a}/edit-lock/`,{method:"DELETE",token:r}),createTemplate:(a,r,n)=>e("/api/storefront/page-templates/",{method:"POST",body:JSON.stringify({name:a,layout:r}),headers:U,token:n}),getTemplate:(a,r)=>e(`/api/storefront/page-templates/${a}/`,{token:r}),saveTemplateLayout:(a,r,n)=>e(`/api/storefront/page-templates/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r}),headers:U,token:n}),listTemplatePages:async(a,r)=>{const n=await e(`/api/storefront/template-pages/?template=${encodeURIComponent(a)}`,{token:r});return Array.isArray(n)?n:n.results??[]},findTemplatePageBySlug:async(a,r,n)=>{const c=await e(`/api/storefront/template-pages/?template=${encodeURIComponent(a)}&slug=${encodeURIComponent(r)}`,{token:n});return(Array.isArray(c)?c:c.results??[])[0]??null},createTemplatePage:(a,r,n)=>e("/api/storefront/template-pages/",{method:"POST",body:JSON.stringify({template:a,...r}),headers:U,token:n}),saveTemplatePageLayout:(a,r,n)=>e(`/api/storefront/template-pages/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r}),headers:U,token:n}),deleteTemplatePage:(a,r,n)=>e(`/api/storefront/template-pages/${a}/`,{method:"DELETE",token:r,...n?.keepalive?{keepalive:!0}:{}}),listPages:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("site",r);const c=await e(`/api/storefront/pages/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]},createPage:(a,r,n,c)=>e("/api/storefront/pages/",{method:"POST",body:JSON.stringify({title:a,slug:r,layout:n}),token:c}),deletePage:(a,r)=>e(`/api/storefront/pages/${a}/`,{method:"DELETE",token:r}),getHeaderSettings:(a,r)=>e(o(r),{token:a}),listMenus:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("site",r);const c=await e(`/api/storefront/menus/?${n}`,{token:a});return Array.isArray(c)?c:c.results??[]},listBlogPosts:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.visibleOnly&&n.set("is_visible","true"),r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/blog-posts/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]},listFieldUsage:async(a,r)=>{const n=await e(`/api/storefront/field-usage/?site=${encodeURIComponent(r)}`,{token:a});return Array.isArray(n?.entries)?n.entries:[]},listCategories:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.visibleOnly&&n.set("is_visible","true"),r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/categories/?${n.toString()}`,{token:a});return[...Array.isArray(c)?c:c.results??[]].sort((S,E)=>S.sort_order-E.sort_order||S.name.localeCompare(E.name))},listForms:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/forms/?${n.toString()}`,{token:a});return[...Array.isArray(c)?c:c.results??[]].sort((S,E)=>S.title.localeCompare(E.title))},listWheelSummaries:async(a,r={})=>{const n=new URLSearchParams;r.siteId&&n.set("site",r.siteId);const c=n.toString(),y=await e(`/api/storefront/wheel-curations/summaries/${c?`?${c}`:""}`,{token:a});return g(y)},listProducts:async(a,r={})=>{const n=new URLSearchParams;r.kinds?.length&&n.set("kind",r.kinds.join(",")),r.siteId&&n.set("site",r.siteId);const c=n.toString(),y=await e(`/api/storefront/products/${c?`?${c}`:""}`,{token:a});return g(y)},getWheelDetail:async(a,r,n={})=>{const c=new URLSearchParams({slug:r});return n.siteId&&c.set("site",n.siteId),L(g(await e(`/api/storefront/wheel-curations/detail/?${c.toString()}`,{token:a})))},updateHeaderSettings:(a,r,n)=>e(o(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getSite:(a,r)=>e(R(a),{token:r}),listSites:async a=>{const r=await e("/api/storefront/sites/?no_page=true",{token:a});return Array.isArray(r)?r:r.results??[]},listSiteCurrencies:async(a,r)=>{const n=await e(Gt(a),{token:r});return Array.isArray(n)?n:[]},publishSite:(a,r)=>e(`${R(a)}publish/`,{method:"POST",token:r}),getSiteLiveState:(a,r)=>e(`${R(a)}live-state/`,{token:r}),updateSite:(a,r,n)=>e(R(a),{method:"PATCH",body:JSON.stringify(r),token:n}),getThemeSettings:(a,r)=>e(l(r),{token:a}),updateThemeSettings:(a,r,n)=>e(l(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getChatSettings:(a,r)=>e(p(r),{token:a}),updateChatSettings:(a,r,n)=>e(p(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getSocialSettings:(a,r)=>e(w(r),{token:a}),updateSocialSettings:(a,r,n)=>e(w(n),{method:"PATCH",body:JSON.stringify(a),token:r}),uploadHeaderLogo:(a,r,n)=>{const c=new FormData;return c.append("logo",a),e(o(n),{method:"PATCH",body:c,token:r})},clearHeaderLogo:(a,r)=>e(o(r),{method:"PATCH",body:JSON.stringify({logo:null}),token:a}),setHeaderLogoFromAsset:(a,r,n)=>e(o(n),{method:"PATCH",body:JSON.stringify({logo_asset_id:a}),token:r}),uploadMedia:async(a,r)=>{const n=new FormData;return n.append("file",a),e(zt(),{method:"POST",body:n,token:r})},listMedia:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("kind",r);const c=await e(`/api/storefront/media-assets/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]}}}const ye=Kt({siteDrafts:!0});export{dt as API_URL,qt as AmbiguousPageSlugError,m as ApiError,yt as BROWSER_READ_TIMEOUT_MS,lt as EFFICIENT_CLIENT_CLOSED_MESSAGE,jt as MediaUploadDestinationError,Ht as PREVIEW_PARAM,ge as PRODUCT_API_BASE,pt as SERVER_READ_TIMEOUT_MS,_ as SERVER_UNREACHABLE_MESSAGE,N as STATUS_NETWORK_ERROR,pe as adminFetch,bt as api,i as apiFetch,C as appendSiteQuery,le as bookings,Kt as createStorefrontAdmin,D as defaultRequestDeadline,zt as editorMediaUploadPath,gt as editorPortalAudience,wt as editorRequestLanguage,de as fitment,ue as products,ht as readDeadlineMs,Lt as resolveClientIp,g as resolveMediaUrls,Ft as resolvePreviewToken,Z as resolveSiteHost,Jt as resolveSiteHostSource,Dt as resolveSiteSlug,se as setEditorLanguage,ae as setEditorPortalAudience,ye as storefrontAdmin};
1
+ import{PREVIEW_TOKEN_HEADER as tt,SITE_HOST_HEADER as et,SITE_SLUG_HEADER as rt}from"../site-headers.js";import{PRODUCT_API_BASE as at,PRODUCT_BACKEND_URL as k}from"./origins.js";import{backendHopHeaders as st,clientIpFromForwardedFor as nt,FORWARDED_FOR_HEADER as ot,hopCachingOf as it}from"../forwarded-for.js";import ct from"efficient-web-builder/format/lib/document/media-manifest.json";import{auth as P}from"../auth.js";import{efficientClientOpen as dt}from"efficient-easel/screen/lib/session";import{listableWheelSummaries as J}from"../wheels/listable-wheels.js";import{dropRenderlessFinishes as L}from"../wheels/renderable-finishes.js";const ut=process.env.NEXT_PUBLIC_API_URL??"http://localhost:8000";class m extends Error{status;data;constructor(e,s,o){super(s),this.status=e,this.data=o}}const U="Unable to reach the server. This could be a problem with your internet connection, or the server may be undergoing maintenance or an upgrade. Please try again shortly.",lt=new Set([502,503,504]),I=0,pt="This editor runs on its host's own backend, which does not serve this request.",yt=5e3,ht=15e3,ft=()=>typeof window>"u"?yt:ht;function D(t){const e=(t.method??"GET").toUpperCase();if(!(t.body!=null||e!=="GET"&&e!=="HEAD")&&!(t.audience!=null&&t.audience!=="shop")&&typeof AbortSignal?.timeout=="function")return AbortSignal.timeout(ft())}const x=t=>t instanceof Error&&t.name==="TimeoutError",H=(t,e)=>lt.has(t)?U:e,gt=["admin","venue"];let M="admin";function ne(t){M=gt.includes(t)?t:"admin"}function mt(){return M}const wt=/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$/;let F=null;function oe(t){F=t&&wt.test(t)?t:null}function St(){return F}function Pt(t){if(typeof window>"u"||!t.startsWith("/api/v1/"))return t;const e=j();return!e||/[?&]site=/.test(t)?t:C(t,`site=${encodeURIComponent(e)}`)}async function i(t,e={}){const{token:s,baseUrl:o,headers:l,audience:p,...w}=e;if(typeof window<"u"&&!dt())throw new m(I,pt,null);if(typeof window>"u"&&o===void 0)throw new Error(`apiFetch(${JSON.stringify(t)}) ran on the server without an explicit baseUrl. The API_URL default it would inherit is browser-only (the prod image bakes NEXT_PUBLIC_API_URL="" for same-origin use, which a Node fetch cannot resolve). Pass a base explicitly: \`await backendOpts()\` (or baseUrl: PRODUCT_FETCH_BASE) for product reads, or the server-only PRODUCT_BACKEND_URL env for other backend surfaces.`);const a=typeof FormData<"u"&&w.body instanceof FormData;let r;try{r=await fetch(`${o??ut}${Pt(t)}`,{...w,headers:{...a?{}:{"Content-Type":"application/json"},...s?{Authorization:`Bearer ${s}`}:{},...p===null?{}:{"X-Portal-Audience":p??"shop"},...l},signal:w.signal??D({...w,audience:p})})}catch(y){throw y instanceof TypeError||x(y)?new m(I,U,null):y}let n;try{n=await r.text()}catch(y){throw x(y)?new m(I,U,null):y}let c=null;if(n)try{c=JSON.parse(n)}catch{throw new m(r.status,r.ok?"Expected JSON but received a non-JSON response":H(r.status,r.statusText),n)}if(!r.ok){const y=(c&&typeof c=="object"&&"detail"in c&&typeof c.detail=="string"?c.detail:null)??H(r.status,r.statusText);throw new m(r.status,y,c)}return c}let O=null;async function B(){return O||(O=bt().finally(()=>{O=null}),O)}async function bt(){const t=P.takeLegacyRefresh(),e=await Ot.refresh(t??void 0);return P.setTokens(e.access),e.access}async function q(){return P.getAccess()??B()}async function h(t,e={}){let s;try{s=await q()}catch{throw P.clear(),new m(401,"Not signed in",null)}try{return await i(t,{...e,token:s})}catch(o){if(!(o instanceof m)||o.status!==401)throw o;try{const l=await B();return await i(t,{...e,token:l})}catch{throw P.clear(),o}}}async function G(t,e={}){if(P.getAccess())try{return{data:await h(t,e),asShopper:!0}}catch(s){if(!(s instanceof m)||s.status!==401)throw s}return{data:await i(t,e),asShopper:!1}}async function W(){const t=await h("/api/auth/me/");if(t.portal!=="shop")throw P.clear(),new m(403,"This session is not valid for this shop.",null);return t}const Ot={login:(t,e)=>i("/api/auth/login/",{method:"POST",body:JSON.stringify({email:t,password:e,portal:"shop"}),credentials:"include"}),refresh:t=>i("/api/auth/refresh/",{method:"POST",body:JSON.stringify(t?{refresh:t,portal:"shop"}:{portal:"shop"}),credentials:"include"}),logout:async()=>{P.clear();try{await i("/api/auth/logout/",{method:"POST",body:JSON.stringify({portal:"shop"}),credentials:"include"})}catch{}},restoreSession:async()=>{const t=await q();return await W(),t},me:W,updateMe:t=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify(t)}),changePassword:(t,e)=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify({password:e,old_password:t})}),changeEmail:(t,e)=>h("/api/shop-portal/change-email/",{method:"POST",body:JSON.stringify({new_email:t,current_password:e})}),myProfile:()=>h("/api/shop-portal/profile/"),updateMyProfile:t=>h("/api/shop-portal/profile/",{method:"PATCH",body:JSON.stringify(t)}),myAddresses:()=>h("/api/shop-portal/delivery-locations/"),createAddress:t=>h("/api/shop-portal/delivery-locations/",{method:"POST",body:JSON.stringify(t)}),updateAddress:(t,e)=>h(`/api/shop-portal/delivery-locations/${t}/`,{method:"PATCH",body:JSON.stringify(e)}),deleteAddress:t=>h(`/api/shop-portal/delivery-locations/${t}/`,{method:"DELETE"}),passwordResetRequest:t=>i("/api/auth/password-reset/",{method:"POST",body:JSON.stringify({email:t})}),passwordResetConfirm:(t,e,s)=>i("/api/auth/password-reset/confirm/",{method:"POST",body:JSON.stringify({uid:t,token:e,new_password:s})}),brands:()=>h("/api/products/brands/"),myOrders:()=>h("/api/shop-portal/orders/").then(t=>t.results),myOrder:t=>h(`/api/shop-portal/orders/${t}/`),cancelOrder:t=>h(`/api/shop-portal/orders/${t}/cancel/`,{method:"POST"}),myReturns:t=>h(`/api/shop-portal/returns/${t?`?order=${encodeURIComponent(t)}`:""}`).then(e=>e.results),createReturn:t=>h("/api/shop-portal/returns/",{method:"POST",body:JSON.stringify(t)}),withdrawReturn:t=>h(`/api/shop-portal/returns/${t}/cancel/`,{method:"POST"}),uploadReturnPhoto:(t,e)=>{const s=new FormData;return s.append("claim_item",t),s.append("file",e),s.append("media_type",e.type.startsWith("video/")?"video":"image"),h("/api/shop-portal/return-media/",{method:"POST",body:s})}};import{media as At,absolutizeApiUrl as N}from"efficient-web-builder/render/lib/media";import{analyzeLogoSvg as Tt,isSvgUrl as Rt}from"efficient-web-builder/format/lib/logo/reverse-svg";import{getEditorSiteId as Et}from"efficient-web-builder/render/lib/editor-site";import{shopRouteBase as Ct,webRuntimeSiteSlug as j}from"efficient-web-builder/format/lib/web-runtime";function g(t){if(typeof t=="string")return t.startsWith("/media/")?At(t):t;if(Array.isArray(t))return t.map(g);if(t&&typeof t=="object"){const e={};for(const[s,o]of Object.entries(t))e[s]=s==="captions"&&o&&typeof o=="object"&&!Array.isArray(o)?Object.fromEntries(Object.entries(o).map(([l,p])=>[g(l),p])):g(o);return e}return t}import{PRODUCT_API_BASE as we}from"./origins.js";const z=typeof window>"u"&&k!=="",$t=z?k:at,_t=Ct,b=()=>({baseUrl:_t(),audience:null});function d(t,e){const s=e?`?process=${encodeURIComponent(e)}`:"";return`/api/v1${t}${s}`}const Ut=100,K=50;function V(t,e,s){const o=new URLSearchParams;for(const[l,p]of Object.entries(e))p!=null&&p!==""&&o.set(l,String(p));return o.set("pageSize",String(Ut)),s&&o.set("cursor",s),`/api/v1${t}?${o.toString()}`}function It(t,e){return V("/wheels",{process:t},e)}function Nt(t,e,s){return V("/products",{kind:t.join(","),make:e?.make,model:e?.model,year:e?.year,modification:e?.modification},s)}function vt(t){if(!t)return null;try{return new URL(t,"http://cursor.invalid").searchParams.get("cursor")}catch{return null}}async function X(t,e,s=()=>!1){const o=[];let l=null;try{for(let p=0;p<K;p++){const w=await i(await e(l),await u());if(o.push(...w.results),l=vt(w.next),!l)break}l&&console.warn(`[${t}] stopped at ${K} pages (${o.length} rows); catalog may be truncated`)}catch(p){if(s(p))throw p;console.warn(`[${t}] product API unavailable, returning []`,p)}return o}const kt=t=>t instanceof m&&t.status===400;function Jt(t){return t.flatMap(e=>e.kind==="alloy-wheel"?J([e]):[e])}async function Z(){return(await Lt()).host}async function Lt(){try{const{headers:t}=await import("next/headers"),e=await t(),s=p=>p?.split(",")[0]?.split(":")[0]?.trim().toLowerCase()||null,o=s(e.get(et)??e.get("x-forwarded-host")??e.get("host")),l=s(e.get("host"));return{host:o,matchesRequestHost:o!==null&&o===l}}catch{return{host:null,matchesRequestHost:!1}}}async function Dt(){try{const{headers:t}=await import("next/headers");return nt((await t()).get(ot))}catch{return null}}async function xt(){try{const{headers:t}=await import("next/headers");return(await t()).get(rt)||null}catch{return null}}async function Ht(){const t=await xt();if(t)return`site=${encodeURIComponent(t)}`;const e=await Z();return e?`host=${encodeURIComponent(e)}`:""}async function f(t){if(typeof window<"u"){const e=j();return e?C(t,`site=${encodeURIComponent(e)}`):t}return C(t,await Ht())}function C(t,e){return e?`${t}${t.includes("?")?"&":"?"}${e}`:t}const Mt="preview";async function Ft(){if(typeof window<"u")return null;try{const{headers:t}=await import("next/headers");return(await t()).get(tt)}catch{return null}}async function Bt(){try{const{headers:t}=await import("next/headers");return(await t()).get("user-agent")}catch{return null}}async function v(t,e){const s=await Ft();if(s===null)return[await f(t),await u(e)];const o=C(await f(t),`${Mt}=${encodeURIComponent(s)}`),{next:l,cache:p,...w}=e??{},a=await u({...w,cache:"no-store"}),r=await Bt();return r&&(a.headers={...a.headers,"user-agent":r}),[o,a]}async function qt(t){if(!z)return;const[e,s]=await Promise.all([Z(),Dt()]),o=st(e,s,t);return Object.keys(o).length>0?o:void 0}async function u(t){const e=await qt(it(t)),s={baseUrl:$t,...t};return e&&(s.headers={...e,...t?.headers}),s}const A=typeof window>"u";function T(t,e){const s=new URLSearchParams;for(const[l,p]of Object.entries(e))p!==void 0&&p!==""&&s.set(l,String(p));const o=s.toString();return`/api/v1/fitment${t}${o?`?${o}`:""}`}const le={listMakes:async t=>{if(A){const{fitmentData:s}=await import("./fitment-data.js");return s.makes(t)}return(await i(T("/makes",{region:t}),b())).results},listModels:async(t,e)=>{if(A){const{fitmentData:o}=await import("./fitment-data.js");return o.models(t,e)}return(await i(T("/models",{make:t,region:e}),b())).results},listYears:async(t,e,s)=>{if(A){const{fitmentData:l}=await import("./fitment-data.js");return l.years(t,e,s)}return(await i(T("/years",{make:t,model:e,region:s}),b())).results},listModifications:async(t,e,s,o)=>{if(A){const{fitmentData:p}=await import("./fitment-data.js");return p.modifications(t,e,s,o)}return(await i(T("/modifications",{make:t,model:e,year:s,region:o}),b())).results},getStockFitment:async(t,e,s,o,l)=>{if(A){const{fitmentData:p}=await import("./fitment-data.js");return p.stockFitment(t,e,s,o,l)}return i(T("/stock-fitment",{make:t,model:e,year:s,modification:o,region:l}),b())}},pe={listWheels:async t=>{const e=await X("products.listWheels",async s=>await f(It(t,s)));return J(g(e))},listCatalog:async(t,e)=>{if(t.length===0)throw new Error("products.listCatalog() needs at least one kind. An empty list would omit `kind`, which the contract reads as `alloy-wheel` — so the call would silently return the wheel catalog instead of nothing.");const s=await X("products.listCatalog",async o=>await f(Nt(t,e,o)),kt);return Jt(g(s))},getWheel:async t=>L(g(await i(await f(d(`/wheels/${t}`)),await u()))),getTyre:async t=>g(await i(await f(d(`/tyres/${t}`)),await u())),listBundles:async()=>{try{return await i(await f(d("/bundles")),await u())}catch{return[]}},getBundle:async t=>i(await f(d(`/bundles/${t}`)),await u()),listGalleryBuilds:async(t={})=>{const{process:e=null,wheelSlug:s=null}=t;if(typeof window>"u"){const{listGalleryBuilds:o}=await import("./gallery-builds-data.js");return g(o(e,s))}try{const o=new URLSearchParams;e&&o.set("process",e),s&&o.set("wheelSlug",s);const l=o.toString(),p=await i(`/api/v1/gallery-builds${l?`?${l}`:""}`,b());return g(p.results)}catch(o){return console.warn("[products.listGalleryBuilds] product API unavailable, returning []",o),[]}},getSite:async()=>i(await f(d("/site")),await u()),getSiteBySlug:async t=>i(`${d("/site")}?${new URLSearchParams({site:t})}`,typeof window>"u"?await u():void 0),listPages:async()=>g(await i(await f(d("/pages")),await u())),listPopups:async()=>i(await f(d("/popups")),await u()),listProductTemplates:async()=>{try{return await i(await f(d("/product-templates")),await u())}catch(t){return console.warn("[products.listProductTemplates] unavailable, returning []",t),[]}},listDynamicPages:async t=>{const e=t?`?recordType=${encodeURIComponent(t)}`:"";try{return await i(await f(`${d("/dynamic-pages")}${e}`),await u())}catch(s){if(s instanceof m&&s.status===404)return[];throw s}},getRecord:async(t,e)=>{try{return await i(await f(d(`/records/${encodeURIComponent(t)}/${encodeURIComponent(e)}`)),await u())}catch(s){if(s instanceof m&&s.status===404)return null;throw s}},listRecordKeys:async t=>{try{const e=await i(await f(d(`/records/${encodeURIComponent(t)}`)),await u({cache:"no-store"}));return Array.isArray(e?.keys)?e.keys.filter(s=>typeof s=="string"&&s!==""):[]}catch(e){if(e instanceof m&&e.status===404)return[];throw e}},listProductTypeChoices:async()=>{try{return await i(await f(d("/product-type-choices")),await u())}catch(t){return console.warn("[products.listProductTypeChoices] unavailable, returning []",t),[]}},listFieldUsage:async()=>{try{return await i(await f(d("/field-usage")),await u())}catch(t){return console.warn("[products.listFieldUsage] unavailable, returning []",t),[]}},getPage:async(t,e={})=>{const s=e.record?`?record=${encodeURIComponent(e.record)}`:"",[o,l]=await v(d(`/pages/${t}`)+s,e.revalidate!==void 0?{next:{revalidate:e.revalidate}}:void 0);return g(await i(o,l))},listBlogPosts:async(t={})=>{const e=t.category?`?category=${encodeURIComponent(t.category)}`:"";try{return(await i(d("/blog-posts")+e,await u())).map(o=>({...o,coverImage:N(o.coverImage)??""}))}catch(s){return console.warn("[products.listBlogPosts] blog API unavailable, returning []",s),[]}},getBlogPost:async t=>{const e=await i(d(`/blog-posts/${t}`),await u());return{...e,coverImage:N(e.coverImage)??""}},createOrder:async t=>i(d("/orders"),await u({method:"POST",body:JSON.stringify(t)})),createOrderAuthed:async t=>h(d("/orders"),await u({method:"POST",body:JSON.stringify(t)})),lookupOrder:async t=>i(d("/orders/lookup"),await u({method:"POST",body:JSON.stringify(t)})),createPaymentIntent:async t=>i(d("/payments/intent"),await u({method:"POST",body:JSON.stringify(t)})),createPaypalOrder:async t=>i(d("/payments/paypal/order"),await u({method:"POST",body:JSON.stringify(t)})),capturePaypalOrder:async t=>i(d("/payments/paypal/capture"),await u({method:"POST",body:JSON.stringify(t)})),createAfterpayCheckout:async t=>i(d("/payments/afterpay/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureAfterpayPayment:async t=>i(d("/payments/afterpay/capture"),await u({method:"POST",body:JSON.stringify(t)})),chargeSquare:async t=>i(d("/payments/square/charge"),await u({method:"POST",body:JSON.stringify(t)})),createGocardlessBillingRequest:async t=>i(d("/payments/gocardless/billing-request"),await u({method:"POST",body:JSON.stringify(t)})),completeGocardlessPayment:async t=>i(d("/payments/gocardless/complete"),await u({method:"POST",body:JSON.stringify(t)})),createZipCheckout:async t=>i(d("/payments/zip/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureZipPayment:async t=>i(d("/payments/zip/capture"),await u({method:"POST",body:JSON.stringify(t)})),createKlarnaCheckout:async t=>i(d("/payments/klarna/checkout"),await u({method:"POST",body:JSON.stringify(t)})),captureKlarnaPayment:async t=>i(d("/payments/klarna/capture"),await u({method:"POST",body:JSON.stringify(t)})),createStockAlert:async t=>i(d("/stock-alerts"),await u({method:"POST",body:JSON.stringify(t)})),createPreOrderIntent:async t=>i(d("/pre-order-intents"),await u({method:"POST",body:JSON.stringify(t)})),createNewsletterSubscription:async t=>i(d("/newsletter-subscriptions"),await u({method:"POST",body:JSON.stringify(t)})),unsubscribeNewsletter:async t=>i(d("/newsletter-unsubscribe"),await u({method:"POST",body:JSON.stringify(t)})),captureCart:async t=>i(d("/carts"),await u({method:"POST",body:JSON.stringify(t)})),restoreCart:async t=>i(d("/carts/restore"),await u({method:"POST",body:JSON.stringify(t)})),unsubscribeCartReminders:async t=>i(d("/carts/unsubscribe"),await u({method:"POST",body:JSON.stringify(t)})),listReviews:async(t={})=>{const e=new URLSearchParams;t.limit&&e.set("limit",String(t.limit)),t.designCode&&e.set("designCode",t.designCode);const s=d("/reviews"),o=e.toString();try{return await i(await f(o?`${s}?${o}`:s),await u())}catch(l){return console.warn("[products.listReviews] product API unavailable, returning []",l),[]}},submitReview:async t=>i(d("/reviews"),await u({method:"POST",body:JSON.stringify(t)})),getForm:async t=>i(d(`/forms/${encodeURIComponent(t)}`),await u()),submitForm:async(t,e)=>i(d(`/forms/${encodeURIComponent(t)}/submissions`),await u({method:"POST",body:JSON.stringify(e)})),listShippingMethods:async()=>{try{return await i(d("/shipping-methods"),await u())}catch(t){return console.warn("[products.listShippingMethods] product API unavailable, returning []",t),[]}},listCountrySubdivisions:async t=>{try{return await i(d(`/countries/${encodeURIComponent(t)}/subdivisions`),await u())}catch(e){return console.warn("[products.listCountrySubdivisions] unavailable, returning []",e),[]}},quoteCart:async t=>{const e=d("/cart/quote"),s=await u({method:"POST",body:JSON.stringify(t)});return t.couponCode?(await G(e,s)).data:i(e,s)},validateCoupon:async t=>{const{data:e,asShopper:s}=await G(d("/coupons/validate"),await u({method:"POST",body:JSON.stringify(t)}));return{...e,askedAsShopper:s}},getHeaderSettings:async()=>{const t=D({method:"GET"}),e=await i(...await v(d("/header-settings"),{signal:t})),s=N(e.logoUrl);let o=null,l=null;if(s&&Rt(s)){const p=await Tt(s,t);p&&(o=p.reversed,l=p.inkIsDark)}return{...e,logoUrl:s,logoReversed:o,logoInkIsDark:l}},getThemeSettings:async()=>i(...await v(d("/theme-settings"))),getChatSettings:async()=>i(await f(d("/chat-settings")),await u())},ye={listServices:async()=>{try{return await i(d("/bookings/services"),await u())}catch(t){return console.warn("[bookings.listServices] API unavailable, returning []",t),{results:[],currency:"USD"}}},getAvailability:async(t,e)=>i(d(`/bookings/availability?service=${encodeURIComponent(t)}&date=${e}`),await u()),create:async t=>i(d("/bookings"),await u({method:"POST",body:JSON.stringify(t)})),get:async t=>i(d(`/bookings/manage/${encodeURIComponent(t)}`),await u()),cancel:async t=>i(d(`/bookings/manage/${encodeURIComponent(t)}/cancel`),await u({method:"POST"})),createPaymentIntent:async t=>i(d("/bookings/payments/intent"),await u({method:"POST",body:JSON.stringify({manageToken:t})}))};class Gt extends Error{slug;count;constructor(e,s){super(`Slug "${e}" exists on ${s} websites; a site is required to pick one.`),this.slug=e,this.count=s,this.name="AmbiguousPageSlugError"}}const $=(t,e,s)=>{const o=new URLSearchParams({...e?{site:e}:{},...s?{draft:"1"}:{}}).toString();return`/api/storefront/${t}/${o?`?${o}`:""}`},R=t=>`/api/storefront/sites/${encodeURIComponent(t)}/`,Wt=t=>`${R(t)}currencies/`,jt="/api/storefront/media/ingest/";class zt extends Error{constructor(){super("This editor is not connected to a website, so an upload has nowhere to go. Open the page from the website the file should belong to, then try again."),this.name="MediaUploadDestinationError"}}function Kt(){const t=Et();if(!t)throw new zt;return`${jt}?${new URLSearchParams({site:t})}`}const Vt="X-Puck-Media-Manifest",Y=ct.contentHash,_={"X-Media-Manifest":Y,[Vt]:Y},he=Q({});function Q(t){return(e,s={})=>{const o=St(),l=t.headers||o?{...o?{"Accept-Language":o}:{},...t.headers,...s.headers}:void 0;return i(e,{...s,...t.baseUrl!==void 0?{baseUrl:t.baseUrl}:{},...l?{headers:l}:{},audience:t.audience??mt()})}}function Xt(t={}){const e=Q(t),s=t.siteDrafts===!0,o=a=>$("header-settings",a,s),l=a=>$("theme-settings",a,s),p=a=>$("chat-settings",a,s),w=a=>$("social-settings",a,s);return{findPageBySlug:async(a,r,n)=>{const c=new URLSearchParams({slug:a});n&&c.set("site",n);const y=await e(`/api/storefront/pages/?${c.toString()}`,{token:r}),S=Array.isArray(y)?y:y.results??[];if(!n&&S.length>1)throw new Gt(a,S.length);return S[0]??null},getPageById:(a,r)=>e(`/api/storefront/pages/${a}/`,{token:r}),saveLayout:(a,r,n,c,y)=>e(`/api/storefront/pages/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r,expected_updated_at:c,...y?{client_id:y}:{}}),token:n}),duplicatePage:(a,r,n)=>e(`/api/storefront/pages/${a}/duplicate/`,{method:"POST",body:JSON.stringify({title:r.title,slug:r.slug}),token:n}),geocode:(a,r,n)=>e(`/api/storefront/geocode/?${new URLSearchParams(n?{q:a,country:n}:{q:a})}`,{token:r}),listBlockSources:a=>e("/api/storefront/block-sources/",{token:a}),listRecordTypes:a=>e("/api/storefront/record-types/",{token:a}),createPagePreviewLink:(a,r)=>e(`/api/storefront/pages/${a}/preview-link/`,{method:"POST",token:r}),claimPageEditLock:(a,r,n,c=!1)=>e(`/api/storefront/pages/${a}/edit-lock/`,{method:"POST",body:JSON.stringify({client_id:n,takeover:c}),token:r}),releasePageEditLock:(a,r)=>e(`/api/storefront/pages/${a}/edit-lock/`,{method:"DELETE",token:r}),createTemplate:(a,r,n)=>e("/api/storefront/page-templates/",{method:"POST",body:JSON.stringify({name:a,layout:r}),headers:_,token:n}),getTemplate:(a,r)=>e(`/api/storefront/page-templates/${a}/`,{token:r}),saveTemplateLayout:(a,r,n)=>e(`/api/storefront/page-templates/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r}),headers:_,token:n}),listTemplatePages:async(a,r)=>{const n=await e(`/api/storefront/template-pages/?template=${encodeURIComponent(a)}`,{token:r});return Array.isArray(n)?n:n.results??[]},findTemplatePageBySlug:async(a,r,n)=>{const c=await e(`/api/storefront/template-pages/?template=${encodeURIComponent(a)}&slug=${encodeURIComponent(r)}`,{token:n});return(Array.isArray(c)?c:c.results??[])[0]??null},createTemplatePage:(a,r,n)=>e("/api/storefront/template-pages/",{method:"POST",body:JSON.stringify({template:a,...r}),headers:_,token:n}),saveTemplatePageLayout:(a,r,n)=>e(`/api/storefront/template-pages/${a}/`,{method:"PATCH",body:JSON.stringify({layout:r}),headers:_,token:n}),deleteTemplatePage:(a,r,n)=>e(`/api/storefront/template-pages/${a}/`,{method:"DELETE",token:r,...n?.keepalive?{keepalive:!0}:{}}),listPages:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("site",r);const c=await e(`/api/storefront/pages/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]},createPage:(a,r,n,c)=>e("/api/storefront/pages/",{method:"POST",body:JSON.stringify({title:a,slug:r,layout:n}),token:c}),deletePage:(a,r)=>e(`/api/storefront/pages/${a}/`,{method:"DELETE",token:r}),getHeaderSettings:(a,r)=>e(o(r),{token:a}),listMenus:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("site",r);const c=await e(`/api/storefront/menus/?${n}`,{token:a});return Array.isArray(c)?c:c.results??[]},listBlogPosts:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.visibleOnly&&n.set("is_visible","true"),r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/blog-posts/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]},listFieldUsage:async(a,r)=>{const n=await e(`/api/storefront/field-usage/?site=${encodeURIComponent(r)}`,{token:a});return Array.isArray(n?.entries)?n.entries:[]},listCategories:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.visibleOnly&&n.set("is_visible","true"),r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/categories/?${n.toString()}`,{token:a});return[...Array.isArray(c)?c:c.results??[]].sort((S,E)=>S.sort_order-E.sort_order||S.name.localeCompare(E.name))},listForms:async(a,r={})=>{const n=new URLSearchParams({no_page:"true"});r.siteId&&n.set("site",r.siteId);const c=await e(`/api/storefront/forms/?${n.toString()}`,{token:a});return[...Array.isArray(c)?c:c.results??[]].sort((S,E)=>S.title.localeCompare(E.title))},listWheelSummaries:async(a,r={})=>{const n=new URLSearchParams;r.siteId&&n.set("site",r.siteId);const c=n.toString(),y=await e(`/api/storefront/wheel-curations/summaries/${c?`?${c}`:""}`,{token:a});return g(y)},listProducts:async(a,r={})=>{const n=new URLSearchParams;r.kinds?.length&&n.set("kind",r.kinds.join(",")),r.siteId&&n.set("site",r.siteId);const c=n.toString(),y=await e(`/api/storefront/products/${c?`?${c}`:""}`,{token:a});return g(y)},getWheelDetail:async(a,r,n={})=>{const c=new URLSearchParams({slug:r});return n.siteId&&c.set("site",n.siteId),L(g(await e(`/api/storefront/wheel-curations/detail/?${c.toString()}`,{token:a})))},updateHeaderSettings:(a,r,n)=>e(o(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getSite:(a,r)=>e(R(a),{token:r}),listSites:async a=>{const r=await e("/api/storefront/sites/?no_page=true",{token:a});return Array.isArray(r)?r:r.results??[]},listSiteCurrencies:async(a,r)=>{const n=await e(Wt(a),{token:r});return Array.isArray(n)?n:[]},publishSite:(a,r)=>e(`${R(a)}publish/`,{method:"POST",token:r}),getSiteLiveState:(a,r)=>e(`${R(a)}live-state/`,{token:r}),updateSite:(a,r,n)=>e(R(a),{method:"PATCH",body:JSON.stringify(r),token:n}),getThemeSettings:(a,r)=>e(l(r),{token:a}),updateThemeSettings:(a,r,n)=>e(l(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getChatSettings:(a,r)=>e(p(r),{token:a}),updateChatSettings:(a,r,n)=>e(p(n),{method:"PATCH",body:JSON.stringify(a),token:r}),getSocialSettings:(a,r)=>e(w(r),{token:a}),updateSocialSettings:(a,r,n)=>e(w(n),{method:"PATCH",body:JSON.stringify(a),token:r}),uploadHeaderLogo:(a,r,n)=>{const c=new FormData;return c.append("logo",a),e(o(n),{method:"PATCH",body:c,token:r})},clearHeaderLogo:(a,r)=>e(o(r),{method:"PATCH",body:JSON.stringify({logo:null}),token:a}),setHeaderLogoFromAsset:(a,r,n)=>e(o(n),{method:"PATCH",body:JSON.stringify({logo_asset_id:a}),token:r}),uploadMedia:async(a,r)=>{const n=new FormData;return n.append("file",a),e(Kt(),{method:"POST",body:n,token:r})},listMedia:async(a,r)=>{const n=new URLSearchParams({no_page:"true"});r&&n.set("kind",r);const c=await e(`/api/storefront/media-assets/?${n.toString()}`,{token:a});return Array.isArray(c)?c:c.results??[]}}}const fe=Xt({siteDrafts:!0});export{ut as API_URL,Gt as AmbiguousPageSlugError,m as ApiError,ht as BROWSER_READ_TIMEOUT_MS,pt as EFFICIENT_CLIENT_CLOSED_MESSAGE,zt as MediaUploadDestinationError,Mt as PREVIEW_PARAM,we as PRODUCT_API_BASE,yt as SERVER_READ_TIMEOUT_MS,U as SERVER_UNREACHABLE_MESSAGE,I as STATUS_NETWORK_ERROR,he as adminFetch,Ot as api,i as apiFetch,C as appendSiteQuery,ye as bookings,Xt as createStorefrontAdmin,D as defaultRequestDeadline,Kt as editorMediaUploadPath,mt as editorPortalAudience,St as editorRequestLanguage,le as fitment,pe as products,ft as readDeadlineMs,Dt as resolveClientIp,g as resolveMediaUrls,Ft as resolvePreviewToken,Z as resolveSiteHost,Lt as resolveSiteHostSource,xt as resolveSiteSlug,oe as setEditorLanguage,ne as setEditorPortalAudience,fe as storefrontAdmin};
@@ -1 +1 @@
1
- import{FONT_ROLES as f}from"efficient-web-builder/format/lib/fonts";import{partStyleDeclarations as l}from"efficient-web-builder/render/lib/puck/part-styles";const a=["step","name","value","note"],u={step:"Step",name:"Name",value:"Value",note:"Note"},r={step:"styleStep",name:"styleName",value:"styleValue",note:"styleNote"},s={step:{font:"--bk-step-font",size:"--bk-step-size"},name:{font:"--bk-name-font",size:"--bk-name-size"},value:{font:"--bk-value-font",size:"--bk-value-size"},note:{font:"--bk-note-font",size:"--bk-note-size"}};function p(e){return typeof e=="string"&&f.includes(e)?e:null}const c={fontKey:"",sizePx:16,weight:400,lineRatio:1.4,letterEm:0,align:"left",case:"none",paddingPx:0,widthPx:900};function K(e){const n={};for(const o of a){const i=p(e[r[o]]);if(!i)continue;const t=l({role:i},c);t.fontFamily&&(n[s[o].font]=t.fontFamily),t.fontSize&&(n[s[o].size]=t.fontSize)}return n}export{r as BOOKING_KIND_PROP,s as BOOKING_KIND_VARS,a as BOOKING_TEXT_KINDS,u as BOOKING_TEXT_KIND_LABELS,p as bookingKindRole,K as bookingKindStyle};
1
+ import{FONT_ROLES as f}from"efficient-web-builder/format/lib/fonts";import{partStyleDeclarations as l}from"efficient-web-builder/render/lib/document/part-styles";const a=["step","name","value","note"],u={step:"Step",name:"Name",value:"Value",note:"Note"},r={step:"styleStep",name:"styleName",value:"styleValue",note:"styleNote"},s={step:{font:"--bk-step-font",size:"--bk-step-size"},name:{font:"--bk-name-font",size:"--bk-name-size"},value:{font:"--bk-value-font",size:"--bk-value-size"},note:{font:"--bk-note-font",size:"--bk-note-size"}};function p(e){return typeof e=="string"&&f.includes(e)?e:null}const c={fontKey:"",sizePx:16,weight:400,lineRatio:1.4,letterEm:0,align:"left",case:"none",paddingPx:0,widthPx:900};function K(e){const n={};for(const o of a){const i=p(e[r[o]]);if(!i)continue;const t=l({role:i},c);t.fontFamily&&(n[s[o].font]=t.fontFamily),t.fontSize&&(n[s[o].size]=t.fontSize)}return n}export{r as BOOKING_KIND_PROP,s as BOOKING_KIND_VARS,a as BOOKING_TEXT_KINDS,u as BOOKING_TEXT_KIND_LABELS,p as bookingKindRole,K as bookingKindStyle};
@@ -1 +1 @@
1
- import{HEADER_HEIGHT_PX as t}from"efficient-web-builder/render/lib/puck/header-clearance";function s(e){return typeof e=="number"&&Number.isInteger(e)&&e>=t.min&&e<=t.max?e:t.default}const i="fixed inset-x-0 bottom-0 top-[var(--sf-header-h,88px)]",n=e=>!!e&&e.startsWith("/wheels/")&&e!=="/wheels",a=(e,o)=>!e&&o?"var(--section-bg)":"var(--bg)",p=e=>e==="capitalised"?"capitalised":"uppercase",l=e=>e==="inline"?"inline":e==="top"||e==="bottom"?"top":null;export{i as UNDER_HEADER_SHEET_CLASS,a as headerSolidBackground,n as isProductPage,s as resolveHeaderHeightPx,l as resolveMenuRow,p as resolveNavTextCase};
1
+ import{HEADER_HEIGHT_PX as t}from"efficient-web-builder/render/lib/document/header-clearance";function s(e){return typeof e=="number"&&Number.isInteger(e)&&e>=t.min&&e<=t.max?e:t.default}const i="fixed inset-x-0 bottom-0 top-[var(--sf-header-h,88px)]",n=e=>!!e&&e.startsWith("/wheels/")&&e!=="/wheels",a=(e,o)=>!e&&o?"var(--section-bg)":"var(--bg)",p=e=>e==="capitalised"?"capitalised":"uppercase",l=e=>e==="inline"?"inline":e==="top"||e==="bottom"?"top":null;export{i as UNDER_HEADER_SHEET_CLASS,a as headerSolidBackground,n as isProductPage,s as resolveHeaderHeightPx,l as resolveMenuRow,p as resolveNavTextCase};
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const AccountBlockMeta: Omit<BlockRender, "render">;
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const AccountBlockRender: BlockRender;
@@ -1,4 +1,4 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const ALLOYWHEELSLISTING_PH: {
3
3
  heading: string;
4
4
  intro: string;
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const AlloyWheelsListingRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import n from"../../../../../components/wheels-plp/AlloyWheelsListing.js";import{hidableText as i}from"efficient-easel/screen/lib/document/hidable";import{asPlpSortKey as r,listingHiddenFacets as o}from"../../../../wheels/plp-filters.js";import{parseCoverIndex as g}from"../../../../wheels/cover-rendering.js";import{parseCardOutline as l,parseCardIndexFormat as h}from"efficient-web-builder/format/lib/sections/product-card-style";import{phHide as a}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{AlloyWheelsListingMeta as s,ALLOYWHEELSLISTING_PH as d}from"./meta.js";const P={...s,render:e=>t(n,{titleLevel:e.titleLevel,heading:a(e.heading,d.heading,e.editor),intro:a(e.intro,d.intro,e.editor),askForCar:e.askForCar!==!1,gateHeading:i(e.gateHeading),gateIntro:i(e.gateIntro),perPage:e.perPage,columns:e.columns,defaultSort:r(e.defaultSort),coverIndex:g(e.coverIndex),cardImage:e.cardImage,spinOnHover:e.spinOnHover===!0,imageBackground:e.imageBackground,showBadge:e.showBadge!==!1,showCardPrice:e.showCardPrice,showCardFinishes:e.showCardFinishes,showCardSizes:e.showCardSizes,showCardBuy:e.showCardBuy,showCardPage:e.showCardPage,outline:l(e.outline),indexBadge:h(e.indexBadge),hiddenFacets:o(e),showPrice:e.showPrice,showInStock:e.showInStock!==!1,kinds:e.kinds,products:e.products,wheels:e.wheels,fieldUsage:e.fieldUsage,editing:e.editor?.isEditing})};export{P as AlloyWheelsListingRender};
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const BundleOfferMeta: Omit<BlockRender, "render">;
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const BundleOfferRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as d}from"react/jsx-runtime";import r from"../../../../../components/pdp-dynamic/DynamicBundleOffer.js";import{parseSectionHeadPlacement as a}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as m}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as n}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as c}from"../placeholders.js";import{BundleOfferMeta as f}from"./meta.js";const B={...f,render:e=>{const i=a(e.headPlacement)==="own-box",t=o=>i?void 0:o;return d(r,{num:t(n(e.num,c.num,e.editor)),title:t(n(e.title,m.sectionHeading,e.editor)),description:t(n(e.description,m.body,e.editor)),omitHead:i,columns:typeof e.columns=="number"?e.columns:3,cardImage:e.cardImage,editing:e.editor?.isEditing})}};export{B as BundleOfferRender};
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CartBlockMeta: Omit<BlockRender, "render">;
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CartBlockRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{CartTool as e}from"../../../../../components/HeaderToolBlocks.js";import{CartBlockMeta as i}from"./meta.js";const n={...i,render:({style:r,editor:o})=>t(e,{style:r,editing:o?.isEditing})};export{n as CartBlockRender};
@@ -1,2 +1,2 @@
1
- import type { BlockRender } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CatalogFilterBarMeta: Omit<BlockRender, "render">;