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
- import{a as d,b as p,c as S,p as b,r as T}from"./chunk-Z7PJKX2P.js";import"./chunk-IHYVLVY3.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
1
+ import{a as d,b as p,c as S,p as b,r as T}from"./chunk-EPJ5SM3A.js";import"./chunk-YTQS5GY6.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
package/dist/contract.js CHANGED
@@ -1,4 +1,4 @@
1
- var y=["general","commerce","service"],l=[{key:"openers",title:"Hero & intros",defaultExpanded:!0,templateable:!0,sections:[{type:"Hero",label:"Hero Slideshow",set:"general"},{type:"HeroSingle",label:"Hero",set:"general"},{type:"IntroBleed",label:"Scroll-Over Text",set:"general"}]},{key:"shop",title:"Shop & galleries",templateable:!0,sections:[{type:"Collections",label:"Collections",set:"commerce"},{type:"AlloyWheelsListing",label:"List",set:"commerce"},{type:"CatalogFilterBar",label:"Catalog Filter Bar",set:"commerce"},{type:"ProductGrid",label:"Product Grid",set:"commerce"},{type:"FitmentFinder",label:"Fitment Form",set:"commerce"},{type:"Gallery",label:"Tabbed Gallery",set:"commerce"},{type:"GalleryB",label:"Customer Photo Grid",set:"commerce"},{type:"SpecStrip",label:"Spec Strip",set:"general"}]},{key:"product",title:"Product page",templateable:!0,sections:[{type:"ProductHero",label:"Product Hero",set:"commerce"},{type:"SpecTable",label:"Spec Table",set:"commerce"},{type:"ProcessSteps",label:"Image & Text Columns",set:"general"},{type:"DetailRows",label:"Feature Rows",set:"commerce"},{type:"FitmentTable",label:"Fitment Table",set:"commerce"},{type:"TyreSizes",label:"Tyre Sizes",set:"commerce"},{type:"TyreFitment",label:"Tyre Fitment Form",set:"commerce"},{type:"EuTyreLabel",label:"EU Tyre Label",set:"commerce"},{type:"RelatedProducts",label:"Related Products",set:"commerce"},{type:"BundleOffer",label:"Bundle Products",set:"commerce"}]},{key:"checkout",title:"Checkout & ordering",templateable:!0,sections:[{type:"OrderSummary",label:"Order Table",set:"general"},{type:"DeliveryOptions",label:"Delivery Options",set:"commerce"},{type:"PaymentBadges",label:"Payment Methods",set:"general"},{type:"CheckoutCTA",label:"Ready-to-Order Banner",set:"commerce"}]},{key:"about",title:"About & brand story",templateable:!0,sections:[{type:"Manifesto",label:"Brand Text",set:"general"},{type:"Timeline",label:"Story Timeline",set:"general"},{type:"Footprint",label:"Locations Map",set:"general"}]},{key:"content",title:"Text & content",templateable:!0,sections:[{type:"Prose",label:"Editorial Text",set:"general"},{type:"ParagraphsA",label:"Lead Text",set:"general"},{type:"Split",label:"Image & Text Split",set:"general"},{type:"Cards",label:"Cards",set:"general"}]},{key:"proof",title:"Stats & social proof",templateable:!0,sections:[{type:"Stats",label:"Stats",set:"general"},{type:"StatsParagraph",label:"Stats with Text",set:"general"},{type:"Chart",label:"Chart",set:"general"},{type:"Mockup",label:"Mockup Card",set:"general"},{type:"Testimonials",label:"Testimonials",set:"general"},{type:"Reviews",label:"Reviews",set:"service"},{type:"Logos",label:"Logos",set:"general"}]},{key:"promo",title:"Promotions & sign-ups",templateable:!0,sections:[{type:"Banner",label:"Banner",set:"general"},{type:"TitleWithButtons",label:"Call-to-Action Heading",set:"general"},{type:"Ticker",label:"Scrolling Bar",set:"general"},{type:"Countdown",label:"Countdown",set:"general"},{type:"Subscribe",label:"Signup Form",set:"service"}]},{key:"blog",title:"Blog & journal",templateable:!0,sections:[{type:"Masthead",label:"Issue Header",set:"general"},{type:"FeaturedCover",label:"Feature Banner",set:"general"},{type:"LongRead",label:"Article Text",set:"general"},{type:"Series",label:"Recurring Columns",set:"general"},{type:"Events",label:"Latest Posts",set:"service"}]},{key:"navigation",title:"Navigation & wayfinding",templateable:!0,sections:[{type:"Breadcrumb",label:"Breadcrumb",set:"general"},{type:"CategoryBar",label:"Category Bar",set:"general"},{type:"DocTabs",label:"Document Tabs",set:"general"}]},{key:"legal",title:"Legal & documents",templateable:!0,sections:[{type:"DocMasthead",label:"Document Header",set:"general"},{type:"DocBody",label:"Document Text",set:"general"},{type:"DocMetaCards",label:"Document Detail Cards",set:"general"}]},{key:"contact",title:"Contact, FAQ & forms",templateable:!0,sections:[{type:"FAQ",label:"Q&A",set:"general"},{type:"ContactRouting",label:"Contact Form",set:"service"},{type:"ContactLocations",label:"Contact / Locations",set:"general"},{type:"SubmitBuild",label:"Photo Submission Form",set:"service"},{type:"ReviewForm",label:"Review Form",set:"service"},{type:"Form",label:"Form",set:"service"},{type:"AppointmentBooking",label:"Booking Form",set:"service"}]},{key:"structure",title:"Layout, structure & embeds",templateable:!1,sections:[{type:"SectionHeader",label:"Section Header",set:"general"},{type:"Flex",label:"Box",set:"general"},{type:"Spacer",label:"Spacer",set:"general"},{type:"Divider",label:"Divider",set:"general"},{type:"CustomHTML",label:"Custom HTML",set:"general"}]}];var m={Grid:'Lewis, 2026-09-14: Box and Grid duplicate each other and it feels confusing. 2026-09-15 he chose the order: give Box uneven widths FIRST, then merge Grid into Box. Shown three ways to pick the widths (mockup "Uneven Box Widths"), he chose A \u2014 shape pictures on the Box\'s `Block widths` row, the same "a row is a shape, pick a picture of it" rule he set for the photo wall on 2026-09-07.\n\nWHAT REPLACES IT: a Box set to One row, with `Block widths` at Equal or a shape (Big left, Big right, Bigger left, Bigger right) and its own `Columns on phone`. Measured on PRODUCTION 2026-09-16 ~09:28 AEST (database `efficient-system`, all 10 tenant schemas, 128 storefront pages, both `layout` and `published_layout` \u2014 256 documents): 2 Grid nodes, and they are ONE Grid counted twice \u2014 the 9DIEM homepage on 9diem.com (`xtreme_mudder` schema), once as draft and once as published. It is top-level, holds three `ImageBlock`s at `columns` 3 \u2014 equal thirds \u2014 and NO block sets `Positions`. A Box draws that with `Block widths` at Equal.\n\n\u26A0\uFE0F THE COUNT MOVES; THE RULE MUST NOT DEPEND ON IT. This entry has already carried three different readings. A local-clone snapshot said no Grid used `Positions`. A PRODUCTION reading on 2026-09-15 ~13:15 AEST found 6 nodes on two sites, 4 of them spanned \u2014 hartesmetal.com.au homepage and about, 4 columns, spans 1 + 3. That one was TRUE when it was taken and stopped being true the same day: those two pages were rebuilt on Box (`Block widths: Bigger right`), and on 2026-09-16 they hold zero Grid nodes and are built from `Flex`. \u26D4 So the rule is NOT "there are still N spanned Grids". NEVER delete the Grid component or its `gridSpan` handling, whatever a census says \u2014 Grid still renders, still edits, still drags, and a merchant may rebuild a page either way on any day. Re-run the census on production before anyone PROPOSES deleting either, and read any number written here as the reading of its own day, not as the state of the world.\n\nWHAT A MERCHANT LOSES: a new Grid, and with it a fixed "N per row" that wraps by itself past three across, and the per-block `Positions` number. Box wraps with `Wrap`, but by content width, not by a fixed count.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Grid still renders through it and can still be edited, dragged and added to; no document is rewritten and NO MIGRATION RUNS \u2014 the owner redoes live sections himself.\n\n\u26A0\uFE0F AND IT STAYS DROPPABLE WHERE IT LIVES. The drop rule in lib/puck/config.tsx read the nestable containers off the catalogue\'s `structure` row, so leaving the catalogue would have made every open slot \u2014 a Box included \u2014 refuse a Grid already stored inside one. `scripts/test-retired-grid-stays-editable.tsx` \xA73 pins it.',CompatibleTyres:'Lewis, 2026-09-09: "Do not bother counting. Delete Compatible Tyres and use the new one. The new one needs complete settings \u2014 it must have every setting our cards have." Shown three ways to finish it, he chose C: retire from the menu now, and take styling the card text as its own card.\n\nWHAT REPLACES IT: `RelatedProducts` with its `Show` dropdown set to "Tyres that fit this product". That block is the GENERIC relationship section from card 1128 \u2014 it knows nothing about wheels or tyres, it asks the registry for a relationship by name. The two have rendered through the SAME renderer (`DynamicRelatedProducts`) since that card; this one is the pre-registry one-off that was never removed.\n\n\u26A0\uFE0F THE SWAP WAS NOT SAFE UNTIL #1305, AND SAYING SO IS THE POINT. The first old-versus-new table put in front of the owner was WRONG. `DynamicRelatedProducts` returns EARLY on a tyre answer and draws this component, so the seven card settings, the head split and the Width control all stopped at that call \u2014 nine settings, measured NO EFFECT, on precisely the relationship that replaces this block. #1283 gave the new block the card settings, #1299 the head split and its own Width, #1305 carried all of it onto the tyre branch. Only then was the claim true.\n\nWHAT WAS MEASURED BEFORE RETIRING, four ways, because the premise decides the card:\n \u2022 settable text kinds (SECTION_TEXT_KINDS): both blocks ABSENT \u2014 the map holds only TimelineTrack and Footprint, both AUTHORED lists\n \u2022 read-only text regions: neither `components/CompatibleTyres` nor `components/TyreCard` stamps one\n \u2022 panel rows through resolveFields: this block 31, `RelatedProducts` 42. This block\'s only style-ish key is `_sStyle`, the bucket HEADER, not a control\n \u2022 head text (num/title/description) is authored on both, so `_partStyles` reaches it identically\nSo on the CARD runs the two are zero against zero \u2014 neither can style them \u2014 and everywhere else the new block is ahead. Styling those runs needs a section-level prop family and a paint path for DERIVED text, which no section has yet: a part is anchored by matching an AUTHORED prop\'s string against the DOM, and `lib/puck/source-bound-parts` keeps hydrated copy unreachable on purpose so a merchant cannot type into a copy of a product name and lose it at the next sync. That is its own card, and `lib/sections/text-regions` is the read-only half that already ships.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT, the same contract Subscribe, Split and SubscribeBlogs have. Every page holding a `CompatibleTyres` still renders through it, no published document is rewritten, and NO MIGRATION RUNS \u2014 the owner\'s standing ruling of 2026-09-05: he redoes live sections himself and deletes the old ones when he does. He also said explicitly not to count them first.\n\n\u26A0\uFE0F AND THIS COMPONENT IS LOAD-BEARING FOR ITS OWN REPLACEMENT: `DynamicRelatedProducts` draws it for EVERY tyre answer. Deleting it would blank the block that replaces it, not just the pages still holding this one.',TimelineTrack:"Lewis, 2026-10-09/10 (decisions.md ND, approved): the horizontal year rail and the Story Timeline do one job, so the rail becomes the Story Timeline's fourth Display, Track. Retired by card [MERGE] One Text Block And Click Through Parts (2026-10-22).\n\nWHAT REPLACES IT: a Story Timeline (`Timeline`) with Display set to Track. It draws this section's own component (`components/TimelineTrack`), so for the same words it draws the same bytes: the band colour (`Background color`, the same built-in), the padding, the CTA and each milestone's `Upcoming` switch (shown on each entry under Track only). An entry's `Body` is the rail's blurb. `scripts/test-timeline-track-display.tsx` \xA72 holds the bytes.\n\nWHAT A MERCHANT LOSES on a NEW rail, said plainly: (1) the head cannot move into a box of its own (`headPlacement`); the layered rebuild puts a head in one Box with its content anyway. (2) The year and title of every milestone are not one text kind: each run is styled on its own. (3) The Width rows follow the Story Timeline's family (`background`), not the rail's (`capped`).\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Milestone Timeline still renders through it and can still be edited; no document is rewritten and NO MIGRATION RUNS.",KeyFeatures:`Lewis, 2026-10-10 (section-merges.md group 4, approved): one Cards section holds Cards and Key Features; Key Features' diamond cells are the card style "Label only". Retired by card [MERGE] One Text Block And Click Through Parts (2026-10-22).
1
+ var y=["general","commerce","service"],l=[{key:"openers",title:"Hero & intros",defaultExpanded:!0,templateable:!0,sections:[{type:"Hero",label:"Hero Slideshow",set:"general"},{type:"HeroSingle",label:"Hero",set:"general"},{type:"IntroBleed",label:"Scroll-Over Text",set:"general"}]},{key:"shop",title:"Shop & galleries",templateable:!0,sections:[{type:"Collections",label:"Collections",set:"commerce"},{type:"AlloyWheelsListing",label:"List",set:"commerce"},{type:"CatalogFilterBar",label:"Catalog Filter Bar",set:"commerce"},{type:"ProductGrid",label:"Product Grid",set:"commerce"},{type:"FitmentFinder",label:"Fitment Form",set:"commerce"},{type:"Gallery",label:"Tabbed Gallery",set:"commerce"},{type:"GalleryB",label:"Customer Photo Grid",set:"commerce"},{type:"SpecStrip",label:"Spec Strip",set:"general"}]},{key:"product",title:"Product page",templateable:!0,sections:[{type:"ProductHero",label:"Product Hero",set:"commerce"},{type:"SpecTable",label:"Spec Table",set:"commerce"},{type:"ProcessSteps",label:"Image & Text Columns",set:"general"},{type:"DetailRows",label:"Feature Rows",set:"commerce"},{type:"FitmentTable",label:"Fitment Table",set:"commerce"},{type:"TyreSizes",label:"Tyre Sizes",set:"commerce"},{type:"TyreFitment",label:"Tyre Fitment Form",set:"commerce"},{type:"EuTyreLabel",label:"EU Tyre Label",set:"commerce"},{type:"RelatedProducts",label:"Related Products",set:"commerce"},{type:"BundleOffer",label:"Bundle Products",set:"commerce"}]},{key:"checkout",title:"Checkout & ordering",templateable:!0,sections:[{type:"OrderSummary",label:"Order Table",set:"general"},{type:"DeliveryOptions",label:"Delivery Options",set:"commerce"},{type:"PaymentBadges",label:"Payment Methods",set:"general"},{type:"CheckoutCTA",label:"Ready-to-Order Banner",set:"commerce"}]},{key:"about",title:"About & brand story",templateable:!0,sections:[{type:"Manifesto",label:"Brand Text",set:"general"},{type:"Timeline",label:"Story Timeline",set:"general"},{type:"Footprint",label:"Locations Map",set:"general"}]},{key:"content",title:"Text & content",templateable:!0,sections:[{type:"Prose",label:"Editorial Text",set:"general"},{type:"ParagraphsA",label:"Lead Text",set:"general"},{type:"Split",label:"Image & Text Split",set:"general"},{type:"Cards",label:"Cards",set:"general"}]},{key:"proof",title:"Stats & social proof",templateable:!0,sections:[{type:"Stats",label:"Stats",set:"general"},{type:"StatsParagraph",label:"Stats with Text",set:"general"},{type:"Chart",label:"Chart",set:"general"},{type:"Mockup",label:"Mockup Card",set:"general"},{type:"Testimonials",label:"Testimonials",set:"general"},{type:"Reviews",label:"Reviews",set:"service"},{type:"Logos",label:"Logos",set:"general"}]},{key:"promo",title:"Promotions & sign-ups",templateable:!0,sections:[{type:"Banner",label:"Banner",set:"general"},{type:"TitleWithButtons",label:"Call-to-Action Heading",set:"general"},{type:"Ticker",label:"Scrolling Bar",set:"general"},{type:"Countdown",label:"Countdown",set:"general"},{type:"Subscribe",label:"Signup Form",set:"service"}]},{key:"blog",title:"Blog & journal",templateable:!0,sections:[{type:"Masthead",label:"Issue Header",set:"general"},{type:"FeaturedCover",label:"Feature Banner",set:"general"},{type:"LongRead",label:"Article Text",set:"general"},{type:"Series",label:"Recurring Columns",set:"general"},{type:"Events",label:"Latest Posts",set:"service"}]},{key:"navigation",title:"Navigation & wayfinding",templateable:!0,sections:[{type:"Breadcrumb",label:"Breadcrumb",set:"general"},{type:"CategoryBar",label:"Category Bar",set:"general"},{type:"DocTabs",label:"Document Tabs",set:"general"}]},{key:"legal",title:"Legal & documents",templateable:!0,sections:[{type:"DocMasthead",label:"Document Header",set:"general"},{type:"DocBody",label:"Document Text",set:"general"},{type:"DocMetaCards",label:"Document Detail Cards",set:"general"}]},{key:"contact",title:"Contact, FAQ & forms",templateable:!0,sections:[{type:"FAQ",label:"Q&A",set:"general"},{type:"ContactRouting",label:"Contact Form",set:"service"},{type:"ContactLocations",label:"Contact / Locations",set:"general"},{type:"SubmitBuild",label:"Photo Submission Form",set:"service"},{type:"ReviewForm",label:"Review Form",set:"service"},{type:"Form",label:"Form",set:"service"},{type:"AppointmentBooking",label:"Booking Form",set:"service"}]},{key:"structure",title:"Layout, structure & embeds",templateable:!1,sections:[{type:"SectionHeader",label:"Section Header",set:"general"},{type:"Flex",label:"Box",set:"general"},{type:"Spacer",label:"Spacer",set:"general"},{type:"Divider",label:"Divider",set:"general"},{type:"CustomHTML",label:"Custom HTML",set:"general"}]}];var m={Grid:'Lewis, 2026-09-14: Box and Grid duplicate each other and it feels confusing. 2026-09-15 he chose the order: give Box uneven widths FIRST, then merge Grid into Box. Shown three ways to pick the widths (mockup "Uneven Box Widths"), he chose A \u2014 shape pictures on the Box\'s `Block widths` row, the same "a row is a shape, pick a picture of it" rule he set for the photo wall on 2026-09-07.\n\nWHAT REPLACES IT: a Box set to One row, with `Block widths` at Equal or a shape (Big left, Big right, Bigger left, Bigger right) and its own `Columns` in the Phone view. Measured on PRODUCTION 2026-09-16 ~09:28 AEST (database `efficient-system`, all 10 tenant schemas, 128 storefront pages, both `layout` and `published_layout` \u2014 256 documents): 2 Grid nodes, and they are ONE Grid counted twice \u2014 the 9DIEM homepage on 9diem.com (`xtreme_mudder` schema), once as draft and once as published. It is top-level, holds three `ImageBlock`s at `columns` 3 \u2014 equal thirds \u2014 and NO block sets `Positions`. A Box draws that with `Block widths` at Equal.\n\n\u26A0\uFE0F THE COUNT MOVES; THE RULE MUST NOT DEPEND ON IT. This entry has already carried three different readings. A local-clone snapshot said no Grid used `Positions`. A PRODUCTION reading on 2026-09-15 ~13:15 AEST found 6 nodes on two sites, 4 of them spanned \u2014 hartesmetal.com.au homepage and about, 4 columns, spans 1 + 3. That one was TRUE when it was taken and stopped being true the same day: those two pages were rebuilt on Box (`Block widths: Bigger right`), and on 2026-09-16 they hold zero Grid nodes and are built from `Flex`. \u26D4 So the rule is NOT "there are still N spanned Grids". NEVER delete the Grid component or its `gridSpan` handling, whatever a census says \u2014 Grid still renders, still edits, still drags, and a merchant may rebuild a page either way on any day. Re-run the census on production before anyone PROPOSES deleting either, and read any number written here as the reading of its own day, not as the state of the world.\n\nWHAT A MERCHANT LOSES: a new Grid, and with it a fixed "N per row" that wraps by itself past three across, and the per-block `Positions` number. Box wraps with `Wrap`, but by content width, not by a fixed count.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Grid still renders through it and can still be edited, dragged and added to; no document is rewritten and NO MIGRATION RUNS \u2014 the owner redoes live sections himself.\n\n\u26A0\uFE0F AND IT STAYS DROPPABLE WHERE IT LIVES. The drop rule in lib/document/config.tsx read the nestable containers off the catalogue\'s `structure` row, so leaving the catalogue would have made every open slot \u2014 a Box included \u2014 refuse a Grid already stored inside one. `scripts/test-retired-grid-stays-editable.tsx` \xA73 pins it.',CompatibleTyres:'Lewis, 2026-09-09: "Do not bother counting. Delete Compatible Tyres and use the new one. The new one needs complete settings \u2014 it must have every setting our cards have." Shown three ways to finish it, he chose C: retire from the menu now, and take styling the card text as its own card.\n\nWHAT REPLACES IT: `RelatedProducts` with its `Show` dropdown set to "Tyres that fit this product". That block is the GENERIC relationship section from card 1128 \u2014 it knows nothing about wheels or tyres, it asks the registry for a relationship by name. The two have rendered through the SAME renderer (`DynamicRelatedProducts`) since that card; this one is the pre-registry one-off that was never removed.\n\n\u26A0\uFE0F THE SWAP WAS NOT SAFE UNTIL #1305, AND SAYING SO IS THE POINT. The first old-versus-new table put in front of the owner was WRONG. `DynamicRelatedProducts` returns EARLY on a tyre answer and draws this component, so the seven card settings, the head split and the Width control all stopped at that call \u2014 nine settings, measured NO EFFECT, on precisely the relationship that replaces this block. #1283 gave the new block the card settings, #1299 the head split and its own Width, #1305 carried all of it onto the tyre branch. Only then was the claim true.\n\nWHAT WAS MEASURED BEFORE RETIRING, four ways, because the premise decides the card:\n \u2022 settable text kinds (SECTION_TEXT_KINDS): both blocks ABSENT \u2014 the map holds only TimelineTrack and Footprint, both AUTHORED lists\n \u2022 read-only text regions: neither `components/CompatibleTyres` nor `components/TyreCard` stamps one\n \u2022 panel rows through resolveFields: this block 31, `RelatedProducts` 42. This block\'s only style-ish key is `_sStyle`, the bucket HEADER, not a control\n \u2022 head text (num/title/description) is authored on both, so `_partStyles` reaches it identically\nSo on the CARD runs the two are zero against zero \u2014 neither can style them \u2014 and everywhere else the new block is ahead. Styling those runs needs a section-level prop family and a paint path for DERIVED text, which no section has yet: a part is anchored by matching an AUTHORED prop\'s string against the DOM, and `lib/document/source-bound-parts` keeps hydrated copy unreachable on purpose so a merchant cannot type into a copy of a product name and lose it at the next sync. That is its own card, and `lib/sections/text-regions` is the read-only half that already ships.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT, the same contract Subscribe, Split and SubscribeBlogs have. Every page holding a `CompatibleTyres` still renders through it, no published document is rewritten, and NO MIGRATION RUNS \u2014 the owner\'s standing ruling of 2026-09-05: he redoes live sections himself and deletes the old ones when he does. He also said explicitly not to count them first.\n\n\u26A0\uFE0F AND THIS COMPONENT IS LOAD-BEARING FOR ITS OWN REPLACEMENT: `DynamicRelatedProducts` draws it for EVERY tyre answer. Deleting it would blank the block that replaces it, not just the pages still holding this one.',TimelineTrack:"Lewis, 2026-10-09/10 (decisions.md ND, approved): the horizontal year rail and the Story Timeline do one job, so the rail becomes the Story Timeline's fourth Display, Track. Retired by card [MERGE] One Text Block And Click Through Parts (2026-10-22).\n\nWHAT REPLACES IT: a Story Timeline (`Timeline`) with Display set to Track. It draws this section's own component (`components/TimelineTrack`), so for the same words it draws the same bytes: the band colour (`Background color`, the same built-in), the padding, the CTA and each milestone's `Upcoming` switch (shown on each entry under Track only). An entry's `Body` is the rail's blurb. `scripts/test-timeline-track-display.tsx` \xA72 holds the bytes.\n\nWHAT A MERCHANT LOSES on a NEW rail, said plainly: (1) the head cannot move into a box of its own (`headPlacement`); the layered rebuild puts a head in one Box with its content anyway. (2) The year and title of every milestone are not one text kind: each run is styled on its own. (3) The Width rows follow the Story Timeline's family (`background`), not the rail's (`capped`).\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Milestone Timeline still renders through it and can still be edited; no document is rewritten and NO MIGRATION RUNS.",KeyFeatures:`Lewis, 2026-10-10 (section-merges.md group 4, approved): one Cards section holds Cards and Key Features; Key Features' diamond cells are the card style "Label only". Retired by card [MERGE] One Text Block And Click Through Parts (2026-10-22).
2
2
 
3
3
  WHAT REPLACES IT: a Cards section with Card style set to Label only. It draws this section's own component (\`components/KeyFeatures\`), so for the same words it draws the same bytes: the pill eyebrow when no look is stored, the columns, each cell's link. A cell's words are the card's \`title\` (row "Feature label"), its link the card's \`href\` (row "Link"), both shown under Label only. \`scripts/test-cards-label-only.tsx\` \xA72 holds the bytes.
4
4
 
@@ -1 +1 @@
1
- "use client";import{jsx as d,jsxs as S}from"react/jsx-runtime";import{GroupLabel as x}from"efficient-web-builder/editor/lib/puck/controls";import{say as o,sayCount as b}from"efficient-web-builder/format/lib/editor-words";import{useEffect as A,useRef as P,useState as T}from"react";import{storefrontAdmin as _}from"../../render/lib/api/index.js";import{absolutizeApiUrl as v}from"efficient-web-builder/render/lib/media";import{getEditorToken as E}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as L}from"efficient-web-builder/render/lib/editor-site";import{snapshotChanged as N}from"efficient-web-builder/editor/components/useSnapshotSource";import j from"efficient-web-builder/editor/components/SourceStatus";const B=12;let n=null,p=null;function C(t=!1){const e=L();if((t||p!==e)&&(n=null),!n){const i=E();p=e,n=_.listBlogPosts(i,{visibleOnly:!0,siteId:e}).catch(()=>null)}return n}function D(t){if(!t)return"";const e=new Date(t);return Number.isNaN(e.getTime())?"":e.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"2-digit"})}function U(t){return{slug:t.slug,title:t.title,excerpt:t.excerpt,cover:t.cover_image?v(t.cover_image)??"":"",meta:t.category||void 0,dateLabel:D(t.published_at)||void 0}}function k({value:t,onChange:e,snapshotCount:i=B}){const[r,l]=T("idle"),u=Array.isArray(t),g=u?t.length:0,a=P(!0),c=y=>{l("loading"),C(y).then(f=>{if(!a.current)return;if(f===null){l("error");return}l("idle");const m=f.slice(0,i).map(U);N(m,t??null)&&e(m)})};A(()=>(a.current=!0,c(!1),()=>{a.current=!1}),[]);const s=o("Storefront → Blog"),h=r==="loading"?o("Syncing from {place}…",{place:s}):r==="error"?o("Couldn’t reach {place}.",{place:s}):u?b("Auto-synced from {place} · {n} post","Auto-synced from {place} · {n} posts",g,{place:s}):o("Linking to {place}…",{place:s});return S("div",{children:[d(x,{label:"Blog posts"}),d(j,{status:r,statusText:h,onRefresh:()=>c(!0),busy:r==="loading",spaced:!1,hint:o("Auto-refreshes from the most-recent visible posts each time you open the editor. Set how many appear with “Posts to display”.")})]})}export{k as default,C as loadPosts,U as toEventPost};
1
+ "use client";import{jsx as d,jsxs as S}from"react/jsx-runtime";import{GroupLabel as x}from"efficient-web-builder/editor/lib/document/controls";import{say as o,sayCount as b}from"efficient-web-builder/format/lib/editor-words";import{useEffect as A,useRef as P,useState as T}from"react";import{storefrontAdmin as _}from"../../render/lib/api/index.js";import{absolutizeApiUrl as v}from"efficient-web-builder/render/lib/media";import{getEditorToken as E}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as L}from"efficient-web-builder/render/lib/editor-site";import{snapshotChanged as N}from"efficient-web-builder/editor/components/useSnapshotSource";import j from"efficient-web-builder/editor/components/SourceStatus";const B=12;let n=null,p=null;function C(t=!1){const e=L();if((t||p!==e)&&(n=null),!n){const i=E();p=e,n=_.listBlogPosts(i,{visibleOnly:!0,siteId:e}).catch(()=>null)}return n}function D(t){if(!t)return"";const e=new Date(t);return Number.isNaN(e.getTime())?"":e.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"2-digit"})}function U(t){return{slug:t.slug,title:t.title,excerpt:t.excerpt,cover:t.cover_image?v(t.cover_image)??"":"",meta:t.category||void 0,dateLabel:D(t.published_at)||void 0}}function k({value:t,onChange:e,snapshotCount:i=B}){const[r,l]=T("idle"),u=Array.isArray(t),g=u?t.length:0,a=P(!0),c=y=>{l("loading"),C(y).then(f=>{if(!a.current)return;if(f===null){l("error");return}l("idle");const m=f.slice(0,i).map(U);N(m,t??null)&&e(m)})};A(()=>(a.current=!0,c(!1),()=>{a.current=!1}),[]);const s=o("Storefront → Blog"),h=r==="loading"?o("Syncing from {place}…",{place:s}):r==="error"?o("Couldn’t reach {place}.",{place:s}):u?b("Auto-synced from {place} · {n} post","Auto-synced from {place} · {n} posts",g,{place:s}):o("Linking to {place}…",{place:s});return S("div",{children:[d(x,{label:"Blog posts"}),d(j,{status:r,statusText:h,onRefresh:()=>c(!0),busy:r==="loading",spaced:!1,hint:o("Auto-refreshes from the most-recent visible posts each time you open the editor. Set how many appear with “Posts to display”.")})]})}export{k as default,C as loadPosts,U as toEventPost};
@@ -1,3 +1,3 @@
1
- import type { CustomField } from "efficient-web-builder/editor/lib/puck/controls";
1
+ import type { CustomField } from "efficient-web-builder/editor/lib/document/controls";
2
2
  import { type ConsentBannerLayout } from "efficient-web-builder/format/lib/content/consent-banner";
3
3
  export declare const consentBannerLayoutField: CustomField<ConsentBannerLayout>;
@@ -1 +1 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{useEasel as n}from"efficient-easel/easel";import{PreviewHeader as a}from"./PreviewHeader.js";import{SITE_HEADER_TYPE as i}from"efficient-web-builder/format/lib/puck/section-groups";function u({editing:e=!1}){return e?r(s,{}):null}function s(){return n(t=>(t.appState.data.content??[]).some(o=>o?.type===i))?null:r(a,{})}export{u as default};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{useEasel as n}from"efficient-easel/easel";import{PreviewHeader as a}from"./PreviewHeader.js";import{SITE_HEADER_TYPE as i}from"efficient-web-builder/format/lib/document/section-groups";function u({editing:e=!1}){return e?r(s,{}):null}function s(){return n(t=>(t.appState.data.content??[]).some(o=>o?.type===i))?null:r(a,{})}export{u as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r,Fragment as G}from"react/jsx-runtime";import{useCallback as L,useEffect as X,useRef as le,useState as E}from"react";import{ApiError as Te,storefrontAdmin as A}from"../../render/lib/api/index.js";import{requestMediaPick as Ee}from"efficient-easel/screen/lib/media-picker";import{refreshSiteLiveState as Ae}from"efficient-web-builder/editor/lib/site-live-state";import{useEaselHost as fe}from"efficient-easel/screen/lib/host";import{onHeaderMenusChanged as Pe}from"efficient-web-builder/format/lib/editor-events";import{loadAllSitesMenus as Oe,refreshAllSitesMenus as Me}from"../../render/lib/menu-source.js";import{headerMenuMissingWarning as Re}from"../../render/lib/content/menu-placeholder.js";import{say as l,sayCount as De}from"efficient-web-builder/format/lib/editor-words";import{sayWith as ne}from"../lib/say-with.js";import{NEUTRAL_SITE_NAME as ze}from"../../render/lib/content/site.js";import{WIDTH_CHOICE_LABEL as ge}from"efficient-web-builder/format/lib/content/section-width";import{usePreviewHeader as Be}from"efficient-web-builder/render/components/PreviewHeaderContext";import{HEADER_LOGO_PX as be,HEADER_LOGO_PX_MIN as Ge,HEADER_LOGO_PX_MAX as Ie}from"efficient-web-builder/render/components/Logo";import{HEADER_HEIGHT_PX as $,HEADER_MENU_GAP_PX as V}from"efficient-web-builder/render/lib/puck/header-clearance";import Fe from"efficient-web-builder/editor/components/SectionThemePicker";import{HEADER_THEME_FOLLOW as xe}from"../../render/lib/content/header-theme.js";import{resolveHeaderInkMode as We}from"efficient-web-builder/render/lib/puck/header-ink";import{absolutizeApiUrl as Ue}from"efficient-web-builder/render/lib/media";import{loadHeaderSettings as je,primeHeaderSettings as Xe,clearHeaderSettingsCache as Ve,toPreviewHeaderSettings as Ke}from"../lib/header-settings-source.js";import{Banner as qe,Button as ae,Drawer as Ye,InputNumber as $e,LoadingSpinner as Ze,MediaUploadField as Je,ShowWhen as K,Slider as Qe,Tabs as et,tabButtonId as tt,tabPanelId as lt}from"efficient-shell/ui";import{CountryShowAsTiles as nt}from"./CountryShowAsTiles.js";import{truthy as at,visibleFields as ot}from"efficient-web-builder/render/lib/puck/show-when";const it={field:"country_selector_enabled",is:!0},oe={not:{context:"placeholderMode",is:!0}},st={field:"menu_position",is:"beside"},rt={all:[{field:"logo_position",is:"center"},{not:{field:"menu_position",is:"center"}}]},ct={all:[oe,at("country_selector_enabled")]};import{SettingsDefaultReset as ie,SettingsSwitch as q}from"efficient-easel/panel";import{FieldSelect as se}from"efficient-easel/fields";import{useEaselStrings as dt}from"efficient-easel/strings";import{ListIcon as ut,LogoIcon as ht,SettingsIcon as mt,StylesIcon as pt}from"efficient-easel/icons";import{GroupLabel as ft,Segmented as P}from"efficient-web-builder/editor/lib/puck/controls";import{HintsToggle as re,SHOW_HINTS_DEFAULT as gt}from"efficient-web-builder/editor/components/WebsiteSettingsPanel";const ce="sf-header",_e="sf-header-size-label",ve="sf-header-gap-label",we="sf-header-height-label",Se=[{id:"logo",label:"Logo",icon:e(ht,{})},{id:"menu",label:"Menu",icon:e(ut,{}),showWhen:oe},{id:"tools",label:"Tools",icon:e(mt,{})},{id:"look",label:"Look",icon:e(pt,{})}];function bt({tokenRef:a,siteId:o,onClose:b,onAuthExpired:_,inline:O,placeholderMode:y,websiteName:v,onOpenWebsiteSettings:C}){const m=fe(),M=dt(),[n,x]=E(null),[R,w]=E(null),[D,Y]=E(!1),[d,k]=E(Se[0].id),[u,T]=E(gt),F=n,Z={placeholderMode:y},J=Object.values(ot(Object.fromEntries(Se.map(t=>[t.id,t])),F,Z)),z=J.find(t=>t.id===d)??J[0],[ye,Ce]=E(0),{setSettings:ue}=Be(),W=le(null),U=le(null),j=le(null);X(()=>{let t=!1,s=null,h=null;const c=3,H=(I,B=0)=>{t||w(null),je(I,o,B>0).then(He=>!t&&x(He)).catch(()=>{t||(B+1<c?h=setTimeout(()=>H(I,B+1),600*(B+1)):w(l("Could not load header settings.")))})},pe=a.current;if(pe)H(pe);else{let I=0;s=setInterval(()=>{const B=a.current;if(B){s&&clearInterval(s),s=null,t||w(null),H(B);return}I+=250,I===5e3&&!t&&w(l("Waiting for editor authorization…")),I>=3e4&&(s&&clearInterval(s),s=null,t||w(l("Not authorized yet — reopen once the editor has loaded.")))},250)}return()=>{t=!0,s&&clearInterval(s),h&&clearTimeout(h)}},[a,ye,o]),X(()=>{n&&ue(Ke(n))},[n,ue]),X(()=>()=>{W.current&&clearTimeout(W.current),U.current&&clearTimeout(U.current),j.current&&clearTimeout(j.current)},[]);const g=L(async(t,s)=>{const h=a.current;if(!h||!n)return;const c=n;s&&x({...n,...s}),Y(!0),w(null);try{const H=await t(h);x(H),Xe(H,o),Ae()}catch(H){x(c),H instanceof Te&&H.status===401?(Ve(o),_?.(),w(l("Authorization expired — try again in a moment."))):w(l("Could not save. Please retry."))}finally{Y(!1)}},[n,a,_,o]),p=L(t=>g(s=>A.updateHeaderSettings(t,s,o??void 0),t),[g,o]),he=L(t=>{g(s=>A.setHeaderLogoFromAsset(t,s,o??void 0))},[g,o]),Le=L(()=>{Ee(m,{accept:"image/svg+xml",title:l("Logo (SVG)")}).then(t=>{t&&he(t.id)})},[he]),Q=L((t,s=!0)=>{x(c=>c&&{...c,logo_size_px:t}),W.current&&clearTimeout(W.current);const h=()=>{g(c=>A.updateHeaderSettings({logo_size_px:t},c,o??void 0))};s?h():W.current=setTimeout(h,400)},[g,o]),ee=L((t,s=!0)=>{x(c=>c&&{...c,height_px:t}),U.current&&clearTimeout(U.current);const h=()=>{g(c=>A.updateHeaderSettings({height_px:t},c,o??void 0))};s?h():U.current=setTimeout(h,400)},[g,o]),te=L((t,s=!0)=>{x(c=>c&&{...c,menu_gap_px:t}),j.current&&clearTimeout(j.current);const h=()=>{g(c=>A.updateHeaderSettings({menu_gap_px:t},c,o??void 0))};s?h():j.current=setTimeout(h,400)},[g,o]),Ne=L(()=>{g(async t=>{const s=await A.clearHeaderLogo(t,o??void 0);return s.reverse_logo?A.updateHeaderSettings({reverse_logo:!1},t,o??void 0):s})},[g,o]),ke=L(t=>{x(s=>s&&{...s,menu:t?.id??null,menu_handle:t?.handle??null,menu_name:t?.name??null,menu_items:t?t.items.map(h=>({label:h.label,url:h.url,dropdown_menu:h.dropdown_menu??null,dropdown_items:h.dropdown_items??[]})):[]}),g(s=>A.updateHeaderSettings({menu:t?.id??null},s,o??void 0))},[g,o]),me=r(G,{children:[R&&e(qe,{tone:"danger",className:"mx-4 mt-3",action:n?void 0:e(ae,{variant:"secondary",size:"md",onClick:()=>Ce(t=>t+1),children:l("Retry")}),children:R}),n?r(G,{children:[e(Tt,{tabs:J,activeId:z.id,onSelect:k}),r("div",{id:lt(ce,z.id),role:"tabpanel","aria-labelledby":tt(ce,z.id),className:"flex flex-col p-4 [&>*+*]:mt-3",children:[z.id==="logo"&&r(G,{children:[e(S,{label:"Image"}),e(K,{rule:oe,values:F,context:Z,children:e(xt,{settings:n,websiteName:v,onPick:Le,onClear:Ne,showHint:u})}),e(f,{label:"Reverse the Logo",children:e(q,{checked:n.reverse_logo,onChange:t=>p({reverse_logo:t}),ariaLabel:l("Reverse the Logo")})}),e(N,{shown:u,children:l("Keeps the logo readable on any header — flips just its black & white parts to contrast the bar behind it (in both light and dark themes). Any other colors are kept as-is.")}),e(S,{label:"Placement"}),e(vt,{label:i.logoPosition.label,value:i.logoPosition.options.find(t=>t.value===i.logoPosition.choose(n.logo_position))?.label,children:e(P,{value:i.logoPosition.choose(n.logo_position),options:i.logoPosition.options,onChange:t=>p({logo_position:t}),ariaLabel:i.logoPosition.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:_e,className:"text-xs text-[var(--ink-muted)]",children:l("Size")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.logo_size_px!=null||void 0,children:[n.logo_size_px??be[n.logo_size],"px"]}),e(ie,{label:l("Size"),words:M.panel,changed:n.logo_size_px!=null,onReset:()=>Q(null)})]})]}),e(de,{labelledBy:_e,min:Ge,max:Ie,step:2,value:n.logo_size_px??be[n.logo_size],onPreview:t=>Q(t,!1),onCommit:t=>Q(t,!0)}),e(N,{shown:u,children:l("Sets the logo’s height; the width follows the logo’s own proportions.")})]}),e(re,{shown:u,onChange:T})]}),z.id==="menu"&&r(G,{children:[e(S,{label:"Links"}),e(_t,{token:a.current,menuId:n.menu,menuName:n.menu_name,itemCount:n.menu_items?.length??0,onPick:ke}),e(f,{label:i.menuAlign.label,children:e(P,{value:i.menuAlign.choose(n.menu_position),options:i.menuAlign.options.filter(t=>t.value!=="beside"||n.logo_position!=="center"),onChange:t=>p({menu_position:t}),ariaLabel:i.menuAlign.label})}),e(K,{rule:st,values:F,children:r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:ve,className:"text-xs text-[var(--ink-muted)]",children:l("Space from the logo")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.menu_gap_px!=null||void 0,children:[n.menu_gap_px??V.default,"px"]}),e(ie,{label:l("Space from the logo"),words:M.panel,changed:n.menu_gap_px!=null,onReset:()=>te(null)})]})]}),e(de,{labelledBy:ve,min:V.min,max:V.max,step:V.step,value:n.menu_gap_px??V.default,onPreview:t=>te(t,!1),onCommit:t=>te(t,!0)}),e(N,{shown:u,children:l("How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.")})]})}),e(f,{label:i.menuRow.label,children:e(P,{value:i.menuRow.choose(n.menu_row),options:i.menuRow.options,onChange:t=>p({menu_row:t}),ariaLabel:i.menuRow.label})}),e(K,{rule:rt,values:F,children:e(f,{label:"Left items",children:e("div",{className:"w-16",children:e(se,{value:n.menu_split??3,ariaLabel:l("Left items"),onChange:t=>p({menu_split:t}),options:[1,2,3,4].map(t=>({label:String(t),value:t}))})})})}),e(f,{label:i.navTextCase.label,children:e(P,{value:i.navTextCase.choose(n.nav_text_case),options:i.navTextCase.options,onChange:t=>p({nav_text_case:t}),ariaLabel:i.navTextCase.label})}),e(N,{shown:u,children:ne(l("{uppercase} draws SEARCH and BAG; {capitalised} draws Search and Bag. It covers the menu links and the Tools words together, and it leaves a name like FusionForge exactly as you typed it."),{uppercase:e("strong",{children:l("Uppercase")}),capitalised:e("strong",{children:l("Capitalised")})})})]}),z.id==="tools"&&r(G,{children:[e(S,{label:"Style"}),e(f,{label:i.utilStyle.label,children:e(P,{value:i.utilStyle.choose(n.util_style),options:i.utilStyle.options,onChange:t=>p({util_style:t}),ariaLabel:i.utilStyle.label})}),e(N,{shown:u,children:ne(l("{text} draws the words — Search, Account, Bag — instead of the little pictures. It changes how they look, not whether they are shown: that stays with the switches below."),{text:e("strong",{children:l("Text")})})}),e(S,{label:"Search"}),e(f,{label:"Search",children:e(q,{checked:n.search_enabled,onChange:t=>p({search_enabled:t}),ariaLabel:l("Search")})}),e(f,{label:i.searchPosition.label,children:e(P,{value:i.searchPosition.choose(n.search_position),options:i.searchPosition.options,onChange:t=>p({search_position:t}),ariaLabel:i.searchPosition.label})}),e(S,{label:"Country selector"}),e(f,{label:"Show selector",children:e(q,{checked:n.country_selector_enabled,onChange:t=>p({country_selector_enabled:t}),ariaLabel:l("Show selector")})}),e(K,{rule:it,values:{country_selector_enabled:n.country_selector_enabled},children:e(f,{label:"Show as",stacked:!0,children:e(nt,{value:n.country_selector_show_as,onChange:t=>p({country_selector_show_as:t})})})}),e(K,{rule:ct,values:F,context:Z,children:e(N,{shown:u,children:ne(l("Which countries this website serves — and each region's own URL — is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration."),{place:e("strong",{children:l("Storefront › Settings › Regions & currencies")})})})}),e(S,{label:"Account and cart"}),e(f,{label:"Account",children:e(q,{checked:n.account_enabled??!0,onChange:t=>p({account_enabled:t}),ariaLabel:l("Account")})}),e(f,{label:"Cart",children:e(q,{checked:n.cart_enabled??!0,onChange:t=>p({cart_enabled:t}),ariaLabel:l("Cart")})}),e(re,{shown:u,onChange:T})]}),z.id==="look"&&r(G,{children:[e(S,{label:"Dimensions"}),e(f,{label:i.width.label,children:e(P,{value:i.width.choose(n.width),options:i.width.options,onChange:t=>p({width:t}),ariaLabel:i.width.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:we,className:"text-xs text-[var(--ink-muted)]",children:l("Height")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.height_px!=null||void 0,children:[n.height_px??$.default,"px"]}),e(ie,{label:l("Height"),words:M.panel,changed:n.height_px!=null,onReset:()=>ee(null)})]})]}),e(de,{labelledBy:we,min:$.min,max:$.max,step:2,value:n.height_px??$.default,onPreview:t=>ee(t,!1),onCommit:t=>ee(t,!0)}),e(N,{shown:u,children:l("Sets how tall the header bar is; the content below it shifts down to match.")})]}),e(f,{label:"Border thickness",children:e("div",{className:"w-24",children:e($e,{value:n.border_thickness,min:0,max:20,precision:0,size:"md",suffix:"px","aria-label":l("Border thickness"),onChange:t=>p({border_thickness:Math.max(0,t??0)})})})}),e(S,{label:"Color"}),e(f,{label:"Theme",children:e(Fe,{value:n.theme??xe,onChange:t=>p({theme:t===xe?null:t}),followLabel:l("Follow the site theme")})}),e(N,{shown:u,children:l("The color the bar paints once it is solid — after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.")}),e(f,{label:i.topTextColor.label,children:e(P,{value:i.topTextColor.choose(n.top_text_color),options:i.topTextColor.options,onChange:t=>p({top_text_color:t}),ariaLabel:i.topTextColor.label})}),e(N,{shown:u,children:l("Auto reads what the first section on each page says it is — dark, light or accent — and picks the text that can be read on it. Set Light or Dark to decide it yourself when Auto reads a page wrong.")}),e(S,{label:"Behavior"}),e(f,{label:"Sticky header",children:e("div",{className:"w-32",children:e(se,{value:n.sticky,ariaLabel:l("Sticky header"),onChange:t=>p({sticky:t}),options:[{label:l("None"),value:"none"},{label:l("Always"),value:"always"},{label:l("On scroll up"),value:"on_scroll_up"}]})})}),C&&r(G,{children:[e(S,{label:"Display mode"}),e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:l("Set the default Light / Dark / Auto mode and show or hide the light↔dark switch in Appearance.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:C,children:l("Set up display mode →")})]}),e(re,{shown:u,onChange:T})]})]})]}):R?null:e(Ze,{size:"sm",padding:"p-4",label:l("Loading…")})]});return O?r("div",{className:"flex flex-col",children:[D&&e("div",{className:"px-4 pt-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]}):r(Ye,{open:!0,onClose:b??(()=>{}),side:"right",size:"sm",title:l("Header"),children:[D&&e("div",{className:"pb-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]})}function xt({settings:a,websiteName:o,onPick:b,onClear:_,showHint:O}){const y=!!a.logo_url,v=!y&&!!a.default_logo_url,C=Ue(a.effective_logo_url),m=o&&o.trim()?o.trim():ze;return r("div",{className:"flex flex-col gap-2",children:[e(Je,{value:C||"",onChange:M=>{M||_()},onPick:b,accept:"image/svg+xml,.svg",acceptHint:"SVG",fit:"contain",height:80,placeholder:l("No logo — “{name}” wordmark shown",{name:m}),replaceLabel:y?l("Replace SVG logo"):l("Upload SVG logo"),allowRemove:y,removeLabel:l("Use company default")}),e(N,{shown:O,children:y?l("Custom SVG logo uploaded for this store."):v?l("Using your company logo from the database."):l("No company logo on file — upload an SVG or the wordmark is used.")})]})}function _t({token:a,menuId:o,menuName:b,itemCount:_,onPick:O}){const y=fe(),[v,C]=E(null),[m,M]=E(!1),n=L(d=>{C(d),M(!0)},[]);X(()=>{let d=!1;return Oe(a).then(k=>!d&&n(k)).catch(()=>!d&&C([])),()=>{d=!0}},[a,n]),X(()=>{let d=!1;const k=Pe(()=>{Me(a).then(u=>!d&&n(u)).catch(()=>{})});return()=>{d=!0,k()}},[a,n]);const x=v===null,R=!x&&(v?.length??0)===0,w=!x&&(v??[]).some(d=>d.id===o),D=w?o:"",Y=m&&!!o&&!w;return r("div",{className:"flex flex-col gap-2",children:[e(f,{label:"Menu",children:e("div",{className:"w-[170px] max-w-full",children:e(se,{value:D,ariaLabel:l("Menu"),readOnly:x||R,onChange:d=>{const k=d?(v??[]).find(u=>u.id===d):null;O(k?{...k,items:k.items.map(u=>({...u,dropdown_items:(v??[]).find(T=>T.id===u.dropdown_menu)?.items.map(T=>({label:T.label,url:T.url}))??[]}))}:null)},options:[{label:x?l("Loading…"):R?l("No menus"):l("Default links"),value:""},...(v??[]).map(d=>({label:`${d.name} (${d.item_count??d.items.length})`,value:d.id}))]})})}),Y?e("p",{className:"text-[12px] text-[var(--sf-warning,#b45309)]",children:Re()}):e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:D?De("Header shows “{name}” — {n} link.","Header shows “{name}” — {n} links.",_,{name:b??l("the linked menu")}):R?l("No menus yet. Create one in {place}, then pick it here.",{place:l("Storefront → Menus")}):l("Pick a menu to drive the header links, or keep the built-in default links.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:()=>y.send("storefront-editor:open-menus",{menuId:D||null}),children:D?l("Edit menu →"):l("Manage menus →")})]})}function N({shown:a,children:o}){return a?e("p",{className:"text-[11px] text-[var(--sf-muted)]",children:o}):null}function de({labelledBy:a,value:o,min:b,max:_,step:O,onPreview:y,onCommit:v}){const C=m=>{m instanceof HTMLInputElement&&m.type==="range"&&v(Number(m.value))};return e("div",{onPointerUp:m=>C(m.target),onKeyUp:m=>{/^(Arrow|Home|End|Page)/.test(m.key)&&C(m.target)},children:e(Qe,{value:o,min:b,max:_,step:O,showInput:!1,size:"sm","aria-labelledby":a,valueText:m=>l("{n} pixels",{n:m}),onChange:m=>{m!=null&&y(m)}})})}function vt({label:a,value:o,children:b}){return r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{className:"text-xs text-[var(--ink-muted)]",children:l(a)}),o&&e("span",{className:"text-[12px] text-[var(--ink-faint)]",children:l(o)})]}),b]})}function S({label:a}){return e(ft,{label:a})}function f({label:a,children:o,stacked:b=!1}){return b?r("div",{className:"flex flex-col gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),o]}):r("div",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),e("div",{className:"flex flex-shrink-0 grow justify-end",children:o})]})}const wt=[{label:"Left",value:"left"},{label:"Center",value:"center"}],St=[{label:"Left",value:"left"},{label:"Right",value:"right"}],yt=[{label:"Right",value:"left"},{label:"Centered",value:"center"},{label:"Beside logo",value:"beside"}],Ct=[{label:"Own row",value:"top"},{label:"Same row",value:"inline"}],Lt=[{label:ge.page,value:"page"},{label:ge.full,value:"full"}],Nt=[{label:"Icon",value:"icon"},{label:"Text",value:"text"}],kt=[{label:"Uppercase",value:"uppercase"},{label:"Capitalised",value:"capitalised"}],Ht=[{label:"Auto",value:"auto"},{label:"Light",value:"light"},{label:"Dark",value:"dark"}],i={logoPosition:{label:"Position",options:wt,choose:a=>a==="right"?"center":a},menuAlign:{label:"Alignment",options:yt,choose:a=>a==="center"?"center":a==="beside"?"beside":"left"},menuRow:{label:"Row",options:Ct,choose:a=>a==="inline"?"inline":"top"},searchPosition:{label:"Position",options:St,choose:a=>a},width:{label:"Width",options:Lt,choose:a=>a},navTextCase:{label:"Letters",options:kt,choose:a=>a==="capitalised"?"capitalised":"uppercase"},utilStyle:{label:"Show as",options:Nt,choose:a=>a==="text"?"text":"icon"},topTextColor:{label:"Text color at the top",options:Ht,choose:a=>We(a)}};function Tt({tabs:a,activeId:o,onSelect:b}){return e("div",{className:"es-insp-tabs",children:e(et,{variant:"underline",block:!0,labelsFit:!0,"aria-label":l("Header settings"),idPrefix:ce,value:o,onChange:b,items:a.map(_=>({id:_.id,icon:_.icon,label:l(_.label)}))})})}export{f as Field,i as HEADER_SEGMENTED,Se as HEADER_TABS,ce as HEADER_TABS_ID_PREFIX,Tt as HeaderTabStrip,oe as OFF_PLACEHOLDER,bt as default};
1
+ "use client";import{jsx as e,jsxs as r,Fragment as G}from"react/jsx-runtime";import{useCallback as L,useEffect as X,useRef as le,useState as E}from"react";import{ApiError as Te,storefrontAdmin as A}from"../../render/lib/api/index.js";import{requestMediaPick as Ee}from"efficient-easel/screen/lib/media-picker";import{refreshSiteLiveState as Ae}from"efficient-web-builder/editor/lib/site-live-state";import{useEaselHost as fe}from"efficient-easel/screen/lib/host";import{onHeaderMenusChanged as Pe}from"efficient-web-builder/format/lib/editor-events";import{loadAllSitesMenus as Oe,refreshAllSitesMenus as Me}from"../../render/lib/menu-source.js";import{headerMenuMissingWarning as Re}from"../../render/lib/content/menu-placeholder.js";import{say as l,sayCount as De}from"efficient-web-builder/format/lib/editor-words";import{sayWith as ne}from"../lib/say-with.js";import{NEUTRAL_SITE_NAME as ze}from"../../render/lib/content/site.js";import{WIDTH_CHOICE_LABEL as ge}from"efficient-web-builder/format/lib/content/section-width";import{usePreviewHeader as Be}from"efficient-web-builder/render/components/PreviewHeaderContext";import{HEADER_LOGO_PX as be,HEADER_LOGO_PX_MIN as Ge,HEADER_LOGO_PX_MAX as Ie}from"efficient-web-builder/render/components/Logo";import{HEADER_HEIGHT_PX as $,HEADER_MENU_GAP_PX as V}from"efficient-web-builder/render/lib/document/header-clearance";import Fe from"efficient-web-builder/editor/components/SectionThemePicker";import{HEADER_THEME_FOLLOW as xe}from"../../render/lib/content/header-theme.js";import{resolveHeaderInkMode as We}from"efficient-web-builder/render/lib/document/header-ink";import{absolutizeApiUrl as Ue}from"efficient-web-builder/render/lib/media";import{loadHeaderSettings as je,primeHeaderSettings as Xe,clearHeaderSettingsCache as Ve,toPreviewHeaderSettings as Ke}from"../lib/header-settings-source.js";import{Banner as qe,Button as ae,Drawer as Ye,InputNumber as $e,LoadingSpinner as Ze,MediaUploadField as Je,ShowWhen as K,Slider as Qe,Tabs as et,tabButtonId as tt,tabPanelId as lt}from"efficient-shell/ui";import{CountryShowAsTiles as nt}from"./CountryShowAsTiles.js";import{truthy as at,visibleFields as ot}from"efficient-web-builder/render/lib/document/show-when";const it={field:"country_selector_enabled",is:!0},oe={not:{context:"placeholderMode",is:!0}},st={field:"menu_position",is:"beside"},rt={all:[{field:"logo_position",is:"center"},{not:{field:"menu_position",is:"center"}}]},ct={all:[oe,at("country_selector_enabled")]};import{SettingsDefaultReset as ie,SettingsSwitch as q}from"efficient-easel/panel";import{FieldSelect as se}from"efficient-easel/fields";import{useEaselStrings as dt}from"efficient-easel/strings";import{ListIcon as ut,LogoIcon as ht,SettingsIcon as mt,StylesIcon as pt}from"efficient-easel/icons";import{GroupLabel as ft,Segmented as P}from"efficient-web-builder/editor/lib/document/controls";import{HintsToggle as re,SHOW_HINTS_DEFAULT as gt}from"efficient-web-builder/editor/components/WebsiteSettingsPanel";const ce="sf-header",_e="sf-header-size-label",ve="sf-header-gap-label",we="sf-header-height-label",Se=[{id:"logo",label:"Logo",icon:e(ht,{})},{id:"menu",label:"Menu",icon:e(ut,{}),showWhen:oe},{id:"tools",label:"Tools",icon:e(mt,{})},{id:"look",label:"Look",icon:e(pt,{})}];function bt({tokenRef:a,siteId:o,onClose:b,onAuthExpired:_,inline:O,placeholderMode:y,websiteName:v,onOpenWebsiteSettings:C}){const m=fe(),M=dt(),[n,x]=E(null),[R,w]=E(null),[D,Y]=E(!1),[d,k]=E(Se[0].id),[u,T]=E(gt),F=n,Z={placeholderMode:y},J=Object.values(ot(Object.fromEntries(Se.map(t=>[t.id,t])),F,Z)),z=J.find(t=>t.id===d)??J[0],[ye,Ce]=E(0),{setSettings:ue}=Be(),W=le(null),U=le(null),j=le(null);X(()=>{let t=!1,s=null,h=null;const c=3,H=(I,B=0)=>{t||w(null),je(I,o,B>0).then(He=>!t&&x(He)).catch(()=>{t||(B+1<c?h=setTimeout(()=>H(I,B+1),600*(B+1)):w(l("Could not load header settings.")))})},pe=a.current;if(pe)H(pe);else{let I=0;s=setInterval(()=>{const B=a.current;if(B){s&&clearInterval(s),s=null,t||w(null),H(B);return}I+=250,I===5e3&&!t&&w(l("Waiting for editor authorization…")),I>=3e4&&(s&&clearInterval(s),s=null,t||w(l("Not authorized yet — reopen once the editor has loaded.")))},250)}return()=>{t=!0,s&&clearInterval(s),h&&clearTimeout(h)}},[a,ye,o]),X(()=>{n&&ue(Ke(n))},[n,ue]),X(()=>()=>{W.current&&clearTimeout(W.current),U.current&&clearTimeout(U.current),j.current&&clearTimeout(j.current)},[]);const g=L(async(t,s)=>{const h=a.current;if(!h||!n)return;const c=n;s&&x({...n,...s}),Y(!0),w(null);try{const H=await t(h);x(H),Xe(H,o),Ae()}catch(H){x(c),H instanceof Te&&H.status===401?(Ve(o),_?.(),w(l("Authorization expired — try again in a moment."))):w(l("Could not save. Please retry."))}finally{Y(!1)}},[n,a,_,o]),p=L(t=>g(s=>A.updateHeaderSettings(t,s,o??void 0),t),[g,o]),he=L(t=>{g(s=>A.setHeaderLogoFromAsset(t,s,o??void 0))},[g,o]),Le=L(()=>{Ee(m,{accept:"image/svg+xml",title:l("Logo (SVG)")}).then(t=>{t&&he(t.id)})},[he]),Q=L((t,s=!0)=>{x(c=>c&&{...c,logo_size_px:t}),W.current&&clearTimeout(W.current);const h=()=>{g(c=>A.updateHeaderSettings({logo_size_px:t},c,o??void 0))};s?h():W.current=setTimeout(h,400)},[g,o]),ee=L((t,s=!0)=>{x(c=>c&&{...c,height_px:t}),U.current&&clearTimeout(U.current);const h=()=>{g(c=>A.updateHeaderSettings({height_px:t},c,o??void 0))};s?h():U.current=setTimeout(h,400)},[g,o]),te=L((t,s=!0)=>{x(c=>c&&{...c,menu_gap_px:t}),j.current&&clearTimeout(j.current);const h=()=>{g(c=>A.updateHeaderSettings({menu_gap_px:t},c,o??void 0))};s?h():j.current=setTimeout(h,400)},[g,o]),Ne=L(()=>{g(async t=>{const s=await A.clearHeaderLogo(t,o??void 0);return s.reverse_logo?A.updateHeaderSettings({reverse_logo:!1},t,o??void 0):s})},[g,o]),ke=L(t=>{x(s=>s&&{...s,menu:t?.id??null,menu_handle:t?.handle??null,menu_name:t?.name??null,menu_items:t?t.items.map(h=>({label:h.label,url:h.url,dropdown_menu:h.dropdown_menu??null,dropdown_items:h.dropdown_items??[]})):[]}),g(s=>A.updateHeaderSettings({menu:t?.id??null},s,o??void 0))},[g,o]),me=r(G,{children:[R&&e(qe,{tone:"danger",className:"mx-4 mt-3",action:n?void 0:e(ae,{variant:"secondary",size:"md",onClick:()=>Ce(t=>t+1),children:l("Retry")}),children:R}),n?r(G,{children:[e(Tt,{tabs:J,activeId:z.id,onSelect:k}),r("div",{id:lt(ce,z.id),role:"tabpanel","aria-labelledby":tt(ce,z.id),className:"flex flex-col p-4 [&>*+*]:mt-3",children:[z.id==="logo"&&r(G,{children:[e(S,{label:"Image"}),e(K,{rule:oe,values:F,context:Z,children:e(xt,{settings:n,websiteName:v,onPick:Le,onClear:Ne,showHint:u})}),e(f,{label:"Reverse the Logo",children:e(q,{checked:n.reverse_logo,onChange:t=>p({reverse_logo:t}),ariaLabel:l("Reverse the Logo")})}),e(N,{shown:u,children:l("Keeps the logo readable on any header — flips just its black & white parts to contrast the bar behind it (in both light and dark themes). Any other colors are kept as-is.")}),e(S,{label:"Placement"}),e(vt,{label:i.logoPosition.label,value:i.logoPosition.options.find(t=>t.value===i.logoPosition.choose(n.logo_position))?.label,children:e(P,{value:i.logoPosition.choose(n.logo_position),options:i.logoPosition.options,onChange:t=>p({logo_position:t}),ariaLabel:i.logoPosition.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:_e,className:"text-xs text-[var(--ink-muted)]",children:l("Size")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.logo_size_px!=null||void 0,children:[n.logo_size_px??be[n.logo_size],"px"]}),e(ie,{label:l("Size"),words:M.panel,changed:n.logo_size_px!=null,onReset:()=>Q(null)})]})]}),e(de,{labelledBy:_e,min:Ge,max:Ie,step:2,value:n.logo_size_px??be[n.logo_size],onPreview:t=>Q(t,!1),onCommit:t=>Q(t,!0)}),e(N,{shown:u,children:l("Sets the logo’s height; the width follows the logo’s own proportions.")})]}),e(re,{shown:u,onChange:T})]}),z.id==="menu"&&r(G,{children:[e(S,{label:"Links"}),e(_t,{token:a.current,menuId:n.menu,menuName:n.menu_name,itemCount:n.menu_items?.length??0,onPick:ke}),e(f,{label:i.menuAlign.label,children:e(P,{value:i.menuAlign.choose(n.menu_position),options:i.menuAlign.options.filter(t=>t.value!=="beside"||n.logo_position!=="center"),onChange:t=>p({menu_position:t}),ariaLabel:i.menuAlign.label})}),e(K,{rule:st,values:F,children:r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:ve,className:"text-xs text-[var(--ink-muted)]",children:l("Space from the logo")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.menu_gap_px!=null||void 0,children:[n.menu_gap_px??V.default,"px"]}),e(ie,{label:l("Space from the logo"),words:M.panel,changed:n.menu_gap_px!=null,onReset:()=>te(null)})]})]}),e(de,{labelledBy:ve,min:V.min,max:V.max,step:V.step,value:n.menu_gap_px??V.default,onPreview:t=>te(t,!1),onCommit:t=>te(t,!0)}),e(N,{shown:u,children:l("How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.")})]})}),e(f,{label:i.menuRow.label,children:e(P,{value:i.menuRow.choose(n.menu_row),options:i.menuRow.options,onChange:t=>p({menu_row:t}),ariaLabel:i.menuRow.label})}),e(K,{rule:rt,values:F,children:e(f,{label:"Left items",children:e("div",{className:"w-16",children:e(se,{value:n.menu_split??3,ariaLabel:l("Left items"),onChange:t=>p({menu_split:t}),options:[1,2,3,4].map(t=>({label:String(t),value:t}))})})})}),e(f,{label:i.navTextCase.label,children:e(P,{value:i.navTextCase.choose(n.nav_text_case),options:i.navTextCase.options,onChange:t=>p({nav_text_case:t}),ariaLabel:i.navTextCase.label})}),e(N,{shown:u,children:ne(l("{uppercase} draws SEARCH and BAG; {capitalised} draws Search and Bag. It covers the menu links and the Tools words together, and it leaves a name like FusionForge exactly as you typed it."),{uppercase:e("strong",{children:l("Uppercase")}),capitalised:e("strong",{children:l("Capitalised")})})})]}),z.id==="tools"&&r(G,{children:[e(S,{label:"Style"}),e(f,{label:i.utilStyle.label,children:e(P,{value:i.utilStyle.choose(n.util_style),options:i.utilStyle.options,onChange:t=>p({util_style:t}),ariaLabel:i.utilStyle.label})}),e(N,{shown:u,children:ne(l("{text} draws the words — Search, Account, Bag — instead of the little pictures. It changes how they look, not whether they are shown: that stays with the switches below."),{text:e("strong",{children:l("Text")})})}),e(S,{label:"Search"}),e(f,{label:"Search",children:e(q,{checked:n.search_enabled,onChange:t=>p({search_enabled:t}),ariaLabel:l("Search")})}),e(f,{label:i.searchPosition.label,children:e(P,{value:i.searchPosition.choose(n.search_position),options:i.searchPosition.options,onChange:t=>p({search_position:t}),ariaLabel:i.searchPosition.label})}),e(S,{label:"Country selector"}),e(f,{label:"Show selector",children:e(q,{checked:n.country_selector_enabled,onChange:t=>p({country_selector_enabled:t}),ariaLabel:l("Show selector")})}),e(K,{rule:it,values:{country_selector_enabled:n.country_selector_enabled},children:e(f,{label:"Show as",stacked:!0,children:e(nt,{value:n.country_selector_show_as,onChange:t=>p({country_selector_show_as:t})})})}),e(K,{rule:ct,values:F,context:Z,children:e(N,{shown:u,children:ne(l("Which countries this website serves — and each region's own URL — is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration."),{place:e("strong",{children:l("Storefront › Settings › Regions & currencies")})})})}),e(S,{label:"Account and cart"}),e(f,{label:"Account",children:e(q,{checked:n.account_enabled??!0,onChange:t=>p({account_enabled:t}),ariaLabel:l("Account")})}),e(f,{label:"Cart",children:e(q,{checked:n.cart_enabled??!0,onChange:t=>p({cart_enabled:t}),ariaLabel:l("Cart")})}),e(re,{shown:u,onChange:T})]}),z.id==="look"&&r(G,{children:[e(S,{label:"Dimensions"}),e(f,{label:i.width.label,children:e(P,{value:i.width.choose(n.width),options:i.width.options,onChange:t=>p({width:t}),ariaLabel:i.width.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:we,className:"text-xs text-[var(--ink-muted)]",children:l("Height")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.height_px!=null||void 0,children:[n.height_px??$.default,"px"]}),e(ie,{label:l("Height"),words:M.panel,changed:n.height_px!=null,onReset:()=>ee(null)})]})]}),e(de,{labelledBy:we,min:$.min,max:$.max,step:2,value:n.height_px??$.default,onPreview:t=>ee(t,!1),onCommit:t=>ee(t,!0)}),e(N,{shown:u,children:l("Sets how tall the header bar is; the content below it shifts down to match.")})]}),e(f,{label:"Border thickness",children:e("div",{className:"w-24",children:e($e,{value:n.border_thickness,min:0,max:20,precision:0,size:"md",suffix:"px","aria-label":l("Border thickness"),onChange:t=>p({border_thickness:Math.max(0,t??0)})})})}),e(S,{label:"Color"}),e(f,{label:"Theme",children:e(Fe,{value:n.theme??xe,onChange:t=>p({theme:t===xe?null:t}),followLabel:l("Follow the site theme")})}),e(N,{shown:u,children:l("The color the bar paints once it is solid — after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.")}),e(f,{label:i.topTextColor.label,children:e(P,{value:i.topTextColor.choose(n.top_text_color),options:i.topTextColor.options,onChange:t=>p({top_text_color:t}),ariaLabel:i.topTextColor.label})}),e(N,{shown:u,children:l("Auto reads what the first section on each page says it is — dark, light or accent — and picks the text that can be read on it. Set Light or Dark to decide it yourself when Auto reads a page wrong.")}),e(S,{label:"Behavior"}),e(f,{label:"Sticky header",children:e("div",{className:"w-32",children:e(se,{value:n.sticky,ariaLabel:l("Sticky header"),onChange:t=>p({sticky:t}),options:[{label:l("None"),value:"none"},{label:l("Always"),value:"always"},{label:l("On scroll up"),value:"on_scroll_up"}]})})}),C&&r(G,{children:[e(S,{label:"Display mode"}),e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:l("Set the default Light / Dark / Auto mode and show or hide the light↔dark switch in Appearance.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:C,children:l("Set up display mode →")})]}),e(re,{shown:u,onChange:T})]})]})]}):R?null:e(Ze,{size:"sm",padding:"p-4",label:l("Loading…")})]});return O?r("div",{className:"flex flex-col",children:[D&&e("div",{className:"px-4 pt-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]}):r(Ye,{open:!0,onClose:b??(()=>{}),side:"right",size:"sm",title:l("Header"),children:[D&&e("div",{className:"pb-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]})}function xt({settings:a,websiteName:o,onPick:b,onClear:_,showHint:O}){const y=!!a.logo_url,v=!y&&!!a.default_logo_url,C=Ue(a.effective_logo_url),m=o&&o.trim()?o.trim():ze;return r("div",{className:"flex flex-col gap-2",children:[e(Je,{value:C||"",onChange:M=>{M||_()},onPick:b,accept:"image/svg+xml,.svg",acceptHint:"SVG",fit:"contain",height:80,placeholder:l("No logo — “{name}” wordmark shown",{name:m}),replaceLabel:y?l("Replace SVG logo"):l("Upload SVG logo"),allowRemove:y,removeLabel:l("Use company default")}),e(N,{shown:O,children:y?l("Custom SVG logo uploaded for this store."):v?l("Using your company logo from the database."):l("No company logo on file — upload an SVG or the wordmark is used.")})]})}function _t({token:a,menuId:o,menuName:b,itemCount:_,onPick:O}){const y=fe(),[v,C]=E(null),[m,M]=E(!1),n=L(d=>{C(d),M(!0)},[]);X(()=>{let d=!1;return Oe(a).then(k=>!d&&n(k)).catch(()=>!d&&C([])),()=>{d=!0}},[a,n]),X(()=>{let d=!1;const k=Pe(()=>{Me(a).then(u=>!d&&n(u)).catch(()=>{})});return()=>{d=!0,k()}},[a,n]);const x=v===null,R=!x&&(v?.length??0)===0,w=!x&&(v??[]).some(d=>d.id===o),D=w?o:"",Y=m&&!!o&&!w;return r("div",{className:"flex flex-col gap-2",children:[e(f,{label:"Menu",children:e("div",{className:"w-[170px] max-w-full",children:e(se,{value:D,ariaLabel:l("Menu"),readOnly:x||R,onChange:d=>{const k=d?(v??[]).find(u=>u.id===d):null;O(k?{...k,items:k.items.map(u=>({...u,dropdown_items:(v??[]).find(T=>T.id===u.dropdown_menu)?.items.map(T=>({label:T.label,url:T.url}))??[]}))}:null)},options:[{label:x?l("Loading…"):R?l("No menus"):l("Default links"),value:""},...(v??[]).map(d=>({label:`${d.name} (${d.item_count??d.items.length})`,value:d.id}))]})})}),Y?e("p",{className:"text-[12px] text-[var(--sf-warning,#b45309)]",children:Re()}):e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:D?De("Header shows “{name}” — {n} link.","Header shows “{name}” — {n} links.",_,{name:b??l("the linked menu")}):R?l("No menus yet. Create one in {place}, then pick it here.",{place:l("Storefront → Menus")}):l("Pick a menu to drive the header links, or keep the built-in default links.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:()=>y.send("storefront-editor:open-menus",{menuId:D||null}),children:D?l("Edit menu →"):l("Manage menus →")})]})}function N({shown:a,children:o}){return a?e("p",{className:"text-[11px] text-[var(--sf-muted)]",children:o}):null}function de({labelledBy:a,value:o,min:b,max:_,step:O,onPreview:y,onCommit:v}){const C=m=>{m instanceof HTMLInputElement&&m.type==="range"&&v(Number(m.value))};return e("div",{onPointerUp:m=>C(m.target),onKeyUp:m=>{/^(Arrow|Home|End|Page)/.test(m.key)&&C(m.target)},children:e(Qe,{value:o,min:b,max:_,step:O,showInput:!1,size:"sm","aria-labelledby":a,valueText:m=>l("{n} pixels",{n:m}),onChange:m=>{m!=null&&y(m)}})})}function vt({label:a,value:o,children:b}){return r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{className:"text-xs text-[var(--ink-muted)]",children:l(a)}),o&&e("span",{className:"text-[12px] text-[var(--ink-faint)]",children:l(o)})]}),b]})}function S({label:a}){return e(ft,{label:a})}function f({label:a,children:o,stacked:b=!1}){return b?r("div",{className:"flex flex-col gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),o]}):r("div",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),e("div",{className:"flex flex-shrink-0 grow justify-end",children:o})]})}const wt=[{label:"Left",value:"left"},{label:"Center",value:"center"}],St=[{label:"Left",value:"left"},{label:"Right",value:"right"}],yt=[{label:"Right",value:"left"},{label:"Centered",value:"center"},{label:"Beside logo",value:"beside"}],Ct=[{label:"Own row",value:"top"},{label:"Same row",value:"inline"}],Lt=[{label:ge.page,value:"page"},{label:ge.full,value:"full"}],Nt=[{label:"Icon",value:"icon"},{label:"Text",value:"text"}],kt=[{label:"Uppercase",value:"uppercase"},{label:"Capitalised",value:"capitalised"}],Ht=[{label:"Auto",value:"auto"},{label:"Light",value:"light"},{label:"Dark",value:"dark"}],i={logoPosition:{label:"Position",options:wt,choose:a=>a==="right"?"center":a},menuAlign:{label:"Alignment",options:yt,choose:a=>a==="center"?"center":a==="beside"?"beside":"left"},menuRow:{label:"Row",options:Ct,choose:a=>a==="inline"?"inline":"top"},searchPosition:{label:"Position",options:St,choose:a=>a},width:{label:"Width",options:Lt,choose:a=>a},navTextCase:{label:"Letters",options:kt,choose:a=>a==="capitalised"?"capitalised":"uppercase"},utilStyle:{label:"Show as",options:Nt,choose:a=>a==="text"?"text":"icon"},topTextColor:{label:"Text color at the top",options:Ht,choose:a=>We(a)}};function Tt({tabs:a,activeId:o,onSelect:b}){return e("div",{className:"es-insp-tabs",children:e(et,{variant:"underline",block:!0,labelsFit:!0,"aria-label":l("Header settings"),idPrefix:ce,value:o,onChange:b,items:a.map(_=>({id:_.id,icon:_.icon,label:l(_.label)}))})})}export{f as Field,i as HEADER_SEGMENTED,Se as HEADER_TABS,ce as HEADER_TABS_ID_PREFIX,Tt as HeaderTabStrip,oe as OFF_PLACEHOLDER,bt as default};
@@ -1 +1 @@
1
- "use client";import{jsx as k,Fragment as x}from"react/jsx-runtime";import{useEffect as v,useMemo as w,useState as _}from"react";import{SettingsField as A}from"efficient-easel/panel";import{FieldSelect as B}from"efficient-easel/fields";import{iconOf as C,noGlyph as I}from"efficient-web-builder/editor/lib/puck/controls";import{formatPrice as K}from"../../render/lib/commerce.js";import{resolveWheelPrice as N}from"../../render/lib/wheels/price-display.js";import{loadUnifiedProductCatalog as O}from"../../render/components/useProductCatalog.js";import{useCurrency as R}from"../../render/components/CurrencyContext.js";import F from"efficient-web-builder/editor/components/SearchSelectField";import{PREVIEWABLE_KINDS as G}from"../../render/components/pdp-dynamic/useSampleProduct.js";import{PLP_ALL_TYPES_LABEL as D,PLP_KINDS as V,PLP_KIND_LABELS as S}from"../../render/lib/catalog/plp-item.js";import{currentPreviewPickKey as W,useCurrentPreviewPick as T,writePreviewPick as U}from"../../render/lib/puck/preview-pick.js";import{say as r}from"efficient-web-builder/format/lib/editor-words";const p="__all__",L="";function Y(o){return(o??[]).filter(n=>G.includes(n.kind))}const j=I("one row per level from one list — the gutter would repeat one mark down the column and say nothing; the group heading carries it once GG, 2026-09-23"),g=o=>typeof o.brand=="string"?o.brand.trim():"";function E(o,n){if(o.kind!=="alloy-wheel"||!n)return;const l=o,i=N(l.prices?.[n],l.msrpPrices?.[n]);return i.priced?K(i.unit,n):void 0}function H({rows:o,brand:n,kind:l,slug:i,loading:d=!1,currency:m=""}){const f=o??[],s=[...new Set(f.map(g).filter(Boolean))].sort((t,y)=>t.localeCompare(y)),u=n===p?f:f.filter(t=>g(t)===n),c=V.filter(t=>u.some(y=>y.kind===t)),b=l===p?u:u.filter(t=>t.kind===l),h=new Set(b.map(t=>t.kind)).size>1,e=b.map(t=>({value:t.slug,label:t.name,...h?{group:r(S[t.kind])}:{},thumb:t.coverImage??null,...E(t,m)?{meta:E(t,m)}:{}})),a=i&&!b.some(t=>t.slug===i)?[{value:i,label:d?i:r("{slug} (not in this list)",{slug:i})}]:[],P=[];return s.length>1&&P.push({key:"brand",label:r("Brand"),options:[{value:p,label:r("All brands")},...s.map(t=>({value:t,label:t}))]}),c.length>1&&P.push({key:"kind",label:r("Product type"),options:[{value:p,label:r(D)},...c.map(t=>({value:t,label:r(S[t])}))]}),P.push({key:"product",label:r("Product"),options:[{value:L,label:d?r("Loading…"):r("Generic placeholder")},...a,...e]}),P}function M(){const[o,n]=_(null),[l,i]=_(p),[d,m]=_(p),f=W(),s=T()??L;v(()=>{let e=!1;return O().then(a=>{e||n(a)}).catch(()=>{e||n([])}),()=>{e=!0}},[]);const{currency:u}=R(),c=w(()=>Y(o),[o]);v(()=>{const e=c.find(a=>a.slug===s);e&&g(e)&&i(g(e))},[s,c]);const b=w(()=>H({rows:c,brand:l,kind:d,slug:s,loading:o===null,currency:u}),[c,l,d,s,o,u]),h={brand:e=>{i(e),m(p)},kind:m,product:e=>U(f,e)};return k(x,{children:b.map(e=>k(A,{label:e.label,icon:C(j),hint:e.key==="product"?r(z):void 0,children:e.key==="product"?k(F,{bare:!0,label:e.label,options:e.options,fallback:L,value:s,onChange:h.product,placeholder:r("Search your catalog…")}):k(B,{value:e.key==="brand"?l:d,ariaLabel:e.label,onChange:a=>h[e.key](a),options:e.options.map(a=>({label:a.label,value:a.value}))})},e.key))})}const z="Only for looking at while you design. Shoppers always see the product they opened.";export{p as ANY_VALUE,L as NO_PRODUCT,M as default,H as previewPickerLevels,Y as previewableRows};
1
+ "use client";import{jsx as k,Fragment as x}from"react/jsx-runtime";import{useEffect as v,useMemo as w,useState as _}from"react";import{SettingsField as A}from"efficient-easel/panel";import{FieldSelect as B}from"efficient-easel/fields";import{iconOf as C,noGlyph as I}from"efficient-web-builder/editor/lib/document/controls";import{formatPrice as K}from"../../render/lib/commerce.js";import{resolveWheelPrice as N}from"../../render/lib/wheels/price-display.js";import{loadUnifiedProductCatalog as O}from"../../render/components/useProductCatalog.js";import{useCurrency as R}from"../../render/components/CurrencyContext.js";import F from"efficient-web-builder/editor/components/SearchSelectField";import{PREVIEWABLE_KINDS as G}from"../../render/components/pdp-dynamic/useSampleProduct.js";import{PLP_ALL_TYPES_LABEL as D,PLP_KINDS as V,PLP_KIND_LABELS as S}from"../../render/lib/catalog/plp-item.js";import{currentPreviewPickKey as W,useCurrentPreviewPick as T,writePreviewPick as U}from"../../render/lib/document/preview-pick.js";import{say as r}from"efficient-web-builder/format/lib/editor-words";const p="__all__",L="";function Y(o){return(o??[]).filter(n=>G.includes(n.kind))}const j=I("one row per level from one list — the gutter would repeat one mark down the column and say nothing; the group heading carries it once GG, 2026-09-23"),g=o=>typeof o.brand=="string"?o.brand.trim():"";function E(o,n){if(o.kind!=="alloy-wheel"||!n)return;const l=o,i=N(l.prices?.[n],l.msrpPrices?.[n]);return i.priced?K(i.unit,n):void 0}function H({rows:o,brand:n,kind:l,slug:i,loading:d=!1,currency:m=""}){const f=o??[],s=[...new Set(f.map(g).filter(Boolean))].sort((t,y)=>t.localeCompare(y)),u=n===p?f:f.filter(t=>g(t)===n),c=V.filter(t=>u.some(y=>y.kind===t)),b=l===p?u:u.filter(t=>t.kind===l),h=new Set(b.map(t=>t.kind)).size>1,e=b.map(t=>({value:t.slug,label:t.name,...h?{group:r(S[t.kind])}:{},thumb:t.coverImage??null,...E(t,m)?{meta:E(t,m)}:{}})),a=i&&!b.some(t=>t.slug===i)?[{value:i,label:d?i:r("{slug} (not in this list)",{slug:i})}]:[],P=[];return s.length>1&&P.push({key:"brand",label:r("Brand"),options:[{value:p,label:r("All brands")},...s.map(t=>({value:t,label:t}))]}),c.length>1&&P.push({key:"kind",label:r("Product type"),options:[{value:p,label:r(D)},...c.map(t=>({value:t,label:r(S[t])}))]}),P.push({key:"product",label:r("Product"),options:[{value:L,label:d?r("Loading…"):r("Generic placeholder")},...a,...e]}),P}function M(){const[o,n]=_(null),[l,i]=_(p),[d,m]=_(p),f=W(),s=T()??L;v(()=>{let e=!1;return O().then(a=>{e||n(a)}).catch(()=>{e||n([])}),()=>{e=!0}},[]);const{currency:u}=R(),c=w(()=>Y(o),[o]);v(()=>{const e=c.find(a=>a.slug===s);e&&g(e)&&i(g(e))},[s,c]);const b=w(()=>H({rows:c,brand:l,kind:d,slug:s,loading:o===null,currency:u}),[c,l,d,s,o,u]),h={brand:e=>{i(e),m(p)},kind:m,product:e=>U(f,e)};return k(x,{children:b.map(e=>k(A,{label:e.label,icon:C(j),hint:e.key==="product"?r(z):void 0,children:e.key==="product"?k(F,{bare:!0,label:e.label,options:e.options,fallback:L,value:s,onChange:h.product,placeholder:r("Search your catalog…")}):k(B,{value:e.key==="brand"?l:d,ariaLabel:e.label,onChange:a=>h[e.key](a),options:e.options.map(a=>({label:a.label,value:a.value}))})},e.key))})}const z="Only for looking at while you design. Shoppers always see the product they opened.";export{p as ANY_VALUE,L as NO_PRODUCT,M as default,H as previewPickerLevels,Y as previewableRows};
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as o,jsxs as n}from"react/jsx-runtime";import{Button as t}from"efficient-shell/ui";import{usePreviewSocial as r}from"efficient-web-builder/render/components/PreviewSocialContext";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{GroupLabel as l}from"efficient-web-builder/editor/lib/puck/controls";function a(){const{openPanel:s}=r();return n(o,{children:[e(l,{label:"Social links"}),e("p",{className:"es-field-hint sf-hint-keep",children:i("The links are typed once for the whole website, in Site settings.")}),e(t,{variant:"link",size:"sm",onClick:s,children:i("Edit social links →")})]})}export{a as default};
1
+ "use client";import{jsx as e,Fragment as o,jsxs as n}from"react/jsx-runtime";import{Button as t}from"efficient-shell/ui";import{usePreviewSocial as r}from"efficient-web-builder/render/components/PreviewSocialContext";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{GroupLabel as l}from"efficient-web-builder/editor/lib/document/controls";function a(){const{openPanel:s}=r();return n(o,{children:[e(l,{label:"Social links"}),e("p",{className:"es-field-hint sf-hint-keep",children:i("The links are typed once for the whole website, in Site settings.")}),e(t,{variant:"link",size:"sm",onClick:s,children:i("Edit social links →")})]})}export{a as default};
@@ -1 +1 @@
1
- "use client";import{jsx as n,Fragment as B,jsxs as T}from"react/jsx-runtime";import{useState as a}from"react";import{Banner as E,Button as i}from"efficient-shell/ui";import{createNode as _,newId as j}from"efficient-easel/data";import{useEasel as C}from"efficient-easel/easel";import{useScreenDocument as D}from"efficient-easel/screen/components/ScreenDocumentContext";import{boxHeaderForSite as F}from"../lib/puck/box-header-for-site.js";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{SITE_HEADER_TYPE as m,withSectionGroup as H}from"efficient-web-builder/format/lib/puck/section-groups";function v(){const{appState:f,dispatch:h,config:p}=C(e=>e),{readOnly:y,tokenRef:g,siteId:k}=D(),[S,r]=a(!1),[o,c]=a(!1),[l,d]=a(!1),w=f.data.content;if(y||w.some(e=>e.type===m))return null;const x=(e,s)=>_(p,e,s),b=async()=>{const e=g.current;if(!(!e||o)){c(!0),d(!1);try{const s=await F(e,k,x,j(m));h({type:"setData",data:u=>({...u,content:[...H(u.content,s)]}),recordHistory:!0}),r(!1)}catch{d(!0)}finally{c(!1)}}};return n(E,{tone:l?"danger":"info",title:t("This header uses the old layout"),action:S?T(B,{children:[n(i,{variant:"primary",size:"sm",onClick:b,disabled:o,children:o?t("Switching…"):t("Switch now")}),n(i,{variant:"secondary",size:"sm",onClick:()=>r(!1),disabled:o,children:t("Cancel")})]}):n(i,{variant:"secondary",size:"sm",onClick:()=>r(!0),children:t("Switch to Box header")}),children:l?t("The header settings could not be read. Try again."):t("Build it out of Boxes and blocks: the logo, menu, search, region and cart become blocks you can move. Your current header is kept.")})}export{v as default};
1
+ "use client";import{jsx as n,Fragment as B,jsxs as T}from"react/jsx-runtime";import{useState as a}from"react";import{Banner as E,Button as i}from"efficient-shell/ui";import{createNode as _,newId as j}from"efficient-easel/data";import{useEasel as C}from"efficient-easel/easel";import{useScreenDocument as D}from"efficient-easel/screen/components/ScreenDocumentContext";import{boxHeaderForSite as F}from"../lib/document/box-header-for-site.js";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{SITE_HEADER_TYPE as m,withSectionGroup as H}from"efficient-web-builder/format/lib/document/section-groups";function v(){const{appState:f,dispatch:h,config:p}=C(e=>e),{readOnly:y,tokenRef:g,siteId:k}=D(),[S,r]=a(!1),[o,c]=a(!1),[l,d]=a(!1),w=f.data.content;if(y||w.some(e=>e.type===m))return null;const x=(e,s)=>_(p,e,s),b=async()=>{const e=g.current;if(!(!e||o)){c(!0),d(!1);try{const s=await F(e,k,x,j(m));h({type:"setData",data:u=>({...u,content:[...H(u.content,s)]}),recordHistory:!0}),r(!1)}catch{d(!0)}finally{c(!1)}}};return n(E,{tone:l?"danger":"info",title:t("This header uses the old layout"),action:S?T(B,{children:[n(i,{variant:"primary",size:"sm",onClick:b,disabled:o,children:o?t("Switching…"):t("Switch now")}),n(i,{variant:"secondary",size:"sm",onClick:()=>r(!1),disabled:o,children:t("Cancel")})]}):n(i,{variant:"secondary",size:"sm",onClick:()=>r(!0),children:t("Switch to Box header")}),children:l?t("The header settings could not be read. Try again."):t("Build it out of Boxes and blocks: the logo, menu, search, region and cart become blocks you can move. Your current header is kept.")})}export{v as default};
@@ -1,4 +1,4 @@
1
- import type { TreeItem } from "efficient-easel/screen/lib/puck/content-tree";
1
+ import type { TreeItem } from "efficient-easel/screen/lib/document/content-tree";
2
2
  import type { SectionTemplate, SectionTemplateRecord, SectionTemplateStore } from "efficient-easel/screen/lib/section-template-types";
3
3
  import { type StorageLike } from "efficient-web-builder/format/lib/safe-storage";
4
4
  export type { SectionTemplate, SectionTemplateRecord, SectionTemplateStore };
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const AccountBlockFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{StylesIcon as t}from"efficient-easel/icons";import{group as e,segmented as r}from"efficient-web-builder/editor/lib/document/controls";import{TOOL_STYLE_OPTIONS as s}from"../shared-fields.js";const p={fields:{_gStyle:e("Style"),style:r("Show as",o(t,{}),s,"icon")}};export{p as AccountBlockFields};
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const AlloyWheelsListingFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as n}from"react/jsx-runtime";import _ from"efficient-web-builder/editor/components/MultiSelectField";import y from"../../../../../components/WheelsPerRowField.js";import{PLP_GATE_DEFAULTS as u}from"../../../../../../render/components/wheels-plp/AlloyWheelsListing.js";import{SortIcon as L,CarIcon as C,HashIcon as O}from"efficient-easel/icons";import{useEasel as T}from"efficient-easel/easel";import{group as l,text as v,textarea as w,multiSelect as b,select as k,panelNote as E,toggle as x,copyText as f,plainTextarea as g,cardShowFields as H,cardMediaFields as N,cardStyleFields as A,slider as R}from"efficient-web-builder/editor/lib/document/controls";import{noControlField as W,NoControlMark as D}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{PLP_SORT_LABELS as G}from"../../../../../../render/lib/wheels/plp-filters.js";import{PRODUCT_KIND_OPTIONS as j,resolvePlpKinds as z}from"../../../../../../render/lib/catalog/plp-item.js";import{plpVehicleCopy as K}from"../../../../../../render/lib/catalog/plp-vehicle-copy.js";import{ALLOYWHEELSLISTING_PH as h}from"../../../../../../render/lib/document/blocks/commerce/AlloyWheelsListing/meta.js";import{say as M}from"efficient-web-builder/format/lib/editor-words";const s=[{value:"showInStock",label:"In stock"},{value:"showCollection",label:"Collection"},{value:"showPrice",label:"Price"}],B="Brand, Color, Size and PCD follow the product type. Set them in Product types.",P="root:default-zone";function U(){const{appState:o,dispatch:t}=T(e=>e),r=o.ui.itemSelector,I=o.data.content??[],a=r&&(r.zone===void 0||r.zone===P)?r.index:-1,i=a>=0?I[a]:void 0,d=i?.props??{},S=s.filter(e=>d[e.value]!==!1).map(e=>e.value);return n(_,{label:"Filters",options:s.map(e=>({...e,label:M(e.label)})),value:S,onChange:e=>{if(!i||i.type!=="AlloyWheelsListing")return;const c={};for(const p of s){const m=e.includes(p.value);d[p.value]!==!1!==m&&(c[p.value]=m)}Object.keys(c).length&&t({type:"replace",destinationZone:P,destinationIndex:a,data:{...i,props:{...i.props,...c}}})}})}const F=()=>W({type:"custom",render:()=>n(D,{})},"always"),ie={fields:{_gHeader:l("Header"),heading:v("Heading",h.heading),intro:w("Intro",h.intro),_gResults:l("Products"),kinds:b("Product types",j,"None — this section will be empty"),defaultSort:k("Opening sort",n(L,{}),Object.entries(G).map(([o,t])=>({value:o,label:t})),"recommended"),_gFilters:l("Filters"),showInStock:{type:"custom",label:"Filters",options:s,render:()=>n(U,{})},showCollection:F(),showPrice:F(),_nFieldFilters:E(B),_gVehicle:l("Car prompt"),askForCar:x("Ask for the car first",!0,n(C,{})),gateHeading:f("Welcome heading",u.heading),gateIntro:g("Welcome intro",u.intro),...H({bottomDefault:!0}),...N({coverHint:"A card's opening picture — picking another color opens that color's first picture.",spinDefault:!1}),...A(),_gGrid:l("Grid"),columns:{type:"custom",render:({value:o,onChange:t})=>n(y,{value:o,onChange:t})},perPage:R("Products per page",n(O,{}),8,60,4,24)},resolveFields:(o,{fields:t})=>{const r=K(z(o.props.kinds));return{...t,gateHeading:f("Welcome heading",r.gateHeading),gateIntro:g("Welcome intro",r.gateIntro)}}};export{ie as AlloyWheelsListingFields};
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const BundleOfferFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{ColumnsIcon as a}from"efficient-easel/icons";import{group as e,text as s,textarea as o,slider as l,cardImageField as n}from"efficient-web-builder/editor/lib/document/controls";import{headFieldsForPlacement as f,widthFieldsForParent as p,SPLITTABLE_SECTIONS as u}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as r}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{WIDTH_ROW_KEYS as c}from"efficient-web-builder/editor/lib/document/blocks/shared-fields";import{PRODUCTGRID_PH as g}from"../../../../../../render/lib/document/blocks/commerce/placeholders.js";const T={fields:{_gHeader:e("Header"),num:s("Number",g.num),title:o("Heading",r.sectionHeading),description:o("Body",r.body),_gLayout:e("Layout"),columns:l("Columns",i(a,{}),2,3,1,3),cardImage:n()},resolveFields:(m,{fields:d,parent:t})=>f(p(d,t,c),m.props.headPlacement,u.BundleOffer.headRows)};export{T as BundleOfferFields};
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CartBlockFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{StylesIcon as t}from"efficient-easel/icons";import{group as r,segmented as e}from"efficient-web-builder/editor/lib/document/controls";import{TOOL_STYLE_OPTIONS as s}from"../shared-fields.js";const S={fields:{_gStyle:r("Style"),style:e("Show as",o(t,{}),s,"icon")}};export{S as CartBlockFields};
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CatalogFilterBarFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{HashIcon as l,SortIcon as u,LayoutIcon as i}from"efficient-easel/icons";import{group as o,toggle as s,plainText as c,linkField as a,panelNote as _,select as n}from"efficient-web-builder/editor/lib/document/controls";import{facetToggle as e,facetNote as L}from"../controls.js";import{RESULTS_LINK_BLOCKED_NOTE as f}from"../../../../../../render/lib/wheels/catalog-filters-to-listing.js";import{FILTER_BAR_LAYOUT_OPTIONS as p,DEFAULT_FILTER_BAR_LAYOUT as h}from"../../../../../../render/lib/sections/catalog-filter-layout.js";import{withRowRules as m}from"efficient-web-builder/render/lib/document/show-when";const F="follow the product type. Set them in Product types.",r={field:"showLugs",is:!0,default:!0},R={not:r},B={fields:m({_gPills:o("Filters shown"),showProcess:e("process",!0),showLugs:e("lugs",!0),showPrice:e("price",!0),showVehicle:e("vehicle",!0),_nFieldFilters:L(["size","finish"],F),_gBar:o("Bar"),showCount:s("Result count",!0,t(l,{})),showSort:s("Sort + Clear all",!0,t(u,{})),resultsLabel:c("Results button","See all results"),resultsHref:a("Results link"),resultsBlocked:_(f),layout:n("Layout",t(i,{}),p,h)},[[["resultsHref","resultsLabel"],R],[["resultsBlocked"],r]])};export{B as CatalogFilterBarFields};
@@ -1,2 +1,2 @@
1
- import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
2
  export declare const CheckoutCTAFields: BlockFields;