efficient-storefront-blocks 0.57.0 → 0.58.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 (1111) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/chunks/{EditorPreviewCheckout-7Y7WL5BM.js → EditorPreviewCheckout-4NGRJA3T.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-5MWJMLLI.js → SiteEditorProvider-V5FE5UD6.js} +1 -1
  4. package/dist/chunks/{chunk-BPVXTVPM.js → chunk-4AKN63X5.js} +1 -1
  5. package/dist/chunks/chunk-K4AZ5SUU.js +1 -0
  6. package/dist/chunks/chunk-PHH7L5FJ.js +255 -0
  7. package/dist/chunks/{chunk-FSSCNRRE.js → chunk-SJQTKWV3.js} +1 -1
  8. package/dist/chunks/{fitment-data-UVMEA7WW.js → fitment-data-OIWU6HGJ.js} +1 -1
  9. package/dist/editor/components/BlogSource.d.ts +11 -0
  10. package/dist/editor/components/BlogSource.js +1 -0
  11. package/dist/editor/components/CategorySource.d.ts +7 -0
  12. package/dist/editor/components/CategorySource.js +1 -0
  13. package/dist/editor/components/CollectionPicker.d.ts +7 -0
  14. package/dist/editor/components/CollectionPicker.js +1 -0
  15. package/dist/editor/components/ConsentBannerLayoutTiles.d.ts +3 -0
  16. package/dist/editor/components/ConsentBannerLayoutTiles.js +1 -0
  17. package/dist/editor/components/CountryShowAsTiles.d.ts +5 -0
  18. package/dist/editor/components/CountryShowAsTiles.js +1 -0
  19. package/dist/editor/components/EditProductLink.d.ts +1 -0
  20. package/dist/editor/components/EditProductLink.js +1 -0
  21. package/dist/editor/components/EditorCurrencyProvider.d.ts +7 -0
  22. package/dist/editor/components/EditorCurrencyProvider.js +1 -0
  23. package/dist/editor/components/EditorPreviewChat.d.ts +1 -0
  24. package/dist/editor/components/EditorPreviewChat.js +11 -0
  25. package/dist/editor/components/EditorPreviewCheckout.d.ts +1 -0
  26. package/dist/editor/components/EditorPreviewCheckout.js +1 -0
  27. package/dist/editor/components/EditorPreviewSurface.d.ts +5 -0
  28. package/dist/editor/components/EditorPreviewSurface.js +1 -0
  29. package/dist/editor/components/FinishPicker.d.ts +6 -0
  30. package/dist/editor/components/FinishPicker.js +1 -0
  31. package/dist/editor/components/FooterColumnsField.d.ts +6 -0
  32. package/dist/editor/components/FooterColumnsField.js +1 -0
  33. package/dist/editor/components/FooterLogoFillField.d.ts +6 -0
  34. package/dist/editor/components/FooterLogoFillField.js +1 -0
  35. package/dist/editor/components/FooterLogoRowFillField.d.ts +6 -0
  36. package/dist/editor/components/FooterLogoRowFillField.js +1 -0
  37. package/dist/editor/components/FormPicker.d.ts +33 -0
  38. package/dist/editor/components/FormPicker.js +1 -0
  39. package/dist/editor/components/GalleryProductBinding.d.ts +7 -0
  40. package/dist/editor/components/GalleryProductBinding.js +1 -0
  41. package/dist/editor/components/GalleryShowcaseSource.d.ts +7 -0
  42. package/dist/editor/components/GalleryShowcaseSource.js +1 -0
  43. package/dist/editor/components/HeaderSection.d.ts +3 -0
  44. package/dist/editor/components/HeaderSection.js +1 -0
  45. package/dist/editor/components/HeaderSettingsPanel.d.ts +132 -0
  46. package/dist/editor/components/HeaderSettingsPanel.js +1 -0
  47. package/dist/editor/components/MenuLinkRangeField.d.ts +5 -0
  48. package/dist/editor/components/MenuLinkRangeField.js +1 -0
  49. package/dist/editor/components/MenuPicker.d.ts +7 -0
  50. package/dist/editor/components/MenuPicker.js +1 -0
  51. package/dist/editor/components/PerViewStepperField.d.ts +13 -0
  52. package/dist/editor/components/PerViewStepperField.js +1 -0
  53. package/dist/editor/components/PreviewHeader.d.ts +2 -0
  54. package/dist/editor/components/PreviewHeader.js +11 -0
  55. package/dist/editor/components/PreviewHeaderPrimer.d.ts +4 -0
  56. package/dist/editor/components/PreviewHeaderPrimer.js +1 -0
  57. package/dist/editor/components/PreviewMenusPrimer.d.ts +3 -0
  58. package/dist/editor/components/PreviewMenusPrimer.js +1 -0
  59. package/dist/editor/components/PreviewProductPicker.d.ts +20 -0
  60. package/dist/editor/components/PreviewProductPicker.js +1 -0
  61. package/dist/editor/components/ProductHeroSource.d.ts +19 -0
  62. package/dist/editor/components/ProductHeroSource.js +1 -0
  63. package/dist/editor/components/ProductPicker.d.ts +6 -0
  64. package/dist/editor/components/ProductPicker.js +1 -0
  65. package/dist/editor/components/SocialLinksDoor.d.ts +1 -0
  66. package/dist/editor/components/SocialLinksDoor.js +1 -0
  67. package/dist/editor/components/SpecTableSource.d.ts +7 -0
  68. package/dist/editor/components/SpecTableSource.js +1 -0
  69. package/dist/editor/components/StorefrontEditorFurniture.d.ts +6 -0
  70. package/dist/editor/components/StorefrontEditorFurniture.js +1 -0
  71. package/dist/editor/components/StorefrontHeaderPanel.d.ts +2 -0
  72. package/dist/editor/components/StorefrontHeaderPanel.js +1 -0
  73. package/dist/editor/components/StorefrontLinkRows.d.ts +5 -0
  74. package/dist/editor/components/StorefrontLinkRows.js +1 -0
  75. package/dist/editor/components/StorefrontShopRows.d.ts +2 -0
  76. package/dist/editor/components/StorefrontShopRows.js +1 -0
  77. package/dist/editor/components/SwitchToBoxHeader.d.ts +1 -0
  78. package/dist/editor/components/SwitchToBoxHeader.js +1 -0
  79. package/dist/editor/components/WheelsPerRowField.d.ts +6 -0
  80. package/dist/editor/components/WheelsPerRowField.js +1 -0
  81. package/dist/editor/components/useCategoryFilter.d.ts +11 -0
  82. package/dist/editor/components/useCategoryFilter.js +1 -0
  83. package/dist/editor/components/useGridSourceLock.d.ts +1 -0
  84. package/dist/editor/components/useGridSourceLock.js +1 -0
  85. package/dist/editor/components/useStorefrontCategories.d.ts +2 -0
  86. package/dist/editor/components/useStorefrontCategories.js +1 -0
  87. package/dist/editor/components/useStorefrontForms.d.ts +2 -0
  88. package/dist/editor/components/useStorefrontForms.js +1 -0
  89. package/dist/editor/components/useWheelMediaGroups.d.ts +2 -0
  90. package/dist/editor/components/useWheelMediaGroups.js +1 -0
  91. package/dist/editor/lib/api/section-templates.d.ts +43 -0
  92. package/dist/editor/lib/api/section-templates.js +1 -0
  93. package/dist/editor/lib/editor-currency-source.d.ts +11 -0
  94. package/dist/editor/lib/editor-currency-source.js +1 -0
  95. package/dist/editor/lib/efficient-backend.d.ts +21 -0
  96. package/dist/editor/lib/efficient-backend.js +1 -0
  97. package/dist/editor/lib/header-settings-source.d.ts +7 -0
  98. package/dist/editor/lib/header-settings-source.js +1 -0
  99. package/dist/editor/lib/puck/blocks/commerce/AccountBlock/fields.d.ts +2 -0
  100. package/dist/editor/lib/puck/blocks/commerce/AccountBlock/fields.js +1 -0
  101. package/dist/editor/lib/puck/blocks/commerce/AlloyWheelsListing/fields.d.ts +2 -0
  102. package/dist/editor/lib/puck/blocks/commerce/AlloyWheelsListing/fields.js +1 -0
  103. package/dist/editor/lib/puck/blocks/commerce/BundleOffer/fields.d.ts +2 -0
  104. package/dist/editor/lib/puck/blocks/commerce/BundleOffer/fields.js +1 -0
  105. package/dist/editor/lib/puck/blocks/commerce/CartBlock/fields.d.ts +2 -0
  106. package/dist/editor/lib/puck/blocks/commerce/CartBlock/fields.js +1 -0
  107. package/dist/editor/lib/puck/blocks/commerce/CatalogFilterBar/fields.d.ts +2 -0
  108. package/dist/editor/lib/puck/blocks/commerce/CatalogFilterBar/fields.js +1 -0
  109. package/dist/editor/lib/puck/blocks/commerce/CheckoutCTA/fields.d.ts +2 -0
  110. package/dist/editor/lib/puck/blocks/commerce/CheckoutCTA/fields.js +1 -0
  111. package/dist/editor/lib/puck/blocks/commerce/CollectionCard/fields.d.ts +2 -0
  112. package/dist/editor/lib/puck/blocks/commerce/CollectionCard/fields.js +1 -0
  113. package/dist/editor/lib/puck/blocks/commerce/Collections/fields.d.ts +2 -0
  114. package/dist/editor/lib/puck/blocks/commerce/Collections/fields.js +1 -0
  115. package/dist/editor/lib/puck/blocks/commerce/CompatibleTyres/fields.d.ts +2 -0
  116. package/dist/editor/lib/puck/blocks/commerce/CompatibleTyres/fields.js +1 -0
  117. package/dist/editor/lib/puck/blocks/commerce/CountrySwitchBlock/fields.d.ts +2 -0
  118. package/dist/editor/lib/puck/blocks/commerce/CountrySwitchBlock/fields.js +1 -0
  119. package/dist/editor/lib/puck/blocks/commerce/DeliveryOptions/fields.d.ts +2 -0
  120. package/dist/editor/lib/puck/blocks/commerce/DeliveryOptions/fields.js +1 -0
  121. package/dist/editor/lib/puck/blocks/commerce/DetailRows/fields.d.ts +2 -0
  122. package/dist/editor/lib/puck/blocks/commerce/DetailRows/fields.js +1 -0
  123. package/dist/editor/lib/puck/blocks/commerce/EuTyreLabel/fields.d.ts +2 -0
  124. package/dist/editor/lib/puck/blocks/commerce/EuTyreLabel/fields.js +1 -0
  125. package/dist/editor/lib/puck/blocks/commerce/FitmentFinder/fields.d.ts +2 -0
  126. package/dist/editor/lib/puck/blocks/commerce/FitmentFinder/fields.js +1 -0
  127. package/dist/editor/lib/puck/blocks/commerce/FitmentTable/fields.d.ts +2 -0
  128. package/dist/editor/lib/puck/blocks/commerce/FitmentTable/fields.js +1 -0
  129. package/dist/editor/lib/puck/blocks/commerce/Gallery/fields.d.ts +2 -0
  130. package/dist/editor/lib/puck/blocks/commerce/Gallery/fields.js +1 -0
  131. package/dist/editor/lib/puck/blocks/commerce/GalleryB/fields.d.ts +2 -0
  132. package/dist/editor/lib/puck/blocks/commerce/GalleryB/fields.js +1 -0
  133. package/dist/editor/lib/puck/blocks/commerce/GalleryItem/fields.d.ts +2 -0
  134. package/dist/editor/lib/puck/blocks/commerce/GalleryItem/fields.js +1 -0
  135. package/dist/editor/lib/puck/blocks/commerce/Header/fields.d.ts +2 -0
  136. package/dist/editor/lib/puck/blocks/commerce/Header/fields.js +1 -0
  137. package/dist/editor/lib/puck/blocks/commerce/ProductGrid/fields.d.ts +2 -0
  138. package/dist/editor/lib/puck/blocks/commerce/ProductGrid/fields.js +1 -0
  139. package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.d.ts +2 -0
  140. package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.js +1 -0
  141. package/dist/editor/lib/puck/blocks/commerce/ProductRef/fields.d.ts +2 -0
  142. package/dist/editor/lib/puck/blocks/commerce/ProductRef/fields.js +1 -0
  143. package/dist/editor/lib/puck/blocks/commerce/RelatedProducts/fields.d.ts +2 -0
  144. package/dist/editor/lib/puck/blocks/commerce/RelatedProducts/fields.js +1 -0
  145. package/dist/editor/lib/puck/blocks/commerce/SearchBlock/fields.d.ts +2 -0
  146. package/dist/editor/lib/puck/blocks/commerce/SearchBlock/fields.js +1 -0
  147. package/dist/editor/lib/puck/blocks/commerce/SpecTable/fields.d.ts +2 -0
  148. package/dist/editor/lib/puck/blocks/commerce/SpecTable/fields.js +1 -0
  149. package/dist/editor/lib/puck/blocks/commerce/ThemeSwitchBlock/fields.d.ts +2 -0
  150. package/dist/editor/lib/puck/blocks/commerce/ThemeSwitchBlock/fields.js +1 -0
  151. package/dist/editor/lib/puck/blocks/commerce/TyreFitment/fields.d.ts +2 -0
  152. package/dist/editor/lib/puck/blocks/commerce/TyreFitment/fields.js +1 -0
  153. package/dist/editor/lib/puck/blocks/commerce/TyreSizes/fields.d.ts +2 -0
  154. package/dist/editor/lib/puck/blocks/commerce/TyreSizes/fields.js +1 -0
  155. package/dist/editor/lib/puck/blocks/commerce/controls.d.ts +15 -0
  156. package/dist/editor/lib/puck/blocks/commerce/controls.js +1 -0
  157. package/dist/editor/lib/puck/blocks/commerce/index.d.ts +1 -0
  158. package/dist/editor/lib/puck/blocks/commerce/index.js +1 -0
  159. package/dist/editor/lib/puck/blocks/commerce/page-rules.d.ts +8 -0
  160. package/dist/editor/lib/puck/blocks/commerce/page-rules.js +1 -0
  161. package/dist/editor/lib/puck/blocks/commerce/shared-fields.d.ts +5 -0
  162. package/dist/editor/lib/puck/blocks/commerce/shared-fields.js +1 -0
  163. package/dist/editor/lib/puck/blocks/service/AppointmentBooking/fields.d.ts +2 -0
  164. package/dist/editor/lib/puck/blocks/service/AppointmentBooking/fields.js +1 -0
  165. package/dist/editor/lib/puck/blocks/service/BookingBox/fields.d.ts +2 -0
  166. package/dist/editor/lib/puck/blocks/service/BookingBox/fields.js +1 -0
  167. package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.d.ts +2 -0
  168. package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +1 -0
  169. package/dist/editor/lib/puck/blocks/service/Events/fields.d.ts +2 -0
  170. package/dist/editor/lib/puck/blocks/service/Events/fields.js +1 -0
  171. package/dist/editor/lib/puck/blocks/service/Footer/fields.d.ts +2 -0
  172. package/dist/editor/lib/puck/blocks/service/Footer/fields.js +1 -0
  173. package/dist/editor/lib/puck/blocks/service/FooterDivider/fields.d.ts +2 -0
  174. package/dist/editor/lib/puck/blocks/service/FooterDivider/fields.js +1 -0
  175. package/dist/editor/lib/puck/blocks/service/FooterEmailSignup/fields.d.ts +2 -0
  176. package/dist/editor/lib/puck/blocks/service/FooterEmailSignup/fields.js +1 -0
  177. package/dist/editor/lib/puck/blocks/service/FooterGroup/fields.d.ts +2 -0
  178. package/dist/editor/lib/puck/blocks/service/FooterGroup/fields.js +1 -0
  179. package/dist/editor/lib/puck/blocks/service/FooterLogo/fields.d.ts +2 -0
  180. package/dist/editor/lib/puck/blocks/service/FooterLogo/fields.js +1 -0
  181. package/dist/editor/lib/puck/blocks/service/FooterMenu/fields.d.ts +2 -0
  182. package/dist/editor/lib/puck/blocks/service/FooterMenu/fields.js +1 -0
  183. package/dist/editor/lib/puck/blocks/service/FooterSocial/fields.d.ts +2 -0
  184. package/dist/editor/lib/puck/blocks/service/FooterSocial/fields.js +1 -0
  185. package/dist/editor/lib/puck/blocks/service/FooterText/fields.d.ts +2 -0
  186. package/dist/editor/lib/puck/blocks/service/FooterText/fields.js +1 -0
  187. package/dist/editor/lib/puck/blocks/service/Form/fields.d.ts +2 -0
  188. package/dist/editor/lib/puck/blocks/service/Form/fields.js +1 -0
  189. package/dist/editor/lib/puck/blocks/service/LegalLineBlock/fields.d.ts +2 -0
  190. package/dist/editor/lib/puck/blocks/service/LegalLineBlock/fields.js +1 -0
  191. package/dist/editor/lib/puck/blocks/service/ReviewForm/fields.d.ts +2 -0
  192. package/dist/editor/lib/puck/blocks/service/ReviewForm/fields.js +1 -0
  193. package/dist/editor/lib/puck/blocks/service/Reviews/fields.d.ts +2 -0
  194. package/dist/editor/lib/puck/blocks/service/Reviews/fields.js +1 -0
  195. package/dist/editor/lib/puck/blocks/service/SiteFooter/fields.d.ts +2 -0
  196. package/dist/editor/lib/puck/blocks/service/SiteFooter/fields.js +1 -0
  197. package/dist/editor/lib/puck/blocks/service/SiteHeader/fields.d.ts +2 -0
  198. package/dist/editor/lib/puck/blocks/service/SiteHeader/fields.js +1 -0
  199. package/dist/editor/lib/puck/blocks/service/SubmitBox/fields.d.ts +2 -0
  200. package/dist/editor/lib/puck/blocks/service/SubmitBox/fields.js +1 -0
  201. package/dist/editor/lib/puck/blocks/service/SubmitBuild/fields.d.ts +2 -0
  202. package/dist/editor/lib/puck/blocks/service/SubmitBuild/fields.js +1 -0
  203. package/dist/editor/lib/puck/blocks/service/Subscribe/fields.d.ts +2 -0
  204. package/dist/editor/lib/puck/blocks/service/Subscribe/fields.js +1 -0
  205. package/dist/editor/lib/puck/blocks/service/SubscribeBlogs/fields.d.ts +2 -0
  206. package/dist/editor/lib/puck/blocks/service/SubscribeBlogs/fields.js +1 -0
  207. package/dist/editor/lib/puck/blocks/service/controls.d.ts +2 -0
  208. package/dist/editor/lib/puck/blocks/service/controls.js +1 -0
  209. package/dist/editor/lib/puck/blocks/service/index.d.ts +1 -0
  210. package/dist/editor/lib/puck/blocks/service/index.js +1 -0
  211. package/dist/editor/lib/puck/blocks/service/placeholders.d.ts +1 -0
  212. package/dist/editor/lib/puck/blocks/service/placeholders.js +1 -0
  213. package/dist/editor/lib/puck/box-header-for-site.d.ts +9 -0
  214. package/dist/editor/lib/puck/box-header-for-site.js +1 -0
  215. package/dist/editor/lib/puck/box-header.d.ts +52 -0
  216. package/dist/editor/lib/puck/box-header.js +1 -0
  217. package/dist/editor/lib/puck/config.d.ts +73 -0
  218. package/dist/editor/lib/puck/config.js +1 -0
  219. package/dist/editor/lib/say-with.d.ts +2 -0
  220. package/dist/editor/lib/say-with.js +1 -0
  221. package/dist/editor/lib/storefront-document.d.ts +2 -0
  222. package/dist/editor/lib/storefront-document.js +1 -0
  223. package/dist/editor/lib/storefront-editor-words.d.ts +693 -0
  224. package/dist/editor/lib/storefront-editor-words.js +1 -0
  225. package/dist/editor/lib/storefront-editor.d.ts +9 -0
  226. package/dist/editor/lib/storefront-editor.js +1 -0
  227. package/dist/editor/lib/storefront-shop-surfaces.d.ts +8 -0
  228. package/dist/editor/lib/storefront-shop-surfaces.js +1 -0
  229. package/dist/editor/lib/use-prime-and-refresh.d.ts +16 -0
  230. package/dist/editor/lib/use-prime-and-refresh.js +1 -0
  231. package/dist/editor.css +1 -1
  232. package/dist/index.d.ts +14 -0
  233. package/dist/index.js +69 -52
  234. package/dist/render/app/fonts/archivo/OFL.txt +93 -0
  235. package/dist/render/app/fonts/archivo/latin-ext-italic.woff2 +0 -0
  236. package/dist/render/app/fonts/archivo/latin-ext.woff2 +0 -0
  237. package/dist/render/app/fonts/archivo/latin-italic.woff2 +0 -0
  238. package/dist/render/app/fonts/archivo/latin.woff2 +0 -0
  239. package/dist/render/app/fonts/archivo/vietnamese-italic.woff2 +0 -0
  240. package/dist/render/app/fonts/archivo/vietnamese.woff2 +0 -0
  241. package/dist/render/app/fonts/assistant/OFL.txt +95 -0
  242. package/dist/render/app/fonts/assistant/hebrew.woff2 +0 -0
  243. package/dist/render/app/fonts/assistant/latin-ext.woff2 +0 -0
  244. package/dist/render/app/fonts/assistant/latin.woff2 +0 -0
  245. package/dist/render/app/fonts/big-shoulders/OFL.txt +93 -0
  246. package/dist/render/app/fonts/big-shoulders/latin-ext.woff2 +0 -0
  247. package/dist/render/app/fonts/big-shoulders/latin.woff2 +0 -0
  248. package/dist/render/app/fonts/big-shoulders/vietnamese.woff2 +0 -0
  249. package/dist/render/app/fonts/cormorant/OFL.txt +93 -0
  250. package/dist/render/app/fonts/cormorant/cyrillic-ext-italic.woff2 +0 -0
  251. package/dist/render/app/fonts/cormorant/cyrillic-ext.woff2 +0 -0
  252. package/dist/render/app/fonts/cormorant/cyrillic-italic.woff2 +0 -0
  253. package/dist/render/app/fonts/cormorant/cyrillic.woff2 +0 -0
  254. package/dist/render/app/fonts/cormorant/latin-ext-italic.woff2 +0 -0
  255. package/dist/render/app/fonts/cormorant/latin-ext.woff2 +0 -0
  256. package/dist/render/app/fonts/cormorant/latin-italic.woff2 +0 -0
  257. package/dist/render/app/fonts/cormorant/latin.woff2 +0 -0
  258. package/dist/render/app/fonts/cormorant/vietnamese-italic.woff2 +0 -0
  259. package/dist/render/app/fonts/cormorant/vietnamese.woff2 +0 -0
  260. package/dist/render/app/fonts/dm-sans/OFL.txt +93 -0
  261. package/dist/render/app/fonts/dm-sans/latin-ext-italic.woff2 +0 -0
  262. package/dist/render/app/fonts/dm-sans/latin-ext.woff2 +0 -0
  263. package/dist/render/app/fonts/dm-sans/latin-italic.woff2 +0 -0
  264. package/dist/render/app/fonts/dm-sans/latin.woff2 +0 -0
  265. package/dist/render/app/fonts/fallbacks.css +133 -0
  266. package/dist/render/app/fonts/fraunces/OFL.txt +93 -0
  267. package/dist/render/app/fonts/fraunces/latin-ext-italic.woff2 +0 -0
  268. package/dist/render/app/fonts/fraunces/latin-ext.woff2 +0 -0
  269. package/dist/render/app/fonts/fraunces/latin-italic.woff2 +0 -0
  270. package/dist/render/app/fonts/fraunces/latin.woff2 +0 -0
  271. package/dist/render/app/fonts/fraunces/vietnamese-italic.woff2 +0 -0
  272. package/dist/render/app/fonts/fraunces/vietnamese.woff2 +0 -0
  273. package/dist/render/app/fonts/inter/OFL.txt +93 -0
  274. package/dist/render/app/fonts/inter/cyrillic-ext-italic.woff2 +0 -0
  275. package/dist/render/app/fonts/inter/cyrillic-ext.woff2 +0 -0
  276. package/dist/render/app/fonts/inter/cyrillic-italic.woff2 +0 -0
  277. package/dist/render/app/fonts/inter/cyrillic.woff2 +0 -0
  278. package/dist/render/app/fonts/inter/greek-ext-italic.woff2 +0 -0
  279. package/dist/render/app/fonts/inter/greek-ext.woff2 +0 -0
  280. package/dist/render/app/fonts/inter/greek-italic.woff2 +0 -0
  281. package/dist/render/app/fonts/inter/greek.woff2 +0 -0
  282. package/dist/render/app/fonts/inter/latin-ext-italic.woff2 +0 -0
  283. package/dist/render/app/fonts/inter/latin-ext.woff2 +0 -0
  284. package/dist/render/app/fonts/inter/latin-italic.woff2 +0 -0
  285. package/dist/render/app/fonts/inter/latin.woff2 +0 -0
  286. package/dist/render/app/fonts/inter/vietnamese-italic.woff2 +0 -0
  287. package/dist/render/app/fonts/inter/vietnamese.woff2 +0 -0
  288. package/dist/render/app/fonts/jetbrains-mono/OFL.txt +93 -0
  289. package/dist/render/app/fonts/jetbrains-mono/cyrillic-ext-italic.woff2 +0 -0
  290. package/dist/render/app/fonts/jetbrains-mono/cyrillic-ext.woff2 +0 -0
  291. package/dist/render/app/fonts/jetbrains-mono/cyrillic-italic.woff2 +0 -0
  292. package/dist/render/app/fonts/jetbrains-mono/cyrillic.woff2 +0 -0
  293. package/dist/render/app/fonts/jetbrains-mono/greek-italic.woff2 +0 -0
  294. package/dist/render/app/fonts/jetbrains-mono/greek.woff2 +0 -0
  295. package/dist/render/app/fonts/jetbrains-mono/latin-ext-italic.woff2 +0 -0
  296. package/dist/render/app/fonts/jetbrains-mono/latin-ext.woff2 +0 -0
  297. package/dist/render/app/fonts/jetbrains-mono/latin-italic.woff2 +0 -0
  298. package/dist/render/app/fonts/jetbrains-mono/latin.woff2 +0 -0
  299. package/dist/render/app/fonts/jetbrains-mono/vietnamese-italic.woff2 +0 -0
  300. package/dist/render/app/fonts/jetbrains-mono/vietnamese.woff2 +0 -0
  301. package/dist/render/app/fonts/manrope/OFL.txt +93 -0
  302. package/dist/render/app/fonts/manrope/cyrillic-ext.woff2 +0 -0
  303. package/dist/render/app/fonts/manrope/cyrillic.woff2 +0 -0
  304. package/dist/render/app/fonts/manrope/greek.woff2 +0 -0
  305. package/dist/render/app/fonts/manrope/latin-ext.woff2 +0 -0
  306. package/dist/render/app/fonts/manrope/latin.woff2 +0 -0
  307. package/dist/render/app/fonts/manrope/vietnamese.woff2 +0 -0
  308. package/dist/render/app/fonts/michroma/OFL.txt +93 -0
  309. package/dist/render/app/fonts/michroma/latin-ext.woff2 +0 -0
  310. package/dist/render/app/fonts/michroma/latin.woff2 +0 -0
  311. package/dist/render/app/fonts/oswald/OFL.txt +93 -0
  312. package/dist/render/app/fonts/oswald/cyrillic-ext.woff2 +0 -0
  313. package/dist/render/app/fonts/oswald/cyrillic.woff2 +0 -0
  314. package/dist/render/app/fonts/oswald/latin-ext.woff2 +0 -0
  315. package/dist/render/app/fonts/oswald/latin.woff2 +0 -0
  316. package/dist/render/app/fonts/oswald/vietnamese.woff2 +0 -0
  317. package/dist/render/app/fonts/outfit/OFL.txt +93 -0
  318. package/dist/render/app/fonts/outfit/latin-ext.woff2 +0 -0
  319. package/dist/render/app/fonts/outfit/latin.woff2 +0 -0
  320. package/dist/render/app/fonts/playfair-display/OFL.txt +93 -0
  321. package/dist/render/app/fonts/playfair-display/cyrillic-italic.woff2 +0 -0
  322. package/dist/render/app/fonts/playfair-display/cyrillic.woff2 +0 -0
  323. package/dist/render/app/fonts/playfair-display/latin-ext-italic.woff2 +0 -0
  324. package/dist/render/app/fonts/playfair-display/latin-ext.woff2 +0 -0
  325. package/dist/render/app/fonts/playfair-display/latin-italic.woff2 +0 -0
  326. package/dist/render/app/fonts/playfair-display/latin.woff2 +0 -0
  327. package/dist/render/app/fonts/playfair-display/vietnamese-italic.woff2 +0 -0
  328. package/dist/render/app/fonts/playfair-display/vietnamese.woff2 +0 -0
  329. package/dist/render/app/fonts/poppins/OFL.txt +93 -0
  330. package/dist/render/app/fonts/poppins/devanagari-400.woff2 +0 -0
  331. package/dist/render/app/fonts/poppins/devanagari-500.woff2 +0 -0
  332. package/dist/render/app/fonts/poppins/devanagari-600.woff2 +0 -0
  333. package/dist/render/app/fonts/poppins/devanagari-italic-400.woff2 +0 -0
  334. package/dist/render/app/fonts/poppins/devanagari-italic-500.woff2 +0 -0
  335. package/dist/render/app/fonts/poppins/devanagari-italic-600.woff2 +0 -0
  336. package/dist/render/app/fonts/poppins/latin-400.woff2 +0 -0
  337. package/dist/render/app/fonts/poppins/latin-500.woff2 +0 -0
  338. package/dist/render/app/fonts/poppins/latin-600.woff2 +0 -0
  339. package/dist/render/app/fonts/poppins/latin-ext-400.woff2 +0 -0
  340. package/dist/render/app/fonts/poppins/latin-ext-500.woff2 +0 -0
  341. package/dist/render/app/fonts/poppins/latin-ext-600.woff2 +0 -0
  342. package/dist/render/app/fonts/poppins/latin-ext-italic-400.woff2 +0 -0
  343. package/dist/render/app/fonts/poppins/latin-ext-italic-500.woff2 +0 -0
  344. package/dist/render/app/fonts/poppins/latin-ext-italic-600.woff2 +0 -0
  345. package/dist/render/app/fonts/poppins/latin-italic-400.woff2 +0 -0
  346. package/dist/render/app/fonts/poppins/latin-italic-500.woff2 +0 -0
  347. package/dist/render/app/fonts/poppins/latin-italic-600.woff2 +0 -0
  348. package/dist/render/app/fonts/sora/OFL.txt +93 -0
  349. package/dist/render/app/fonts/sora/latin-ext.woff2 +0 -0
  350. package/dist/render/app/fonts/sora/latin.woff2 +0 -0
  351. package/dist/render/app/fonts/space-grotesk/OFL.txt +93 -0
  352. package/dist/render/app/fonts/space-grotesk/latin-ext.woff2 +0 -0
  353. package/dist/render/app/fonts/space-grotesk/latin.woff2 +0 -0
  354. package/dist/render/app/fonts/space-grotesk/vietnamese.woff2 +0 -0
  355. package/dist/render/app/globals.css +3264 -0
  356. package/dist/render/built-with.json +3 -0
  357. package/dist/render/components/AppointmentBooking.d.ts +14 -0
  358. package/dist/render/components/AppointmentBooking.js +1 -0
  359. package/dist/render/components/AssistantChatMount.d.ts +8 -0
  360. package/dist/render/components/AssistantChatMount.js +1 -0
  361. package/dist/render/components/AssistantChatPanel.d.ts +7 -0
  362. package/dist/render/components/AssistantChatPanel.js +1 -0
  363. package/dist/render/components/BoxHeaderBar.d.ts +10 -0
  364. package/dist/render/components/BoxHeaderBar.js +1 -0
  365. package/dist/render/components/BrandPlate.d.ts +4 -0
  366. package/dist/render/components/BrandPlate.js +1 -0
  367. package/dist/render/components/BundleCard.d.ts +6 -0
  368. package/dist/render/components/BundleCard.js +1 -0
  369. package/dist/render/components/CartContext.d.ts +91 -0
  370. package/dist/render/components/CartContext.js +1 -0
  371. package/dist/render/components/CartDrawer.d.ts +12 -0
  372. package/dist/render/components/CartDrawer.js +4 -0
  373. package/dist/render/components/CartLineThumbnail.d.ts +8 -0
  374. package/dist/render/components/CartLineThumbnail.js +1 -0
  375. package/dist/render/components/CatalogFilterBarSection.d.ts +12 -0
  376. package/dist/render/components/CatalogFilterBarSection.js +1 -0
  377. package/dist/render/components/ChatContext.d.ts +23 -0
  378. package/dist/render/components/ChatContext.js +1 -0
  379. package/dist/render/components/ChatLauncher.d.ts +18 -0
  380. package/dist/render/components/ChatLauncher.js +1 -0
  381. package/dist/render/components/ChatWidget.d.ts +12 -0
  382. package/dist/render/components/ChatWidget.js +1 -0
  383. package/dist/render/components/CheckoutCTA.d.ts +12 -0
  384. package/dist/render/components/CheckoutCTA.js +1 -0
  385. package/dist/render/components/CollectionCard.d.ts +27 -0
  386. package/dist/render/components/CollectionCard.js +1 -0
  387. package/dist/render/components/Collections.d.ts +17 -0
  388. package/dist/render/components/Collections.js +1 -0
  389. package/dist/render/components/CompatibleTyres.d.ts +23 -0
  390. package/dist/render/components/CompatibleTyres.js +1 -0
  391. package/dist/render/components/ConsentBanner.d.ts +20 -0
  392. package/dist/render/components/ConsentBanner.js +1 -0
  393. package/dist/render/components/ConsentContext.d.ts +22 -0
  394. package/dist/render/components/ConsentContext.js +1 -0
  395. package/dist/render/components/ConsentPanel.d.ts +15 -0
  396. package/dist/render/components/ConsentPanel.js +1 -0
  397. package/dist/render/components/ConsentProvider.d.ts +7 -0
  398. package/dist/render/components/ConsentProvider.js +1 -0
  399. package/dist/render/components/ContactRouting.d.ts +33 -0
  400. package/dist/render/components/ContactRouting.js +1 -0
  401. package/dist/render/components/CountrySelect.d.ts +7 -0
  402. package/dist/render/components/CountrySelect.js +1 -0
  403. package/dist/render/components/CouponField.d.ts +3 -0
  404. package/dist/render/components/CouponField.js +1 -0
  405. package/dist/render/components/CurrencyContext.d.ts +27 -0
  406. package/dist/render/components/CurrencyContext.js +1 -0
  407. package/dist/render/components/DeliveryOptions.d.ts +18 -0
  408. package/dist/render/components/DeliveryOptions.js +1 -0
  409. package/dist/render/components/DeliveryOptionsSource.d.ts +8 -0
  410. package/dist/render/components/DeliveryOptionsSource.js +1 -0
  411. package/dist/render/components/DetailRows.d.ts +22 -0
  412. package/dist/render/components/DetailRows.js +1 -0
  413. package/dist/render/components/DimensionArrowMarkers.d.ts +3 -0
  414. package/dist/render/components/DimensionArrowMarkers.js +1 -0
  415. package/dist/render/components/EditorCurrencyNoticeContext.d.ts +7 -0
  416. package/dist/render/components/EditorCurrencyNoticeContext.js +1 -0
  417. package/dist/render/components/EmailCaptureForm.d.ts +15 -0
  418. package/dist/render/components/EmailCaptureForm.js +1 -0
  419. package/dist/render/components/EnglishVariant.d.ts +7 -0
  420. package/dist/render/components/EnglishVariant.js +1 -0
  421. package/dist/render/components/EuTyreLabelCard.d.ts +4 -0
  422. package/dist/render/components/EuTyreLabelCard.js +1 -0
  423. package/dist/render/components/EuTyreLabels.d.ts +7 -0
  424. package/dist/render/components/EuTyreLabels.js +1 -0
  425. package/dist/render/components/Events.d.ts +62 -0
  426. package/dist/render/components/Events.js +1 -0
  427. package/dist/render/components/FinishSwatches.d.ts +14 -0
  428. package/dist/render/components/FinishSwatches.js +1 -0
  429. package/dist/render/components/FitmentTable.d.ts +17 -0
  430. package/dist/render/components/FitmentTable.js +1 -0
  431. package/dist/render/components/FooterDivider.d.ts +6 -0
  432. package/dist/render/components/FooterDivider.js +1 -0
  433. package/dist/render/components/FooterEmailSignup.d.ts +6 -0
  434. package/dist/render/components/FooterEmailSignup.js +1 -0
  435. package/dist/render/components/FooterGroup.d.ts +8 -0
  436. package/dist/render/components/FooterGroup.js +1 -0
  437. package/dist/render/components/FooterLogo.d.ts +13 -0
  438. package/dist/render/components/FooterLogo.js +1 -0
  439. package/dist/render/components/FooterMenu.d.ts +25 -0
  440. package/dist/render/components/FooterMenu.js +1 -0
  441. package/dist/render/components/FooterSection.d.ts +11 -0
  442. package/dist/render/components/FooterSection.js +1 -0
  443. package/dist/render/components/FooterSocial.d.ts +16 -0
  444. package/dist/render/components/FooterSocial.js +1 -0
  445. package/dist/render/components/FooterText.d.ts +7 -0
  446. package/dist/render/components/FooterText.js +1 -0
  447. package/dist/render/components/FormBlock.d.ts +19 -0
  448. package/dist/render/components/FormBlock.js +1 -0
  449. package/dist/render/components/GalleryCard.d.ts +28 -0
  450. package/dist/render/components/GalleryCard.js +1 -0
  451. package/dist/render/components/GalleryGrid.d.ts +20 -0
  452. package/dist/render/components/GalleryGrid.js +1 -0
  453. package/dist/render/components/GalleryItem.d.ts +35 -0
  454. package/dist/render/components/GalleryItem.js +1 -0
  455. package/dist/render/components/GalleryShowcase.d.ts +51 -0
  456. package/dist/render/components/GalleryShowcase.js +1 -0
  457. package/dist/render/components/Header.d.ts +13 -0
  458. package/dist/render/components/Header.js +1 -0
  459. package/dist/render/components/HeaderNavItem.d.ts +17 -0
  460. package/dist/render/components/HeaderNavItem.js +1 -0
  461. package/dist/render/components/HeaderToolBlocks.d.ts +18 -0
  462. package/dist/render/components/HeaderToolBlocks.js +1 -0
  463. package/dist/render/components/HeaderTools.d.ts +21 -0
  464. package/dist/render/components/HeaderTools.js +1 -0
  465. package/dist/render/components/LegalLine.d.ts +4 -0
  466. package/dist/render/components/LegalLine.js +1 -0
  467. package/dist/render/components/Lightbox.d.ts +19 -0
  468. package/dist/render/components/Lightbox.js +1 -0
  469. package/dist/render/components/LinkedProductHero.d.ts +34 -0
  470. package/dist/render/components/LinkedProductHero.js +1 -0
  471. package/dist/render/components/LiveSiteMapsProvider.d.ts +6 -0
  472. package/dist/render/components/LiveSiteMapsProvider.js +1 -0
  473. package/dist/render/components/MenuPlaceholderLabel.d.ts +1 -0
  474. package/dist/render/components/MenuPlaceholderLabel.js +1 -0
  475. package/dist/render/components/NoCurrencyNote.d.ts +4 -0
  476. package/dist/render/components/NoCurrencyNote.js +1 -0
  477. package/dist/render/components/PreOrderPanel.d.ts +5 -0
  478. package/dist/render/components/PreOrderPanel.js +1 -0
  479. package/dist/render/components/PreviewMenusContext.d.ts +13 -0
  480. package/dist/render/components/PreviewMenusContext.js +1 -0
  481. package/dist/render/components/ProductCard.d.ts +6 -0
  482. package/dist/render/components/ProductCard.js +1 -0
  483. package/dist/render/components/ProductCardChrome.d.ts +37 -0
  484. package/dist/render/components/ProductCardChrome.js +1 -0
  485. package/dist/render/components/ProductCardEyebrow.d.ts +14 -0
  486. package/dist/render/components/ProductCardEyebrow.js +1 -0
  487. package/dist/render/components/ProductGridSection.d.ts +65 -0
  488. package/dist/render/components/ProductGridSection.js +1 -0
  489. package/dist/render/components/ProductHeroPanel.d.ts +22 -0
  490. package/dist/render/components/ProductHeroPanel.js +1 -0
  491. package/dist/render/components/ProductLightbox.d.ts +5 -0
  492. package/dist/render/components/ProductLightbox.js +1 -0
  493. package/dist/render/components/ProductRef.d.ts +16 -0
  494. package/dist/render/components/ProductRef.js +1 -0
  495. package/dist/render/components/PublishedFooter.d.ts +16 -0
  496. package/dist/render/components/PublishedFooter.js +1 -0
  497. package/dist/render/components/PublishedHeader.d.ts +4 -0
  498. package/dist/render/components/PublishedHeader.js +1 -0
  499. package/dist/render/components/QuantityStepper.d.ts +7 -0
  500. package/dist/render/components/QuantityStepper.js +1 -0
  501. package/dist/render/components/QuoteLink.d.ts +4 -0
  502. package/dist/render/components/QuoteLink.js +1 -0
  503. package/dist/render/components/ReviewForm.d.ts +8 -0
  504. package/dist/render/components/ReviewForm.js +1 -0
  505. package/dist/render/components/Reviews.d.ts +12 -0
  506. package/dist/render/components/Reviews.js +1 -0
  507. package/dist/render/components/SearchContext.d.ts +13 -0
  508. package/dist/render/components/SearchContext.js +1 -0
  509. package/dist/render/components/SectionBand.d.ts +9 -0
  510. package/dist/render/components/SectionBand.js +1 -0
  511. package/dist/render/components/SectionFootnote.d.ts +5 -0
  512. package/dist/render/components/SectionFootnote.js +1 -0
  513. package/dist/render/components/SectionGroupBody.d.ts +9 -0
  514. package/dist/render/components/SectionGroupBody.js +1 -0
  515. package/dist/render/components/SectionNotice.d.ts +7 -0
  516. package/dist/render/components/SectionNotice.js +1 -0
  517. package/dist/render/components/SiteRecordContext.d.ts +17 -0
  518. package/dist/render/components/SiteRecordContext.js +1 -0
  519. package/dist/render/components/SiteSwitch.d.ts +10 -0
  520. package/dist/render/components/SiteSwitch.js +1 -0
  521. package/dist/render/components/SpecTable.d.ts +18 -0
  522. package/dist/render/components/SpecTable.js +1 -0
  523. package/dist/render/components/SpecTablePartBridge.d.ts +5 -0
  524. package/dist/render/components/SpecTablePartBridge.js +1 -0
  525. package/dist/render/components/StorefrontProviders.d.ts +15 -0
  526. package/dist/render/components/StorefrontProviders.js +1 -0
  527. package/dist/render/components/SubmitBuild.d.ts +23 -0
  528. package/dist/render/components/SubmitBuild.js +1 -0
  529. package/dist/render/components/Subscribe.d.ts +27 -0
  530. package/dist/render/components/Subscribe.js +1 -0
  531. package/dist/render/components/SubscribePopup.d.ts +19 -0
  532. package/dist/render/components/SubscribePopup.js +7 -0
  533. package/dist/render/components/SubscribePopupContext.d.ts +33 -0
  534. package/dist/render/components/SubscribePopupContext.js +1 -0
  535. package/dist/render/components/ThemeToggle.d.ts +1 -0
  536. package/dist/render/components/ThemeToggle.js +1 -0
  537. package/dist/render/components/ThemedSelect.d.ts +59 -0
  538. package/dist/render/components/ThemedSelect.js +1 -0
  539. package/dist/render/components/TyreCard.d.ts +19 -0
  540. package/dist/render/components/TyreCard.js +1 -0
  541. package/dist/render/components/TyreFitVerdicts.d.ts +7 -0
  542. package/dist/render/components/TyreFitVerdicts.js +1 -0
  543. package/dist/render/components/TyreImage.d.ts +10 -0
  544. package/dist/render/components/TyreImage.js +1 -0
  545. package/dist/render/components/TyrePlpCard.d.ts +19 -0
  546. package/dist/render/components/TyrePlpCard.js +1 -0
  547. package/dist/render/components/TyreRenderSvg.d.ts +7 -0
  548. package/dist/render/components/TyreRenderSvg.js +1 -0
  549. package/dist/render/components/TyreSummaryCard.d.ts +11 -0
  550. package/dist/render/components/TyreSummaryCard.js +1 -0
  551. package/dist/render/components/TyreVehicleFitment.d.ts +18 -0
  552. package/dist/render/components/TyreVehicleFitment.js +1 -0
  553. package/dist/render/components/ViewMoreLink.d.ts +4 -0
  554. package/dist/render/components/ViewMoreLink.js +1 -0
  555. package/dist/render/components/WebFormField.d.ts +17 -0
  556. package/dist/render/components/WebFormField.js +1 -0
  557. package/dist/render/components/WheelCardFrame.d.ts +67 -0
  558. package/dist/render/components/WheelCardFrame.js +1 -0
  559. package/dist/render/components/WheelImage.d.ts +20 -0
  560. package/dist/render/components/WheelImage.js +1 -0
  561. package/dist/render/components/WheelPlaceholder.d.ts +7 -0
  562. package/dist/render/components/WheelPlaceholder.js +1 -0
  563. package/dist/render/components/WheelSvg.d.ts +7 -0
  564. package/dist/render/components/WheelSvg.js +1 -0
  565. package/dist/render/components/WishlistContext.d.ts +13 -0
  566. package/dist/render/components/WishlistContext.js +1 -0
  567. package/dist/render/components/booking/BookingBox.d.ts +16 -0
  568. package/dist/render/components/booking/BookingBox.js +1 -0
  569. package/dist/render/components/booking/BookingFormState.d.ts +46 -0
  570. package/dist/render/components/booking/BookingFormState.js +1 -0
  571. package/dist/render/components/booking/BookingRegions.d.ts +16 -0
  572. package/dist/render/components/booking/BookingRegions.js +1 -0
  573. package/dist/render/components/buy-row.d.ts +1 -0
  574. package/dist/render/components/buy-row.js +1 -0
  575. package/dist/render/components/catalog/CatalogFilterBar.d.ts +55 -0
  576. package/dist/render/components/catalog/CatalogFilterBar.js +1 -0
  577. package/dist/render/components/catalog/CatalogFilterContext.d.ts +39 -0
  578. package/dist/render/components/catalog/CatalogFilterContext.js +1 -0
  579. package/dist/render/components/catalog/CatalogFilterLabels.d.ts +6 -0
  580. package/dist/render/components/catalog/CatalogFilterLabels.js +1 -0
  581. package/dist/render/components/catalog/CatalogVehiclePicker.d.ts +22 -0
  582. package/dist/render/components/catalog/CatalogVehiclePicker.js +1 -0
  583. package/dist/render/components/catalog/FilterPill.d.ts +25 -0
  584. package/dist/render/components/catalog/FilterPill.js +1 -0
  585. package/dist/render/components/catalog/SiteMenuLinks.d.ts +6 -0
  586. package/dist/render/components/catalog/SiteMenuLinks.js +1 -0
  587. package/dist/render/components/checkout/CheckoutPageClient.d.ts +25 -0
  588. package/dist/render/components/checkout/CheckoutPageClient.js +3 -0
  589. package/dist/render/components/fitment/FitmentFinder.d.ts +15 -0
  590. package/dist/render/components/fitment/FitmentFinder.js +1 -0
  591. package/dist/render/components/fitment/FitmentPickerGrid.d.ts +6 -0
  592. package/dist/render/components/fitment/FitmentPickerGrid.js +1 -0
  593. package/dist/render/components/fitment/FitmentRowFit.d.ts +4 -0
  594. package/dist/render/components/fitment/FitmentRowFit.js +1 -0
  595. package/dist/render/components/fitment/PickerField.d.ts +16 -0
  596. package/dist/render/components/fitment/PickerField.js +1 -0
  597. package/dist/render/components/fitment/StockFitmentCard.d.ts +8 -0
  598. package/dist/render/components/fitment/StockFitmentCard.js +1 -0
  599. package/dist/render/components/fitment/useFitmentCascade.d.ts +31 -0
  600. package/dist/render/components/fitment/useFitmentCascade.js +1 -0
  601. package/dist/render/components/fitment/useVehicleFit.d.ts +29 -0
  602. package/dist/render/components/fitment/useVehicleFit.js +1 -0
  603. package/dist/render/components/fitment/vehicle-control.d.ts +10 -0
  604. package/dist/render/components/fitment/vehicle-control.js +0 -0
  605. package/dist/render/components/fitment/vehicle-level-state.d.ts +14 -0
  606. package/dist/render/components/fitment/vehicle-level-state.js +1 -0
  607. package/dist/render/components/formSubmission.d.ts +32 -0
  608. package/dist/render/components/formSubmission.js +1 -0
  609. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.d.ts +13 -0
  610. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +1 -0
  611. package/dist/render/components/pdp-dynamic/DynamicDetailRows.d.ts +14 -0
  612. package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -0
  613. package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.d.ts +8 -0
  614. package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.js +1 -0
  615. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.d.ts +16 -0
  616. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -0
  617. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.d.ts +18 -0
  618. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -0
  619. package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +25 -0
  620. package/dist/render/components/pdp-dynamic/DynamicProductHero.js +1 -0
  621. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +31 -0
  622. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -0
  623. package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +13 -0
  624. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -0
  625. package/dist/render/components/pdp-dynamic/DynamicTyreFitment.d.ts +13 -0
  626. package/dist/render/components/pdp-dynamic/DynamicTyreFitment.js +1 -0
  627. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.d.ts +11 -0
  628. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -0
  629. package/dist/render/components/pdp-dynamic/FitmentTableBlock.d.ts +7 -0
  630. package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -0
  631. package/dist/render/components/pdp-dynamic/KindGate.d.ts +8 -0
  632. package/dist/render/components/pdp-dynamic/KindGate.js +1 -0
  633. package/dist/render/components/pdp-dynamic/useSampleProduct.d.ts +5 -0
  634. package/dist/render/components/pdp-dynamic/useSampleProduct.js +1 -0
  635. package/dist/render/components/product-hero/TyreHeroFitment.d.ts +17 -0
  636. package/dist/render/components/product-hero/TyreHeroFitment.js +1 -0
  637. package/dist/render/components/product-hero/VehicleQuestion.d.ts +18 -0
  638. package/dist/render/components/product-hero/VehicleQuestion.js +1 -0
  639. package/dist/render/components/product-hero/WheelHeroFitment.d.ts +9 -0
  640. package/dist/render/components/product-hero/WheelHeroFitment.js +1 -0
  641. package/dist/render/components/product-hero/hero-content.d.ts +7 -0
  642. package/dist/render/components/product-hero/hero-content.js +1 -0
  643. package/dist/render/components/product-hero/hero-view.d.ts +37 -0
  644. package/dist/render/components/product-hero/hero-view.js +1 -0
  645. package/dist/render/components/product-hero/stage-photo.d.ts +10 -0
  646. package/dist/render/components/product-hero/stage-photo.js +3 -0
  647. package/dist/render/components/submit/SubmitBox.d.ts +19 -0
  648. package/dist/render/components/submit/SubmitBox.js +1 -0
  649. package/dist/render/components/submit/SubmitRegions.d.ts +17 -0
  650. package/dist/render/components/submit/SubmitRegions.js +1 -0
  651. package/dist/render/components/useEuTyreLabels.d.ts +3 -0
  652. package/dist/render/components/useEuTyreLabels.js +1 -0
  653. package/dist/render/components/useFinishSelection.d.ts +17 -0
  654. package/dist/render/components/useFinishSelection.js +1 -0
  655. package/dist/render/components/useHeaderBar.d.ts +9 -0
  656. package/dist/render/components/useHeaderBar.js +1 -0
  657. package/dist/render/components/useLightbox.d.ts +10 -0
  658. package/dist/render/components/useLightbox.js +1 -0
  659. package/dist/render/components/useModalDismiss.d.ts +8 -0
  660. package/dist/render/components/useModalDismiss.js +1 -0
  661. package/dist/render/components/useNewsletterSignup.d.ts +12 -0
  662. package/dist/render/components/useNewsletterSignup.js +1 -0
  663. package/dist/render/components/usePreOrderIntent.d.ts +14 -0
  664. package/dist/render/components/usePreOrderIntent.js +1 -0
  665. package/dist/render/components/useProductCatalog.d.ts +54 -0
  666. package/dist/render/components/useProductCatalog.js +1 -0
  667. package/dist/render/components/useProductSelection.d.ts +39 -0
  668. package/dist/render/components/useProductSelection.js +1 -0
  669. package/dist/render/components/useStockAlertSignup.d.ts +14 -0
  670. package/dist/render/components/useStockAlertSignup.js +1 -0
  671. package/dist/render/components/useStorefrontReviews.d.ts +2 -0
  672. package/dist/render/components/useStorefrontReviews.js +1 -0
  673. package/dist/render/components/useTyreCatalog.d.ts +2 -0
  674. package/dist/render/components/useTyreCatalog.js +1 -0
  675. package/dist/render/components/useTyreDetail.d.ts +6 -0
  676. package/dist/render/components/useTyreDetail.js +1 -0
  677. package/dist/render/components/useTyreFitAnswer.d.ts +5 -0
  678. package/dist/render/components/useTyreFitAnswer.js +1 -0
  679. package/dist/render/components/useWheelDetail.d.ts +6 -0
  680. package/dist/render/components/useWheelDetail.js +1 -0
  681. package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +42 -0
  682. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -0
  683. package/dist/render/components/wheels-plp/PlpActiveChips.d.ts +9 -0
  684. package/dist/render/components/wheels-plp/PlpActiveChips.js +1 -0
  685. package/dist/render/components/wheels-plp/PlpCard.d.ts +27 -0
  686. package/dist/render/components/wheels-plp/PlpCard.js +1 -0
  687. package/dist/render/components/wheels-plp/PlpInStockToggle.d.ts +6 -0
  688. package/dist/render/components/wheels-plp/PlpInStockToggle.js +1 -0
  689. package/dist/render/components/wheels-plp/PlpNotifyMeDialog.d.ts +10 -0
  690. package/dist/render/components/wheels-plp/PlpNotifyMeDialog.js +1 -0
  691. package/dist/render/components/wheels-plp/PlpPagination.d.ts +5 -0
  692. package/dist/render/components/wheels-plp/PlpPagination.js +1 -0
  693. package/dist/render/components/wheels-plp/PlpSidebar.d.ts +25 -0
  694. package/dist/render/components/wheels-plp/PlpSidebar.js +1 -0
  695. package/dist/render/components/wheels-plp/PlpTypePicker.d.ts +7 -0
  696. package/dist/render/components/wheels-plp/PlpTypePicker.js +1 -0
  697. package/dist/render/components/wheels-plp/PlpTyreSizeBoxes.d.ts +9 -0
  698. package/dist/render/components/wheels-plp/PlpTyreSizeBoxes.js +1 -0
  699. package/dist/render/components/wheels-plp/PlpVehicleBar.d.ts +15 -0
  700. package/dist/render/components/wheels-plp/PlpVehicleBar.js +1 -0
  701. package/dist/render/components/wheels-plp/PlpVehicleGate.d.ts +10 -0
  702. package/dist/render/components/wheels-plp/PlpVehicleGate.js +1 -0
  703. package/dist/render/components/wheels-plp/usePlpCardSelection.d.ts +18 -0
  704. package/dist/render/components/wheels-plp/usePlpCardSelection.js +1 -0
  705. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.d.ts +10 -0
  706. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.js +1 -0
  707. package/dist/render/components/wheels-plp/useVehicleCatalog.d.ts +10 -0
  708. package/dist/render/components/wheels-plp/useVehicleCatalog.js +1 -0
  709. package/dist/render/components/wheels-plp/useWheelCardBottom.d.ts +20 -0
  710. package/dist/render/components/wheels-plp/useWheelCardBottom.js +1 -0
  711. package/dist/render/lib/api/chat.d.ts +31 -0
  712. package/dist/render/lib/api/chat.js +1 -0
  713. package/dist/render/lib/api/fitment-data.d.ts +18 -0
  714. package/dist/render/lib/api/fitment-data.js +1 -0
  715. package/dist/render/lib/api/gallery-builds-data.d.ts +4 -0
  716. package/dist/render/lib/api/gallery-builds-data.js +1 -0
  717. package/dist/render/lib/api/generated-upload-limits.d.ts +1292 -0
  718. package/dist/render/lib/api/generated-upload-limits.js +1 -0
  719. package/dist/render/lib/api/index.d.ts +806 -0
  720. package/dist/render/lib/api/index.js +1 -0
  721. package/dist/render/lib/api/origins.d.ts +2 -0
  722. package/dist/render/lib/api/origins.js +1 -0
  723. package/dist/render/lib/api/types.d.ts +3928 -0
  724. package/dist/render/lib/api/types.js +0 -0
  725. package/dist/render/lib/api/upload-limits.d.ts +10 -0
  726. package/dist/render/lib/api/upload-limits.js +1 -0
  727. package/dist/render/lib/assistant-chat.d.ts +35 -0
  728. package/dist/render/lib/assistant-chat.js +1 -0
  729. package/dist/render/lib/auth.d.ts +6 -0
  730. package/dist/render/lib/auth.js +1 -0
  731. package/dist/render/lib/booking/text-kinds.d.ts +11 -0
  732. package/dist/render/lib/booking/text-kinds.js +1 -0
  733. package/dist/render/lib/booking-dates.d.ts +23 -0
  734. package/dist/render/lib/booking-dates.js +1 -0
  735. package/dist/render/lib/cache-evict.d.ts +4 -0
  736. package/dist/render/lib/cache-evict.js +1 -0
  737. package/dist/render/lib/cart/coupon-preview.d.ts +12 -0
  738. package/dist/render/lib/cart/coupon-preview.js +1 -0
  739. package/dist/render/lib/cart/shipping-status.d.ts +12 -0
  740. package/dist/render/lib/cart/shipping-status.js +1 -0
  741. package/dist/render/lib/cart/snapshot-lines.d.ts +3 -0
  742. package/dist/render/lib/cart/snapshot-lines.js +1 -0
  743. package/dist/render/lib/catalog/from-tyre.d.ts +3 -0
  744. package/dist/render/lib/catalog/from-tyre.js +1 -0
  745. package/dist/render/lib/catalog/from-wheel.d.ts +7 -0
  746. package/dist/render/lib/catalog/from-wheel.js +1 -0
  747. package/dist/render/lib/catalog/listing-links.d.ts +11 -0
  748. package/dist/render/lib/catalog/listing-links.js +1 -0
  749. package/dist/render/lib/catalog/plp-item.d.ts +39 -0
  750. package/dist/render/lib/catalog/plp-item.js +1 -0
  751. package/dist/render/lib/catalog/plp-vehicle-copy.d.ts +20 -0
  752. package/dist/render/lib/catalog/plp-vehicle-copy.js +1 -0
  753. package/dist/render/lib/catalog/plp-vehicle-slice.d.ts +13 -0
  754. package/dist/render/lib/catalog/plp-vehicle-slice.js +1 -0
  755. package/dist/render/lib/catalog/product-options.d.ts +27 -0
  756. package/dist/render/lib/catalog/product-options.js +1 -0
  757. package/dist/render/lib/catalog/purchase.d.ts +46 -0
  758. package/dist/render/lib/catalog/purchase.js +1 -0
  759. package/dist/render/lib/catalog/related-cards.d.ts +12 -0
  760. package/dist/render/lib/catalog/related-cards.js +1 -0
  761. package/dist/render/lib/catalog/relationships.d.ts +28 -0
  762. package/dist/render/lib/catalog/relationships.js +1 -0
  763. package/dist/render/lib/catalog/store-product.d.ts +56 -0
  764. package/dist/render/lib/catalog/store-product.js +1 -0
  765. package/dist/render/lib/chat-socket.d.ts +8 -0
  766. package/dist/render/lib/chat-socket.js +1 -0
  767. package/dist/render/lib/checkout/wallet-return.d.ts +52 -0
  768. package/dist/render/lib/checkout/wallet-return.js +1 -0
  769. package/dist/render/lib/chrome-cache.d.ts +6 -0
  770. package/dist/render/lib/chrome-cache.js +1 -0
  771. package/dist/render/lib/chrome-load.d.ts +28 -0
  772. package/dist/render/lib/chrome-load.js +1 -0
  773. package/dist/render/lib/click-ids.d.ts +8 -0
  774. package/dist/render/lib/click-ids.js +1 -0
  775. package/dist/render/lib/commerce.d.ts +42 -0
  776. package/dist/render/lib/commerce.js +1 -0
  777. package/dist/render/lib/consent/choice.d.ts +35 -0
  778. package/dist/render/lib/consent/choice.js +1 -0
  779. package/dist/render/lib/consent/rules.d.ts +60 -0
  780. package/dist/render/lib/consent/rules.js +1 -0
  781. package/dist/render/lib/content/catalog-filter-labels.d.ts +6 -0
  782. package/dist/render/lib/content/catalog-filter-labels.js +1 -0
  783. package/dist/render/lib/content/country-show-as.d.ts +9 -0
  784. package/dist/render/lib/content/country-show-as.js +1 -0
  785. package/dist/render/lib/content/english-variant.d.ts +4 -0
  786. package/dist/render/lib/content/english-variant.js +1 -0
  787. package/dist/render/lib/content/field-usage.d.ts +35 -0
  788. package/dist/render/lib/content/field-usage.js +1 -0
  789. package/dist/render/lib/content/header-bar.d.ts +8 -0
  790. package/dist/render/lib/content/header-bar.js +1 -0
  791. package/dist/render/lib/content/header-theme.d.ts +7 -0
  792. package/dist/render/lib/content/header-theme.js +1 -0
  793. package/dist/render/lib/content/menu-placeholder.d.ts +8 -0
  794. package/dist/render/lib/content/menu-placeholder.js +1 -0
  795. package/dist/render/lib/content/menu-row.d.ts +9 -0
  796. package/dist/render/lib/content/menu-row.js +1 -0
  797. package/dist/render/lib/content/product-hero.d.ts +13 -0
  798. package/dist/render/lib/content/product-hero.js +1 -0
  799. package/dist/render/lib/content/site.d.ts +62 -0
  800. package/dist/render/lib/content/site.js +1 -0
  801. package/dist/render/lib/content/source-values.d.ts +43 -0
  802. package/dist/render/lib/content/source-values.js +0 -0
  803. package/dist/render/lib/content/stock-words.d.ts +10 -0
  804. package/dist/render/lib/content/stock-words.js +1 -0
  805. package/dist/render/lib/countries.d.ts +5 -0
  806. package/dist/render/lib/countries.js +1 -0
  807. package/dist/render/lib/editor-route.d.ts +3 -0
  808. package/dist/render/lib/editor-route.js +1 -0
  809. package/dist/render/lib/email-shape.d.ts +1 -0
  810. package/dist/render/lib/email-shape.js +1 -0
  811. package/dist/render/lib/font-table.json +2588 -0
  812. package/dist/render/lib/forwarded-for.d.ts +6 -0
  813. package/dist/render/lib/forwarded-for.js +1 -0
  814. package/dist/render/lib/google-tag.d.ts +37 -0
  815. package/dist/render/lib/google-tag.js +1 -0
  816. package/dist/render/lib/header-settings-fetch.d.ts +5 -0
  817. package/dist/render/lib/header-settings-fetch.js +1 -0
  818. package/dist/render/lib/links/link-rules.d.ts +80 -0
  819. package/dist/render/lib/links/link-rules.js +1 -0
  820. package/dist/render/lib/logo/surface-is-light.d.ts +1 -0
  821. package/dist/render/lib/logo/surface-is-light.js +1 -0
  822. package/dist/render/lib/menu-link.d.ts +1 -0
  823. package/dist/render/lib/menu-link.js +1 -0
  824. package/dist/render/lib/menu-source.d.ts +23 -0
  825. package/dist/render/lib/menu-source.js +1 -0
  826. package/dist/render/lib/meta-pixel.d.ts +19 -0
  827. package/dist/render/lib/meta-pixel.js +1 -0
  828. package/dist/render/lib/newsletter-signup.d.ts +16 -0
  829. package/dist/render/lib/newsletter-signup.js +1 -0
  830. package/dist/render/lib/next-fonts.d.ts +3 -0
  831. package/dist/render/lib/next-fonts.js +1 -0
  832. package/dist/render/lib/popup/popup-rules.d.ts +25 -0
  833. package/dist/render/lib/popup/popup-rules.js +1 -0
  834. package/dist/render/lib/popup/text-kind-style.d.ts +3 -0
  835. package/dist/render/lib/popup/text-kind-style.js +1 -0
  836. package/dist/render/lib/puck/blocks/commerce/AccountBlock/render.d.ts +2 -0
  837. package/dist/render/lib/puck/blocks/commerce/AccountBlock/render.js +1 -0
  838. package/dist/render/lib/puck/blocks/commerce/AlloyWheelsListing/render.d.ts +6 -0
  839. package/dist/render/lib/puck/blocks/commerce/AlloyWheelsListing/render.js +1 -0
  840. package/dist/render/lib/puck/blocks/commerce/BundleOffer/render.d.ts +2 -0
  841. package/dist/render/lib/puck/blocks/commerce/BundleOffer/render.js +1 -0
  842. package/dist/render/lib/puck/blocks/commerce/CartBlock/render.d.ts +2 -0
  843. package/dist/render/lib/puck/blocks/commerce/CartBlock/render.js +1 -0
  844. package/dist/render/lib/puck/blocks/commerce/CatalogFilterBar/render.d.ts +2 -0
  845. package/dist/render/lib/puck/blocks/commerce/CatalogFilterBar/render.js +1 -0
  846. package/dist/render/lib/puck/blocks/commerce/CheckoutCTA/render.d.ts +6 -0
  847. package/dist/render/lib/puck/blocks/commerce/CheckoutCTA/render.js +1 -0
  848. package/dist/render/lib/puck/blocks/commerce/CollectionCard/render.d.ts +2 -0
  849. package/dist/render/lib/puck/blocks/commerce/CollectionCard/render.js +1 -0
  850. package/dist/render/lib/puck/blocks/commerce/Collections/render.d.ts +7 -0
  851. package/dist/render/lib/puck/blocks/commerce/Collections/render.js +1 -0
  852. package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/render.d.ts +9 -0
  853. package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/render.js +1 -0
  854. package/dist/render/lib/puck/blocks/commerce/CountrySwitchBlock/render.d.ts +2 -0
  855. package/dist/render/lib/puck/blocks/commerce/CountrySwitchBlock/render.js +1 -0
  856. package/dist/render/lib/puck/blocks/commerce/DeliveryOptions/render.d.ts +6 -0
  857. package/dist/render/lib/puck/blocks/commerce/DeliveryOptions/render.js +1 -0
  858. package/dist/render/lib/puck/blocks/commerce/DetailRows/render.d.ts +9 -0
  859. package/dist/render/lib/puck/blocks/commerce/DetailRows/render.js +1 -0
  860. package/dist/render/lib/puck/blocks/commerce/EuTyreLabel/render.d.ts +2 -0
  861. package/dist/render/lib/puck/blocks/commerce/EuTyreLabel/render.js +1 -0
  862. package/dist/render/lib/puck/blocks/commerce/FitmentFinder/render.d.ts +8 -0
  863. package/dist/render/lib/puck/blocks/commerce/FitmentFinder/render.js +1 -0
  864. package/dist/render/lib/puck/blocks/commerce/FitmentTable/render.d.ts +9 -0
  865. package/dist/render/lib/puck/blocks/commerce/FitmentTable/render.js +1 -0
  866. package/dist/render/lib/puck/blocks/commerce/Gallery/render.d.ts +14 -0
  867. package/dist/render/lib/puck/blocks/commerce/Gallery/render.js +1 -0
  868. package/dist/render/lib/puck/blocks/commerce/GalleryB/render.d.ts +13 -0
  869. package/dist/render/lib/puck/blocks/commerce/GalleryB/render.js +1 -0
  870. package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.d.ts +2 -0
  871. package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +1 -0
  872. package/dist/render/lib/puck/blocks/commerce/Header/render.d.ts +2 -0
  873. package/dist/render/lib/puck/blocks/commerce/Header/render.js +1 -0
  874. package/dist/render/lib/puck/blocks/commerce/ProductGrid/render.d.ts +7 -0
  875. package/dist/render/lib/puck/blocks/commerce/ProductGrid/render.js +1 -0
  876. package/dist/render/lib/puck/blocks/commerce/ProductHero/render.d.ts +2 -0
  877. package/dist/render/lib/puck/blocks/commerce/ProductHero/render.js +1 -0
  878. package/dist/render/lib/puck/blocks/commerce/ProductRef/render.d.ts +2 -0
  879. package/dist/render/lib/puck/blocks/commerce/ProductRef/render.js +1 -0
  880. package/dist/render/lib/puck/blocks/commerce/RelatedProducts/render.d.ts +6 -0
  881. package/dist/render/lib/puck/blocks/commerce/RelatedProducts/render.js +1 -0
  882. package/dist/render/lib/puck/blocks/commerce/SearchBlock/render.d.ts +2 -0
  883. package/dist/render/lib/puck/blocks/commerce/SearchBlock/render.js +1 -0
  884. package/dist/render/lib/puck/blocks/commerce/SpecTable/render.d.ts +7 -0
  885. package/dist/render/lib/puck/blocks/commerce/SpecTable/render.js +1 -0
  886. package/dist/render/lib/puck/blocks/commerce/ThemeSwitchBlock/render.d.ts +2 -0
  887. package/dist/render/lib/puck/blocks/commerce/ThemeSwitchBlock/render.js +1 -0
  888. package/dist/render/lib/puck/blocks/commerce/TyreFitment/render.d.ts +2 -0
  889. package/dist/render/lib/puck/blocks/commerce/TyreFitment/render.js +1 -0
  890. package/dist/render/lib/puck/blocks/commerce/TyreSizes/render.d.ts +2 -0
  891. package/dist/render/lib/puck/blocks/commerce/TyreSizes/render.js +1 -0
  892. package/dist/render/lib/puck/blocks/commerce/placeholders.d.ts +4 -0
  893. package/dist/render/lib/puck/blocks/commerce/placeholders.js +1 -0
  894. package/dist/render/lib/puck/blocks/commerce/renders.d.ts +32 -0
  895. package/dist/render/lib/puck/blocks/commerce/renders.js +1 -0
  896. package/dist/render/lib/puck/blocks/service/AppointmentBooking/render.d.ts +8 -0
  897. package/dist/render/lib/puck/blocks/service/AppointmentBooking/render.js +1 -0
  898. package/dist/render/lib/puck/blocks/service/BookingBox/render.d.ts +2 -0
  899. package/dist/render/lib/puck/blocks/service/BookingBox/render.js +1 -0
  900. package/dist/render/lib/puck/blocks/service/ContactRouting/render.d.ts +2 -0
  901. package/dist/render/lib/puck/blocks/service/ContactRouting/render.js +1 -0
  902. package/dist/render/lib/puck/blocks/service/Events/render.d.ts +7 -0
  903. package/dist/render/lib/puck/blocks/service/Events/render.js +1 -0
  904. package/dist/render/lib/puck/blocks/service/Footer/render.d.ts +8 -0
  905. package/dist/render/lib/puck/blocks/service/Footer/render.js +1 -0
  906. package/dist/render/lib/puck/blocks/service/FooterDivider/render.d.ts +2 -0
  907. package/dist/render/lib/puck/blocks/service/FooterDivider/render.js +1 -0
  908. package/dist/render/lib/puck/blocks/service/FooterEmailSignup/render.d.ts +2 -0
  909. package/dist/render/lib/puck/blocks/service/FooterEmailSignup/render.js +1 -0
  910. package/dist/render/lib/puck/blocks/service/FooterGroup/render.d.ts +8 -0
  911. package/dist/render/lib/puck/blocks/service/FooterGroup/render.js +1 -0
  912. package/dist/render/lib/puck/blocks/service/FooterLogo/render.d.ts +2 -0
  913. package/dist/render/lib/puck/blocks/service/FooterLogo/render.js +1 -0
  914. package/dist/render/lib/puck/blocks/service/FooterMenu/render.d.ts +2 -0
  915. package/dist/render/lib/puck/blocks/service/FooterMenu/render.js +1 -0
  916. package/dist/render/lib/puck/blocks/service/FooterSocial/render.d.ts +2 -0
  917. package/dist/render/lib/puck/blocks/service/FooterSocial/render.js +1 -0
  918. package/dist/render/lib/puck/blocks/service/FooterText/render.d.ts +2 -0
  919. package/dist/render/lib/puck/blocks/service/FooterText/render.js +1 -0
  920. package/dist/render/lib/puck/blocks/service/Form/render.d.ts +2 -0
  921. package/dist/render/lib/puck/blocks/service/Form/render.js +1 -0
  922. package/dist/render/lib/puck/blocks/service/LegalLineBlock/render.d.ts +2 -0
  923. package/dist/render/lib/puck/blocks/service/LegalLineBlock/render.js +1 -0
  924. package/dist/render/lib/puck/blocks/service/ReviewForm/render.d.ts +6 -0
  925. package/dist/render/lib/puck/blocks/service/ReviewForm/render.js +1 -0
  926. package/dist/render/lib/puck/blocks/service/Reviews/render.d.ts +6 -0
  927. package/dist/render/lib/puck/blocks/service/Reviews/render.js +1 -0
  928. package/dist/render/lib/puck/blocks/service/SiteFooter/render.d.ts +7 -0
  929. package/dist/render/lib/puck/blocks/service/SiteFooter/render.js +1 -0
  930. package/dist/render/lib/puck/blocks/service/SiteHeader/render.d.ts +7 -0
  931. package/dist/render/lib/puck/blocks/service/SiteHeader/render.js +1 -0
  932. package/dist/render/lib/puck/blocks/service/SubmitBox/render.d.ts +2 -0
  933. package/dist/render/lib/puck/blocks/service/SubmitBox/render.js +1 -0
  934. package/dist/render/lib/puck/blocks/service/SubmitBuild/render.d.ts +8 -0
  935. package/dist/render/lib/puck/blocks/service/SubmitBuild/render.js +1 -0
  936. package/dist/render/lib/puck/blocks/service/Subscribe/render.d.ts +2 -0
  937. package/dist/render/lib/puck/blocks/service/Subscribe/render.js +1 -0
  938. package/dist/render/lib/puck/blocks/service/SubscribeBlogs/render.d.ts +17 -0
  939. package/dist/render/lib/puck/blocks/service/SubscribeBlogs/render.js +1 -0
  940. package/dist/render/lib/puck/blocks/service/renders.d.ts +26 -0
  941. package/dist/render/lib/puck/blocks/service/renders.js +1 -0
  942. package/dist/render/lib/puck/blocks/service/subscribe.d.ts +33 -0
  943. package/dist/render/lib/puck/blocks/service/subscribe.js +1 -0
  944. package/dist/render/lib/puck/blocks/text-part-shapes.json +1649 -0
  945. package/dist/render/lib/puck/current-product.d.ts +19 -0
  946. package/dist/render/lib/puck/current-product.js +1 -0
  947. package/dist/render/lib/puck/current-record.d.ts +44 -0
  948. package/dist/render/lib/puck/current-record.js +1 -0
  949. package/dist/render/lib/puck/fitment-table-dynamic.d.ts +4 -0
  950. package/dist/render/lib/puck/fitment-table-dynamic.js +1 -0
  951. package/dist/render/lib/puck/footer-page-blocks.d.ts +7 -0
  952. package/dist/render/lib/puck/footer-page-blocks.js +1 -0
  953. package/dist/render/lib/puck/preview-pick.d.ts +7 -0
  954. package/dist/render/lib/puck/preview-pick.js +1 -0
  955. package/dist/render/lib/puck/preview-product.d.ts +6 -0
  956. package/dist/render/lib/puck/preview-product.js +1 -0
  957. package/dist/render/lib/puck/render-client.d.ts +5 -0
  958. package/dist/render/lib/puck/render-client.js +1 -0
  959. package/dist/render/lib/puck/render-config.d.ts +4 -0
  960. package/dist/render/lib/puck/render-config.js +1 -0
  961. package/dist/render/lib/puck/slot-seeds.d.ts +3 -0
  962. package/dist/render/lib/puck/slot-seeds.js +1 -0
  963. package/dist/render/lib/puck/storefront-root.d.ts +18 -0
  964. package/dist/render/lib/puck/storefront-root.js +1 -0
  965. package/dist/render/lib/puck/subscribe-content-type.d.ts +10 -0
  966. package/dist/render/lib/puck/subscribe-content-type.js +1 -0
  967. package/dist/render/lib/puck/template-product-kind.d.ts +7 -0
  968. package/dist/render/lib/puck/template-product-kind.js +1 -0
  969. package/dist/render/lib/sections/card-image-sizes.d.ts +12 -0
  970. package/dist/render/lib/sections/card-image-sizes.js +1 -0
  971. package/dist/render/lib/sections/card-show-defaults.d.ts +10 -0
  972. package/dist/render/lib/sections/card-show-defaults.js +1 -0
  973. package/dist/render/lib/sections/catalog-filter-layout.d.ts +7 -0
  974. package/dist/render/lib/sections/catalog-filter-layout.js +1 -0
  975. package/dist/render/lib/sections/fill-row.d.ts +16 -0
  976. package/dist/render/lib/sections/fill-row.js +1 -0
  977. package/dist/render/lib/sections/hero-arrangement.d.ts +11 -0
  978. package/dist/render/lib/sections/hero-arrangement.js +1 -0
  979. package/dist/render/lib/sections/hero-gallery.d.ts +14 -0
  980. package/dist/render/lib/sections/hero-gallery.js +1 -0
  981. package/dist/render/lib/sections/hero-price-placement.d.ts +7 -0
  982. package/dist/render/lib/sections/hero-price-placement.js +1 -0
  983. package/dist/render/lib/select-keys.d.ts +18 -0
  984. package/dist/render/lib/select-keys.js +1 -0
  985. package/dist/render/lib/site-headers.d.ts +3 -0
  986. package/dist/render/lib/site-headers.js +1 -0
  987. package/dist/render/lib/storefront-page-groups.d.ts +16 -0
  988. package/dist/render/lib/storefront-page-groups.js +1 -0
  989. package/dist/render/lib/storefront-page-order.d.ts +3 -0
  990. package/dist/render/lib/storefront-page-order.js +1 -0
  991. package/dist/render/lib/submit/text-kinds.d.ts +11 -0
  992. package/dist/render/lib/submit/text-kinds.js +1 -0
  993. package/dist/render/lib/tyres/eu-tyre-label.d.ts +29 -0
  994. package/dist/render/lib/tyres/eu-tyre-label.js +1 -0
  995. package/dist/render/lib/tyres/placeholder-tyre.d.ts +2 -0
  996. package/dist/render/lib/tyres/placeholder-tyre.js +1 -0
  997. package/dist/render/lib/tyres/spec-sheet.d.ts +12 -0
  998. package/dist/render/lib/tyres/spec-sheet.js +1 -0
  999. package/dist/render/lib/tyres/tyre-brand-name.d.ts +2 -0
  1000. package/dist/render/lib/tyres/tyre-brand-name.js +1 -0
  1001. package/dist/render/lib/tyres/tyre-fit-copy.d.ts +3 -0
  1002. package/dist/render/lib/tyres/tyre-fit-copy.js +1 -0
  1003. package/dist/render/lib/tyres/tyre-page-path.d.ts +2 -0
  1004. package/dist/render/lib/tyres/tyre-page-path.js +1 -0
  1005. package/dist/render/lib/tyres/tyre-purchase.d.ts +12 -0
  1006. package/dist/render/lib/tyres/tyre-purchase.js +1 -0
  1007. package/dist/render/lib/tyres/tyre-size-fit.d.ts +12 -0
  1008. package/dist/render/lib/tyres/tyre-size-fit.js +1 -0
  1009. package/dist/render/lib/tyres/tyre-size.d.ts +11 -0
  1010. package/dist/render/lib/tyres/tyre-size.js +1 -0
  1011. package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +17 -0
  1012. package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -0
  1013. package/dist/render/lib/uuid.d.ts +1 -0
  1014. package/dist/render/lib/uuid.js +1 -0
  1015. package/dist/render/lib/wheels/applied-vehicle.d.ts +1 -0
  1016. package/dist/render/lib/wheels/applied-vehicle.js +1 -0
  1017. package/dist/render/lib/wheels/catalog-default-layout.d.ts +14 -0
  1018. package/dist/render/lib/wheels/catalog-default-layout.js +1 -0
  1019. package/dist/render/lib/wheels/catalog-filters-to-listing.d.ts +9 -0
  1020. package/dist/render/lib/wheels/catalog-filters-to-listing.js +1 -0
  1021. package/dist/render/lib/wheels/catalog-filters.d.ts +19 -0
  1022. package/dist/render/lib/wheels/catalog-filters.js +1 -0
  1023. package/dist/render/lib/wheels/collections.d.ts +22 -0
  1024. package/dist/render/lib/wheels/collections.js +1 -0
  1025. package/dist/render/lib/wheels/cover-rendering.d.ts +23 -0
  1026. package/dist/render/lib/wheels/cover-rendering.js +1 -0
  1027. package/dist/render/lib/wheels/detail-shots.d.ts +10 -0
  1028. package/dist/render/lib/wheels/detail-shots.js +1 -0
  1029. package/dist/render/lib/wheels/finish-colour-match.d.ts +4 -0
  1030. package/dist/render/lib/wheels/finish-colour-match.js +1 -0
  1031. package/dist/render/lib/wheels/finish-defaults.d.ts +16 -0
  1032. package/dist/render/lib/wheels/finish-defaults.js +1 -0
  1033. package/dist/render/lib/wheels/finish-photos.d.ts +2 -0
  1034. package/dist/render/lib/wheels/finish-photos.js +1 -0
  1035. package/dist/render/lib/wheels/fitment-columns.d.ts +9 -0
  1036. package/dist/render/lib/wheels/fitment-columns.js +1 -0
  1037. package/dist/render/lib/wheels/fitment-options.d.ts +18 -0
  1038. package/dist/render/lib/wheels/fitment-options.js +1 -0
  1039. package/dist/render/lib/wheels/fitment-row-fit.d.ts +17 -0
  1040. package/dist/render/lib/wheels/fitment-row-fit.js +1 -0
  1041. package/dist/render/lib/wheels/fitments.d.ts +13 -0
  1042. package/dist/render/lib/wheels/fitments.js +1 -0
  1043. package/dist/render/lib/wheels/grid-source.d.ts +12 -0
  1044. package/dist/render/lib/wheels/grid-source.js +1 -0
  1045. package/dist/render/lib/wheels/listable-wheels.d.ts +3 -0
  1046. package/dist/render/lib/wheels/listable-wheels.js +1 -0
  1047. package/dist/render/lib/wheels/lug-count.d.ts +10 -0
  1048. package/dist/render/lib/wheels/lug-count.js +1 -0
  1049. package/dist/render/lib/wheels/pdp-fit-verdict.d.ts +27 -0
  1050. package/dist/render/lib/wheels/pdp-fit-verdict.js +1 -0
  1051. package/dist/render/lib/wheels/picker-goes-to-the-shop.d.ts +10 -0
  1052. package/dist/render/lib/wheels/picker-goes-to-the-shop.js +1 -0
  1053. package/dist/render/lib/wheels/placeholder-wheel.d.ts +3 -0
  1054. package/dist/render/lib/wheels/placeholder-wheel.js +1 -0
  1055. package/dist/render/lib/wheels/plp-filters.d.ts +100 -0
  1056. package/dist/render/lib/wheels/plp-filters.js +1 -0
  1057. package/dist/render/lib/wheels/plp-fitment-match.d.ts +61 -0
  1058. package/dist/render/lib/wheels/plp-fitment-match.js +1 -0
  1059. package/dist/render/lib/wheels/plp-grid.d.ts +18 -0
  1060. package/dist/render/lib/wheels/plp-grid.js +1 -0
  1061. package/dist/render/lib/wheels/plp-hydrate.d.ts +21 -0
  1062. package/dist/render/lib/wheels/plp-hydrate.js +1 -0
  1063. package/dist/render/lib/wheels/plp-vehicle-params.d.ts +10 -0
  1064. package/dist/render/lib/wheels/plp-vehicle-params.js +1 -0
  1065. package/dist/render/lib/wheels/pre-order-intent.d.ts +3 -0
  1066. package/dist/render/lib/wheels/pre-order-intent.js +1 -0
  1067. package/dist/render/lib/wheels/pre-order.d.ts +7 -0
  1068. package/dist/render/lib/wheels/pre-order.js +1 -0
  1069. package/dist/render/lib/wheels/price-display.d.ts +47 -0
  1070. package/dist/render/lib/wheels/price-display.js +1 -0
  1071. package/dist/render/lib/wheels/render-fit.d.ts +3 -0
  1072. package/dist/render/lib/wheels/render-fit.js +1 -0
  1073. package/dist/render/lib/wheels/renderable-finishes.d.ts +6 -0
  1074. package/dist/render/lib/wheels/renderable-finishes.js +1 -0
  1075. package/dist/render/lib/wheels/selected-studs.d.ts +9 -0
  1076. package/dist/render/lib/wheels/selected-studs.js +1 -0
  1077. package/dist/render/lib/wheels/set-mode.d.ts +34 -0
  1078. package/dist/render/lib/wheels/set-mode.js +1 -0
  1079. package/dist/render/lib/wheels/size-range.d.ts +10 -0
  1080. package/dist/render/lib/wheels/size-range.js +1 -0
  1081. package/dist/render/lib/wheels/spec-format.d.ts +7 -0
  1082. package/dist/render/lib/wheels/spec-format.js +1 -0
  1083. package/dist/render/lib/wheels/spec-sheet.d.ts +58 -0
  1084. package/dist/render/lib/wheels/spec-sheet.js +1 -0
  1085. package/dist/render/lib/wheels/tyre-render.d.ts +34 -0
  1086. package/dist/render/lib/wheels/tyre-render.js +1 -0
  1087. package/dist/render/lib/wheels/variant-spec.d.ts +9 -0
  1088. package/dist/render/lib/wheels/variant-spec.js +1 -0
  1089. package/dist/render/lib/wheels/variants.d.ts +8 -0
  1090. package/dist/render/lib/wheels/variants.js +1 -0
  1091. package/dist/render/lib/wheels/vehicle-field-focus.d.ts +7 -0
  1092. package/dist/render/lib/wheels/vehicle-field-focus.js +1 -0
  1093. package/dist/render/lib/wheels/vehicle-memory.d.ts +25 -0
  1094. package/dist/render/lib/wheels/vehicle-memory.js +1 -0
  1095. package/dist/render/lib/wheels/wheel-name.d.ts +4 -0
  1096. package/dist/render/lib/wheels/wheel-name.js +1 -0
  1097. package/dist/render/lib/wheels/wheel-specs.d.ts +14 -0
  1098. package/dist/render/lib/wheels/wheel-specs.js +1 -0
  1099. package/dist/render/lib/wheels/wheel-summary-casing.d.ts +4 -0
  1100. package/dist/render/lib/wheels/wheel-summary-casing.js +1 -0
  1101. package/dist/render/lib/wheels/wheels.d.ts +38 -0
  1102. package/dist/render/lib/wheels/wheels.js +1 -0
  1103. package/dist/render/mocks/fitment-snapshot.json +3911 -0
  1104. package/dist/render/mocks/gallery-builds.json +213 -0
  1105. package/dist/words.d.ts +68 -7
  1106. package/dist/words.js +5 -5
  1107. package/package.json +37 -5
  1108. package/dist/chunks/chunk-BDITPYS5.js +0 -1
  1109. package/dist/chunks/chunk-EHKAKDFN.js +0 -255
  1110. /package/dist/chunks/{chunk-4NM2MDGN.js → chunk-76HTJBKU.js} +0 -0
  1111. /package/dist/chunks/{chunk-EHKAKDFN.js.LEGAL.txt → chunk-PHH7L5FJ.js.LEGAL.txt} +0 -0
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ value?: string;
3
+ onChange: (value: string) => void;
4
+ }
5
+ export default function FinishPicker({ value, onChange }: Props): import("react").JSX.Element;
6
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as s,jsxs as m}from"react/jsx-runtime";import{useEasel as p}from"efficient-easel/easel";import{SettingsField as f}from"efficient-easel/panel";import{FieldSelect as u}from"efficient-easel/fields";import{FinishIcon as g}from"efficient-easel/icons";import{isRenderableFinish as b}from"../../render/lib/wheels/renderable-finishes.js";import{useProductCatalog as F}from"../../render/components/useProductCatalog.js";import{say as n}from"efficient-web-builder/format/lib/editor-words";function v({value:t,onChange:l}){const a=F(),{selectedItem:c}=p(e=>e),r=c?.props?.code??"",o=a===null,i=(a??[]).find(e=>e.slug===r)?.finishes??[],h=i.filter(b).map(e=>e.name),d=h.includes(t??"")?t:"";return m("div",{children:[s(f,{label:n("Finish"),icon:s(g,{}),hint:n("Pinning one overrides the section’s Cover image."),children:s(u,{value:d,ariaLabel:n("Finish"),onChange:l,readOnly:o||i.length===0,options:[{label:o?n("Loading…"):i.length===0?n("No finishes on this product"):n("Default (the product's default finish)"),value:""},...i.map(e=>({label:e.src?e.name:n("{name} — no image",{name:e.name}),value:e.name,disabled:!e.src}))]})}),!o&&i.length===0&&r&&s("p",{className:"es-field-hint sf-hint-keep",children:n("This product has no finishes yet, so its card falls back to the product image — or an empty placeholder when it has none. Add finishes to the product record, then give each one an image.")}),!o&&i.length>0&&h.length===0&&s("p",{className:"es-field-hint sf-hint-keep",children:n("None of this product’s finishes has an image, so none can be shown on the card. Add an image to a finish on the product record to pick it here.")})]})}export{v as default};
@@ -0,0 +1,6 @@
1
+ import { type FooterColumns } from "efficient-web-builder/format/lib/content/footer";
2
+ export interface FooterColumnsFieldProps {
3
+ value?: number | FooterColumns;
4
+ onChange: (value: FooterColumns) => void;
5
+ }
6
+ export default function FooterColumnsField({ value, onChange }: FooterColumnsFieldProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import t from"./PerViewStepperField.js";import{say as l}from"efficient-web-builder/format/lib/editor-words";import{FOOTER_COLUMN_STEPS as m,normalizeFooterColumns as n}from"efficient-web-builder/format/lib/content/footer";function i({value:e,onChange:o}){return r(t,{label:"Columns per line",unit:l("columns"),steps:m,value:n(e),onChange:o})}export{i as default};
@@ -0,0 +1,6 @@
1
+ import { type LogoFill } from "efficient-web-builder/format/lib/content/footer";
2
+ export interface FooterLogoFillFieldProps {
3
+ value?: LogoFill;
4
+ onChange: (value: LogoFill) => void;
5
+ }
6
+ export default function FooterLogoFillField({ value, onChange }: FooterLogoFillFieldProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as o,Fragment as c}from"react/jsx-runtime";import{SettingsField as a,SettingsSwitch as f}from"efficient-easel/panel";import{BlockColumnIcon as h}from"efficient-easel/icons";import{usePreviewDevice as p}from"efficient-easel/screen/components/PreviewDeviceContext";import{LOGO_FILL_DEFAULT as L}from"efficient-web-builder/format/lib/content/footer";import{VIEW_TIER_LABEL as r}from"efficient-easel/screen/lib/content/view-tiers";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{sayWith as g}from"../lib/say-with.js";function v({value:n,onChange:s}){const e=p(),t={...L,...n},l=t[e];return o(a,{label:i("Logo fills its column"),icon:o(h,{}),action:o(f,{checked:l,onChange:m=>s({...t,[e]:m}),ariaLabel:i("Logo fills its column on {view}",{view:i(r[e])})}),hint:o(c,{children:g(i("Sets the {view} view — switch views in the top bar to set each one."),{view:o("strong",{children:i(r[e])})})})})}export{v as default};
@@ -0,0 +1,6 @@
1
+ import { type LogoFill } from "efficient-web-builder/format/lib/content/footer";
2
+ export interface FooterLogoRowFillFieldProps {
3
+ value?: LogoFill;
4
+ onChange: (value: LogoFill) => void;
5
+ }
6
+ export default function FooterLogoRowFillField({ value, onChange }: FooterLogoRowFillFieldProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as o,Fragment as c}from"react/jsx-runtime";import{SettingsField as a,SettingsSwitch as f}from"efficient-easel/panel";import{FullWidthIcon as h}from"efficient-easel/icons";import{usePreviewDevice as w}from"efficient-easel/screen/components/PreviewDeviceContext";import{LOGO_ROW_FILL_DEFAULT as p}from"efficient-web-builder/format/lib/content/footer";import{VIEW_TIER_LABEL as r}from"efficient-easel/screen/lib/content/view-tiers";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{sayWith as L}from"../lib/say-with.js";function g({value:n,onChange:s}){const e=w(),t={...p,...n},l=t[e];return o(a,{label:i("Logo fills its row"),icon:o(h,{}),action:o(f,{checked:l,onChange:m=>s({...t,[e]:m}),ariaLabel:i("Logo fills its row on {view}",{view:i(r[e])})}),hint:o(c,{children:L(i("Sets the {view} view — switch views in the top bar to set each one."),{view:o("strong",{children:i(r[e])})})})})}export{g as default};
@@ -0,0 +1,33 @@
1
+ import type { AdminStorefrontForm } from "../../render/lib/api/index.js";
2
+ export declare const CREATE_SENTINEL = "__create-a-new-form__";
3
+ export interface FormPickerOption {
4
+ value: string;
5
+ label: string;
6
+ }
7
+ export interface FormPickerState {
8
+ value?: string;
9
+ forms: AdminStorefrontForm[] | null;
10
+ loadFailed: boolean;
11
+ emptyLabel?: string;
12
+ }
13
+ export declare function formPickerOptions({ value, forms, loadFailed, emptyLabel, }: FormPickerState): FormPickerOption[];
14
+ export declare function resolveFormPick(picked: string): {
15
+ action: "create";
16
+ } | {
17
+ action: "store";
18
+ slug: string;
19
+ };
20
+ export declare function followRenamedForm({ value, pickedId, forms, }: {
21
+ value?: string;
22
+ pickedId: string | null;
23
+ forms: AdminStorefrontForm[];
24
+ }): string | null;
25
+ export declare function formDestinationLines(form: AdminStorefrontForm): string[];
26
+ interface Props {
27
+ value?: string;
28
+ onChange: (value: string) => void;
29
+ label?: string;
30
+ emptyLabel?: string;
31
+ }
32
+ export default function FormPicker({ value, onChange, label, emptyLabel }: Props): import("react").JSX.Element;
33
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useContext as D,useEffect as R,useRef as N,useState as w}from"react";import{Button as v}from"efficient-shell/ui";import q from"efficient-web-builder/editor/components/SearchSelectField";import{ScreenDocumentContext as A}from"efficient-easel/screen/components/ScreenDocumentContext";import{loadStorefrontForms as H}from"./useStorefrontForms.js";import{onStorefrontFormsChanged as I}from"efficient-web-builder/format/lib/editor-events";import{openFormBuilder as J,requestFormEdit as G}from"efficient-web-builder/format/lib/editor-form-window";import{useEaselHost as O}from"efficient-easel/screen/lib/host";import{say as s,sayCount as W}from"efficient-web-builder/format/lib/editor-words";const P="__create-a-new-form__";function K({value:e,forms:o,loadFailed:i,emptyLabel:m}){const d=o??[],b=e?d.some(r=>r.slug===e):!0,f=o===null&&!i,g={value:"",label:f?s("Loading…"):i?s("Forms couldn’t be loaded"):m===void 0?s("No form yet"):s(m)},_=e&&!b?[{value:e,label:f||i?e:s("{slug} — no form with this name",{slug:e})}]:[],u=d.map(r=>({value:r.slug,label:r.is_active?r.title:s("{title} (switched off)",{title:r.title})})),k=f?[]:[{value:P,label:s("Create a new form")}];return[g,..._,...u,...k]}function M(e){return e===P?{action:"create"}:{action:"store",slug:e}}function Q({value:e,pickedId:o,forms:i}){if(!e||!o||i.some(d=>d.slug===e))return null;const m=i.find(d=>d.id===o);return m&&m.slug&&m.slug!==e?m.slug:null}function U(e){const o=[s("Goes to {place}",{place:s("Storefront → Forms")})],i=(e.notify_email??"").trim();return i&&o.push(s("Emails a copy to {email}",{email:i})),e.mailing_list_name&&o.push(e.subscribe_mode==="checkbox"?s("Joins the “{audience}” audience, but only when the consent box is ticked",{audience:e.mailing_list_name}):s("Joins the “{audience}” audience",{audience:e.mailing_list_name})),e.kind==="account_signup"&&o.push(e.signup_customer_type==="importer"?s("Creates a wholesale account"):s("Creates a retail account")),o}function V({value:e,onChange:o,label:i="Form",emptyLabel:m}){const d=O(),b=D(A),f=b?b.capabilities.hasForms:!0,[g,_]=w(null),[u,k]=w(!1),[r,E]=w(!1),[j,F]=w(!1),h=N(!0),x=N(e);x.current=e;const C=N(o);C.current=o;const S=N(null),y=(n=!1)=>H(n).then(c=>{if(h.current){_(c),k(!1);const p=Q({value:x.current,pickedId:S.current,forms:c});p&&C.current(p)}return c},()=>(h.current&&k(!0),[]));R(()=>(h.current=!0,f&&y(),()=>{h.current=!1}),[f]),R(()=>f?I(()=>{y(!0)}):void 0,[f]);const a=e?(g??[]).find(n=>n.slug===e)??null:null;a?S.current=a.id:e||(S.current=null);const z=!!e&&!a&&g!==null&&!u,L=K({value:e,forms:g,loadFailed:u,emptyLabel:m}),T=async()=>{E(!0),F(!1);try{const n=await G(d,{mode:"create"}),c=await y(!0);if(!h.current)return;if(n.status==="timeout"){F(!0);return}if(n.status!=="saved")return;const{form:p}=n;p.slug!==x.current&&C.current(p.slug),c.some(B=>B.id===p.id)||y(!0)}finally{h.current&&E(!1)}},$=n=>{const c=M(n);c.action==="create"?T():(F(!1),o(c.slug))};return f?l("div",{className:"sf-formpicker",children:[t(q,{label:i,options:L,fallback:"",value:e??"",onChange:$,placeholder:s("Search forms…")}),j&&t("p",{className:"sf-formsummary-warn",children:s("That didn’t come back — pick the form from the list, or try again.")}),a?l("div",{className:"sf-blogsource sf-formsummary",children:[l("div",{children:[t("div",{className:"sf-formsummary-caption",children:W("{n} field","{n} fields",a.fields.length)}),a.fields.length?t("ol",{className:"sf-formsummary-fields",children:a.fields.map((n,c)=>t("li",{children:n.label},n.key||`${n.label}-${c}`))}):t("p",{className:"es-field-hint sf-hint-keep",children:s("This form has no fields yet, so there is nothing for a visitor to fill in.")})]}),l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s("Where the answers go")}),t("ul",{className:"sf-formsummary-fields",children:U(a).map(n=>t("li",{children:n},n))})]}),!a.is_active&&t("p",{className:"sf-formsummary-warn",children:s("This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.",{place:s("Storefront → Forms")})}),l("div",{className:"sf-formsummary-actions",children:[t(v,{variant:"secondary",size:"sm",onClick:()=>J(d,a.id),children:s("Edit form ✎")}),t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),t("p",{className:"es-field-hint sf-hint-keep",children:s("The questions, the button text and the thank-you message all come from {place}. Edit them there — this section updates to match.",{place:s("Storefront → Forms")})})]}):l("div",{className:"sf-blogsource sf-formsummary",children:[u?l("p",{className:"es-field-hint sf-hint-keep",children:[s("This website’s forms couldn’t be loaded, so there is nothing to choose from yet."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]}):z&&t("p",{className:"sf-formsummary-warn",children:s("This section points at “{slug}”, and this website has no form with that name. Pick one from the list above, or leave it — nothing has been changed.",{slug:e??""})}),l("div",{className:"sf-formsummary-actions",children:[u&&t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{y(!0)},children:s("Try again")}),t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),!u&&t("p",{className:"es-field-hint sf-hint-keep",children:s("Pick a form to show here, or build a new one. Forms are made once in {place} and can be shown on any number of pages.",{place:s("Storefront → Forms")})})]})]}):t("div",{className:"sf-formpicker",children:t("div",{className:"sf-blogsource sf-formsummary",children:l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s(i)}),l("p",{className:"es-field-hint sf-hint-keep",children:[s("Forms aren’t available in this editor, so there is nothing to choose here."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]})]})})})}export{P as CREATE_SENTINEL,V as default,Q as followRenamedForm,U as formDestinationLines,K as formPickerOptions,M as resolveFormPick};
@@ -0,0 +1,7 @@
1
+ import type { GalleryProductValue } from "../../render/lib/content/source-values.js";
2
+ interface Props {
3
+ value?: GalleryProductValue;
4
+ onChange: (value: GalleryProductValue) => void;
5
+ }
6
+ export default function GalleryProductBinding({ value, onChange }: Props): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as r,jsxs as u,Fragment as w}from"react/jsx-runtime";import{useEffect as F,useMemo as N,useState as S}from"react";import{IconButton as z,Tooltip as O}from"efficient-shell/ui";import{SettingsField as P}from"efficient-easel/panel";import{FieldSelect as y}from"efficient-easel/fields";import{BlockProductIcon as H,MediaIcon as W}from"efficient-easel/icons";import{loadProductCatalog as M}from"../../render/components/useProductCatalog.js";import{loadWheelMediaGroups as T}from"./useWheelMediaGroups.js";import C from"efficient-easel/screen/components/UiIcon";import{say as n}from"efficient-web-builder/format/lib/editor-words";function v({label:o,hidden:s,onToggle:i}){return u("div",{className:"sf-field-head",children:[r("span",{className:"sf-field-label sf-field-label--inline",children:o}),i&&r(O,{content:s?n("Show on the card"):n("Hide on the card"),children:r(z,{size:"sm","aria-pressed":!!s,"aria-label":s?n("Show on the card"):n("Hide on the card"),onClick:i,children:s?r(C,{name:"eye-off",size:14}):r(C,{name:"eye",size:14})})})]})}const j=[["photos","Photos"],["lifestyle","Lifestyle"],["accessories","Accessories"],["others","Others"],["videos","Videos"]];function $(o){switch(o){case"photos":return n("Photos");case"lifestyle":return n("Lifestyle");case"accessories":return n("Accessories");case"others":return n("Others");case"videos":return n("Videos");default:return String(o)}}function G(o){if(!o)return[];const s=[];for(const[i,a]of j)(o[i]??[]).forEach((l,h)=>{const d=(l.items??[]).filter(t=>t.kind==="image").map(t=>t.url);d.length!==0&&s.push({key:`${String(i)}:${h}`,label:l.name?`${$(i)} · ${l.name}`:$(i),name:l.name||a,images:d})});return s}function E(o){return o?o.categories&&o.categories.length?o.categories:o.process?[o.process]:[]:[]}function k(o,s,i){const a=s?.find(c=>c.slug===o.code)??null;if(!a)return{name:void 0,href:void 0,cover:void 0,photos:[],eyebrow:void 0};const l=o.group?i.find(c=>c.name===o.group):void 0,h=o.finish?a.finishes.find(c=>c.name===o.finish&&c.src):void 0;let d,t=[];return l&&l.images.length?(d=l.images[0],t=l.images.slice(1)):(d=h?.src||a.coverImage||void 0,t=[]),{name:a.name,href:`/wheels/${a.slug}`,cover:d,photos:t,eyebrow:o.group||void 0}}function B({value:o,onChange:s}){const i=N(()=>o??{},[o]),[a,l]=S(null),[h,d]=S([]),[t,c]=S(!1);F(()=>{let e=!1;return M().then(f=>{e||l(f)}),()=>{e=!0}},[]),F(()=>{let e=!1;if(!i.code){d([]);return}return c(!0),T(i.code).then(f=>{e||(d(G(f)),c(!1))}),()=>{e=!0}},[i.code]);const m=N(()=>a?.find(e=>e.slug===i.code)??null,[a,i.code]),x=N(()=>E(m),[m]),L=a===null;function g(e,f=h){const b={...i,...e};s({...b,...k(b,a,f)})}function I(e){if(!e){s({});return}const f=a?.find(b=>b.slug===e)??null;g({code:e,category:E(f)[0]??"",finish:"",group:""},[])}function p(e){s({...i,[e]:!i[e]})}return u("div",{children:[r(P,{label:n("Product"),icon:r(H,{}),children:r(y,{value:i.code??"",ariaLabel:n("Product"),readOnly:L,onChange:I,options:[{label:L?n("Loading…"):n("Select a product…"),value:""},...(a??[]).map(e=>({label:e.name,value:e.slug}))]})}),i.code&&u(w,{children:[u("div",{className:`sf-field${i.hideName?" is-hidden":""}`,children:[r(v,{label:n("Title / product"),hidden:i.hideName,onToggle:()=>p("hideName")}),u("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:[m?.name??i.name??"—",r("span",{style:{opacity:.6},children:n("(auto)")})]})]}),u("div",{className:`sf-field${i.hideProcess?" is-hidden":""}`,children:[r(v,{label:n("Category"),hidden:i.hideProcess,onToggle:()=>p("hideProcess")}),r(y,{value:i.category??"",ariaLabel:n("Category"),readOnly:x.length===0,onChange:e=>g({category:e}),options:x.length===0?[{label:n("No categories on this product"),value:""}]:x.map(e=>({label:e,value:e}))})]}),r(P,{label:n("Media group"),icon:r(W,{}),hint:n("Its name fills the Eyebrow below, and its photos become the card cover and lightbox. No group → the product’s cover image."),children:r(y,{value:i.group??"",ariaLabel:n("Media group"),readOnly:t,onChange:e=>g({group:e}),options:[{label:t?n("Loading…"):h.length===0?n("Cover image only (no media groups)"):n("Cover image only"),value:""},...h.map(e=>({label:e.label,value:e.name}))]})}),u("div",{className:`sf-field${i.hideEyebrow?" is-hidden":""}`,children:[r(v,{label:u(w,{children:[n("Eyebrow")," ",r("span",{style:{fontWeight:400,opacity:.6},children:n("(from media group)")})]}),hidden:i.hideEyebrow,onToggle:()=>p("hideEyebrow")}),r("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:i.group||"—"})]}),u("div",{className:`sf-field${i.hideFinish?" is-hidden":""}`,children:[r(v,{label:n("Finish"),hidden:i.hideFinish,onToggle:()=>p("hideFinish")}),r(y,{value:i.finish??"",ariaLabel:n("Finish"),onChange:e=>g({finish:e}),options:[{label:n("Default (the product’s default finish)"),value:""},...(m?.finishes??[]).map(e=>({label:e.src?e.name:n("{name} — no render",{name:e.name}),value:e.name,disabled:!e.src}))]})]})]})]})}export{B as default};
@@ -0,0 +1,7 @@
1
+ import type { GalleryShowcaseSourceValue } from "../../render/lib/content/source-values.js";
2
+ interface Props {
3
+ value?: GalleryShowcaseSourceValue | null;
4
+ onChange: (value: GalleryShowcaseSourceValue | null) => void;
5
+ }
6
+ export default function GalleryShowcaseSource({ value, onChange }: Props): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as d,jsxs as U}from"react/jsx-runtime";import{SettingsField as N}from"efficient-easel/panel";import{FieldSelect as H}from"efficient-easel/fields";import{BlockProductIcon as V,CategoryIcon as X}from"efficient-easel/icons";import{useEffect as G,useMemo as Y,useRef as w,useState as P}from"react";import{storefrontAdmin as Z}from"../../render/lib/api/index.js";import{useEaselHost as v}from"efficient-easel/screen/lib/host";import{getEditorToken as ee}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as te}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as I}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as re}from"./useStorefrontCategories.js";import{useCategoryFilter as se}from"./useCategoryFilter.js";import{snapshotChanged as oe}from"efficient-web-builder/editor/components/useSnapshotSource";import ne from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as T}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function ae(e,r){return r===a?e:e.filter(o=>o.process===r)}function h(e,r){return e.map(o=>({image:o.items[0]?.url,photos:o.items.map(s=>({src:s.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:o.name,name:r.name,meta:o.finish})).filter(o=>!!o.image)}function W(e){const r=ee();return r?Z.getWheelDetail(r,e,{siteId:te()}):Promise.reject(new Error("editor not authenticated"))}async function le(e){const r=await W(e),o={slug:r.slug,name:r.name,process:r.process},s=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...o,vehicleCards:h(s.lifestyle??[],o),wheelCards:h(s.photos??[],o),othersCards:h(s.others??[],o)}}async function ie(e,r){const o=await Promise.all(e.map(l=>W(l.slug).catch(()=>null))),s=[],p=[],g=[];for(const l of o){if(!l)continue;const c={slug:l.slug,name:l.name,process:l.process},m=l.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};s.push(...h(m.lifestyle??[],c)),p.push(...h(m.photos??[],c)),g.push(...h(m.others??[],c))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:s,wheelCards:p,othersCards:g,category:r}}function ce({value:e,onChange:r}){const o=v(),[s,p]=P(null),[g,l]=P(null),[c,m]=P(!1),[R,A]=P(!1),u=w(!0),y=w(e);y.current=e;const B=w(r);B.current=r;const F=(t,f=!1)=>{m(!0),f||A(!1),t().then(x=>{u.current&&(oe(x,y.current)&&B.current(x),A(!1))}).catch(()=>{u.current&&!f&&A(!0)}).finally(()=>{u.current&&m(!1)})},S=(t,f=!1)=>F(()=>le(t),f),C=(t,f=!1)=>F(()=>ie(ae(s??[],t),t),f);G(()=>(u.current=!0,I().then(t=>{u.current&&p(t)}),re().then(t=>{u.current&&l(t)}),()=>{u.current=!1}),[]);const b=w(!1);G(()=>{if(b.current)return;const t=y.current;if(!t?.slug){b.current=!0;return}if(t.slug===a){if(s===null)return;b.current=!0,C(t.category??a,!0)}else b.current=!0,S(t.slug,!0)},[s]);const i=e?.slug===a,k=Y(()=>s&&e?.slug&&!i?s.find(t=>t.slug===e.slug)??null:null,[s,e?.slug,i]),{category:O,setCategory:E,categoryNames:D,filtered:M}=se(s,g);G(()=>{i?e?.category&&E(e.category):k?.process&&E(k.process)},[k,i,e?.category]);const L=s===null,_=!!e?.slug&&!i&&s!==null&&!k,$=t=>{if(!t){r(null);return}if(t===a){C(O);return}S(t)},q=t=>{E(t),y.current?.slug===a&&C(t)},z=()=>{e?.slug&&(I(!0).then(t=>{u.current&&p(t)}),i?C(e.category??a):S(e.slug))},J=()=>{e?.slug&&o.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),K=R?"error":c?"loading":"idle",Q=R?n("Couldn’t reach the product catalog."):c?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):i?T("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):T("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return U("div",{children:[d(N,{label:n("Category"),icon:d(X,{}),children:d(H,{value:O,ariaLabel:n("Category"),onChange:q,readOnly:L,options:[{label:n("All products"),value:a},...D.map(t=>({label:t,value:t}))]})}),d(N,{label:n("Product"),icon:d(V,{}),children:d(H,{value:e?.slug??"",ariaLabel:n("Product"),onChange:$,readOnly:L||c,options:[{label:L?n("Loading…"):n("None (write the cards yourself)"),value:""},{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[],...M.map(t=>({label:t.name,value:t.slug}))]})}),e?.slug?d(ne,{status:K,statusText:Q,onRefresh:z,busy:c,edit:i?void 0:{label:n("Edit product ✎"),onClick:J},hint:i?n("Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."):n("Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: its name is the eyebrow, its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours.")}):d("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("Pick a product — or All products — to build the galleries from media groups, or keep “None” to author the cards yourself.")})]})}export{ce as default};
@@ -0,0 +1,3 @@
1
+ export default function HeaderSection({ editing }: {
2
+ editing?: boolean;
3
+ }): import("react").JSX.Element | null;
@@ -0,0 +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};
@@ -0,0 +1,132 @@
1
+ import { type AdminHeaderSettings } from "../../render/lib/api/index.js";
2
+ import type { ShowWhenRule } from "efficient-shell/ui";
3
+ export declare const OFF_PLACEHOLDER: ShowWhenRule;
4
+ export declare const HEADER_TABS_ID_PREFIX = "sf-header";
5
+ export declare const HEADER_TABS: {
6
+ id: string;
7
+ label: string;
8
+ icon?: React.ReactNode;
9
+ showWhen?: ShowWhenRule;
10
+ }[];
11
+ interface Props {
12
+ tokenRef: React.RefObject<string | null>;
13
+ siteId?: string | null;
14
+ onClose?: () => void;
15
+ onAuthExpired?: () => void;
16
+ inline?: boolean;
17
+ placeholderMode?: boolean;
18
+ websiteName?: string;
19
+ onOpenWebsiteSettings?: () => void;
20
+ }
21
+ export default function HeaderSettingsPanel({ tokenRef, siteId, onClose, onAuthExpired, inline, placeholderMode, websiteName, onOpenWebsiteSettings, }: Props): import("react").JSX.Element;
22
+ export declare function Field({ label, children, stacked, }: {
23
+ label: string;
24
+ children: React.ReactNode;
25
+ stacked?: boolean;
26
+ }): import("react").JSX.Element;
27
+ export declare const HEADER_SEGMENTED: {
28
+ readonly logoPosition: {
29
+ readonly label: "Position";
30
+ readonly options: readonly [{
31
+ readonly label: "Left";
32
+ readonly value: "left";
33
+ }, {
34
+ readonly label: "Center";
35
+ readonly value: "center";
36
+ }];
37
+ readonly choose: (stored: AdminHeaderSettings["logo_position"]) => "left" | "center";
38
+ };
39
+ readonly menuAlign: {
40
+ readonly label: "Alignment";
41
+ readonly options: readonly [{
42
+ readonly label: "Right";
43
+ readonly value: "left";
44
+ }, {
45
+ readonly label: "Centered";
46
+ readonly value: "center";
47
+ }, {
48
+ readonly label: "Beside logo";
49
+ readonly value: "beside";
50
+ }];
51
+ readonly choose: (stored: AdminHeaderSettings["menu_position"]) => "left" | "center" | "beside";
52
+ };
53
+ readonly menuRow: {
54
+ readonly label: "Row";
55
+ readonly options: readonly [{
56
+ readonly label: "Own row";
57
+ readonly value: "top";
58
+ }, {
59
+ readonly label: "Same row";
60
+ readonly value: "inline";
61
+ }];
62
+ readonly choose: (stored: AdminHeaderSettings["menu_row"]) => "top" | "inline";
63
+ };
64
+ readonly searchPosition: {
65
+ readonly label: "Position";
66
+ readonly options: readonly [{
67
+ readonly label: "Left";
68
+ readonly value: "left";
69
+ }, {
70
+ readonly label: "Right";
71
+ readonly value: "right";
72
+ }];
73
+ readonly choose: (stored: AdminHeaderSettings["search_position"]) => "left" | "right";
74
+ };
75
+ readonly width: {
76
+ readonly label: "Width";
77
+ readonly options: readonly [{
78
+ readonly label: string;
79
+ readonly value: "page";
80
+ }, {
81
+ readonly label: string;
82
+ readonly value: "full";
83
+ }];
84
+ readonly choose: (stored: AdminHeaderSettings["width"]) => "page" | "full";
85
+ };
86
+ readonly navTextCase: {
87
+ readonly label: "Letters";
88
+ readonly options: readonly [{
89
+ readonly label: "Uppercase";
90
+ readonly value: "uppercase";
91
+ }, {
92
+ readonly label: "Capitalised";
93
+ readonly value: "capitalised";
94
+ }];
95
+ readonly choose: (stored: AdminHeaderSettings["nav_text_case"]) => "uppercase" | "capitalised";
96
+ };
97
+ readonly utilStyle: {
98
+ readonly label: "Show as";
99
+ readonly options: readonly [{
100
+ readonly label: "Icon";
101
+ readonly value: "icon";
102
+ }, {
103
+ readonly label: "Text";
104
+ readonly value: "text";
105
+ }];
106
+ readonly choose: (stored: AdminHeaderSettings["util_style"]) => "text" | "icon";
107
+ };
108
+ readonly topTextColor: {
109
+ readonly label: "Text color at the top";
110
+ readonly options: readonly [{
111
+ readonly label: "Auto";
112
+ readonly value: "auto";
113
+ }, {
114
+ readonly label: "Light";
115
+ readonly value: "light";
116
+ }, {
117
+ readonly label: "Dark";
118
+ readonly value: "dark";
119
+ }];
120
+ readonly choose: (stored: AdminHeaderSettings["top_text_color"]) => "light" | "dark" | "auto";
121
+ };
122
+ };
123
+ export declare function HeaderTabStrip({ tabs, activeId, onSelect, }: {
124
+ tabs: readonly {
125
+ id: string;
126
+ label: string;
127
+ icon?: React.ReactNode;
128
+ }[];
129
+ activeId: string;
130
+ onSelect: (id: string) => void;
131
+ }): import("react").JSX.Element;
132
+ export {};
@@ -0,0 +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:"sm",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:"sm",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-shrink-0",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};
@@ -0,0 +1,5 @@
1
+ import { type MenuLinkRange } from "../../render/lib/content/menu-row.js";
2
+ export default function MenuLinkRangeField({ value, onChange, }: {
3
+ value?: unknown;
4
+ onChange: (value: MenuLinkRange | null) => void;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as o,jsxs as c}from"react/jsx-runtime";import{Inline as u,InputNumber as l}from"efficient-shell/ui";import{SettingsField as h}from"efficient-easel/panel";import{ListIcon as d}from"efficient-easel/icons";import{say as n}from"efficient-web-builder/format/lib/editor-words";import{resolveMenuLinkRange as m}from"../../render/lib/content/menu-row.js";function g({value:a,onChange:p}){const i=m(a),r=i?.from??1,s=i?.to??null,t=(e,f)=>p(m({from:e??1,to:f??void 0}));return o(h,{label:n("Show links"),icon:o(d,{}),changed:i!==null,hint:n("The links this menu shows on a computer. Empty To means to the end."),children:c(u,{gap:2,wrap:!1,children:[o(l,{size:"sm",prefix:n("From"),min:1,precision:0,value:r,"aria-label":n("Show links from"),onChange:e=>t(e,s)}),o(l,{size:"sm",prefix:n("To"),min:1,precision:0,placeholder:n("End"),value:s,"aria-label":n("Show links to"),onChange:e=>t(r,e)})]})})}export{g as default};
@@ -0,0 +1,7 @@
1
+ import type { FooterMenuValue } from "../../render/components/FooterMenu.js";
2
+ interface Props {
3
+ value?: FooterMenuValue | null;
4
+ onChange: (value: FooterMenuValue | null) => void;
5
+ }
6
+ export default function MenuPicker({ value, onChange }: Props): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as s,jsxs as x}from"react/jsx-runtime";import{Button as C}from"efficient-shell/ui";import{SettingsField as P}from"efficient-easel/panel";import{FieldSelect as R}from"efficient-easel/fields";import{MenuIcon as U}from"efficient-easel/icons";import{useCallback as B,useEffect as M,useState as c}from"react";import{say as i,sayCount as E}from"efficient-web-builder/format/lib/editor-words";import{getEditorToken as u}from"efficient-web-builder/render/lib/editor-auth";import{onHeaderMenusChanged as F}from"efficient-web-builder/format/lib/editor-events";import{findLinkedMenu as f,loadMenus as L,refreshMenus as I}from"../../render/lib/menu-source.js";import{menuPickerMissingWarning as T,menuPickerUnlinkedWarning as W}from"../../render/lib/content/menu-placeholder.js";function $({value:l,onChange:p}){const[t,h]=c(null),[w,y]=c(!1),a=B(e=>{h(e),y(!0)},[]);M(()=>{let e=!1;return L(u()).then(n=>{e||a(n)}).catch(()=>{e||h([])}),()=>{e=!0}},[a]),M(()=>{let e=!1;const n=F(()=>{I(u()).then(r=>{e||a(r)}).catch(()=>{})});return()=>{e=!0,n()}},[a]);const d=t===null,o=!!(l?.id||l?.handle),m=w&&o&&!f(t??[],l),N=!o&&(l?.items?.length??0)>0,S=m?"":f(t??[],l)?.id??"",g=e=>p({id:e.id,handle:e.handle,name:e.name,items:e.items.map(n=>({label:n.label,url:n.url,...n.dropdown_items?.length?{dropdown_items:n.dropdown_items.map(r=>({label:r.label,url:r.url}))}:{}}))}),_=e=>{if(!e){p(null);return}const n=(t??[]).find(r=>r.id===e);n&&g(n)},[k,b]=c(!1),j=()=>{o&&(b(!0),L(u(),!0).then(e=>{a(e);const n=f(e,l);n&&g(n)}).catch(()=>{}).finally(()=>b(!1)))};return x("div",{children:[s(P,{label:i("Menu"),icon:s(U,{}),hint:!d&&t&&t.length===0?i("Create menus in {place}, then pick one here.",{place:i("Storefront → Menus")}):void 0,children:s(R,{value:S,ariaLabel:i("Menu"),onChange:_,readOnly:d||(t?.length??0)===0,options:[{label:d?i("Loading menus…"):t&&t.length===0?i("No menus found"):i("Select a menu…"),value:""},...(t??[]).map(e=>({label:`${e.name} (${e.item_count??e.items.length})`,value:e.id}))]})}),N?s("p",{className:"mt-2 text-[12px] text-[var(--sf-warning,#b45309)]",children:W()}):null,m?s("p",{className:"mt-2 text-[12px] text-[var(--sf-warning,#b45309)]",children:T(l?.name??i("The linked menu"))}):null,o&&!m?x("div",{className:"mt-2 flex items-center justify-between gap-2",children:[s("p",{className:"text-[12px] text-fg-dim",children:E("Linked to “{name}” — {n} link. Re-pull after editing the menu:","Linked to “{name}” — {n} links. Re-pull after editing the menu:",l?.items?.length??0,{name:l?.name??""})}),s(C,{variant:"link",size:"sm",className:"shrink-0",onClick:j,disabled:k,children:k?i("Updating…"):i("Update links")})]}):null]})}export{$ as default};
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from "react";
2
+ import { type ViewTier } from "efficient-easel/screen/lib/content/view-tiers";
3
+ export declare function stepPerView<T>(value: Record<ViewTier, T>, tier: ViewTier, steps: readonly T[], delta: number): Record<ViewTier, T>;
4
+ export interface PerViewStepperFieldProps<T> {
5
+ label: string;
6
+ unit: string;
7
+ steps: readonly T[];
8
+ value: Record<ViewTier, T>;
9
+ onChange: (next: Record<ViewTier, T>) => void;
10
+ format?: (value: T) => string;
11
+ note?: ReactNode;
12
+ }
13
+ export default function PerViewStepperField<T>({ label, unit, steps, value, onChange, format, note, }: PerViewStepperFieldProps<T>): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as n,jsxs as d,Fragment as v}from"react/jsx-runtime";import{IconButton as u}from"efficient-shell/ui";import{SettingsField as x}from"efficient-easel/panel";import{ColumnsIcon as g}from"efficient-easel/icons";import{usePreviewDevice as b}from"efficient-easel/screen/components/PreviewDeviceContext";import{VIEW_TIER_LABEL as f}from"efficient-easel/screen/lib/content/view-tiers";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{sayWith as F}from"../lib/say-with.js";function _(r,t,e,a){const s=e.indexOf(r[t]),l=s>=0?s:0,c=e[Math.min(Math.max(l+a,0),e.length-1)];return{...r,[t]:c}}function j({label:r,unit:t,steps:e,value:a,onChange:s,format:l=String,note:c}){const o=b(),h=e.indexOf(a[o]),m=h>=0?h:0,p=w=>s(_(a,o,e,w));return n(x,{label:i(r),icon:n(g,{}),action:d("div",{className:"sf-colstep",children:[n(u,{variant:"secondary",size:"sm","aria-label":i("Fewer {unit} on {view}",{unit:t,view:i(f[o])}),disabled:m<=0,onClick:()=>p(-1),children:"−"}),n("span",{className:"sf-colstep-value","aria-live":"polite",children:l(e[m])}),n(u,{variant:"secondary",size:"sm","aria-label":i("More {unit} on {view}",{unit:t,view:i(f[o])}),disabled:m>=e.length-1,onClick:()=>p(1),children:"+"})]}),hint:d(v,{children:[F(i("Sets the {view} view — switch views in the top bar to set each one."),{view:n("strong",{children:i(f[o])})}),c?d(v,{children:[" ",c]}):null]})})}export{j as default,_ as stepPerView};
@@ -0,0 +1,2 @@
1
+ export declare const PREVIEW_HEADER_PICK_CSS: string;
2
+ export declare function PreviewHeader(): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ "use client";import{jsx as t,jsxs as h}from"react/jsx-runtime";import f from"../../render/components/Header.js";import{tk as o}from"efficient-web-builder/format/components/floating-editor/tokens";import{NEUTRAL_SITE_NAME as u}from"efficient-web-builder/format/lib/content/site-name";import{usePreviewHeader as w}from"efficient-web-builder/render/components/PreviewHeaderContext";import{say as x}from"efficient-web-builder/format/lib/editor-words";const v=`
2
+ .sf-preview-header-pick header { cursor: pointer; }
3
+ .sf-preview-header-pick header:hover {
4
+ outline: 2px solid color-mix(in srgb, ${o.accent} 45%, transparent);
5
+ outline-offset: -2px;
6
+ }
7
+ .sf-preview-header-pick[data-selected] header {
8
+ outline: 2px solid ${o.accent};
9
+ outline-offset: -2px;
10
+ }
11
+ `;function C(){const{settings:i,selected:s,select:a,websiteName:d,templateChrome:e,templateName:n,chromePlaceholder:c,themeSwitchShown:m}=w(),p=e?n?.trim()||x("Template"):d?.trim()||u,r=e||c;return h("div",{className:"sf-preview-header-pick sf-theme-surfaces","data-selected":s||void 0,onClick:l=>{l.stopPropagation(),a()},children:[t("style",{children:v}),t(f,{previewSettings:i??void 0,editorPreview:!0,showThemeToggle:m,wordmark:p,hideLogo:r,hideMenu:r})]})}export{v as PREVIEW_HEADER_PICK_CSS,C as PreviewHeader};
@@ -0,0 +1,4 @@
1
+ export default function PreviewHeaderPrimer({ token, siteId, }: {
2
+ token: string;
3
+ siteId?: string | null;
4
+ }): null;
@@ -0,0 +1 @@
1
+ "use client";import{usePreviewHeader as n}from"efficient-web-builder/render/components/PreviewHeaderContext";import{loadHeaderSettings as t,toPreviewHeaderSettings as s}from"../lib/header-settings-source.js";import{onHeaderMenusChanged as u}from"efficient-web-builder/format/lib/editor-events";import{usePrimeAndRefresh as a}from"../lib/use-prime-and-refresh.js";function d({token:e,siteId:r}){const{primeSettings:o,setSettings:m}=n();return a({token:e,deps:[r],prime:{load:()=>t(e,r),publish:i=>o(s(i))},refresh:{subscribe:u,load:()=>t(e,r,!0),publish:i=>m(s(i))}}),null}export{d as default};
@@ -0,0 +1,3 @@
1
+ export default function PreviewMenusPrimer({ token }: {
2
+ token: string;
3
+ }): null;
@@ -0,0 +1 @@
1
+ "use client";import{usePreviewMenus as n}from"../../render/components/PreviewMenusContext.js";import{loadMenus as m,menuIdentity as i,refreshMenus as o}from"../../render/lib/menu-source.js";import{onHeaderMenusChanged as t}from"efficient-web-builder/format/lib/editor-events";import{usePrimeAndRefresh as f}from"../lib/use-prime-and-refresh.js";function l({token:e}){const{primeLive:s,setLive:u}=n();return f({token:e,prime:{load:()=>m(e),publish:r=>s(i(r))},refresh:{subscribe:t,load:()=>o(e),publish:r=>u(i(r))}}),null}export{l as default};
@@ -0,0 +1,20 @@
1
+ import { type SearchSelectOption } from "efficient-web-builder/editor/components/SearchSelectField";
2
+ import type { ProductSummary } from "../../render/lib/api/index.js";
3
+ export declare const ANY_VALUE = "__all__";
4
+ export declare const NO_PRODUCT = "";
5
+ export type PreviewLevelKey = "brand" | "kind" | "product";
6
+ export interface PreviewLevel {
7
+ key: PreviewLevelKey;
8
+ label: string;
9
+ options: SearchSelectOption[];
10
+ }
11
+ export declare function previewableRows(rows: ProductSummary[] | null): ProductSummary[];
12
+ export declare function previewPickerLevels({ rows, brand, kind, slug, loading, currency, }: {
13
+ rows: ProductSummary[] | null;
14
+ brand: string;
15
+ kind: string;
16
+ slug: string;
17
+ loading?: boolean;
18
+ currency?: string;
19
+ }): PreviewLevel[];
20
+ export default function PreviewProductPicker(): import("react").JSX.Element;
@@ -0,0 +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};
@@ -0,0 +1,19 @@
1
+ import type { ProductHeroSourceValue } from "../../render/lib/content/source-values.js";
2
+ import { type ProductSummary } from "../../render/lib/api/index.js";
3
+ import { type SearchSelectOption } from "efficient-web-builder/editor/components/SearchSelectField";
4
+ export declare function heroSnapshot(row: ProductSummary): ProductHeroSourceValue;
5
+ export declare function heroResolve(rows: ProductSummary[], value: ProductHeroSourceValue): ProductSummary | undefined;
6
+ export declare function heroCategoryLabel(rows: ProductSummary[] | null): string;
7
+ export declare function heroPickerOptions({ rows, category, value, loading, currency, }: {
8
+ rows: ProductSummary[] | null;
9
+ category: string;
10
+ value: ProductHeroSourceValue | null | undefined;
11
+ loading: boolean;
12
+ currency: string;
13
+ }): SearchSelectOption[];
14
+ interface Props {
15
+ value?: ProductHeroSourceValue | null;
16
+ onChange: (value: ProductHeroSourceValue | null) => void;
17
+ }
18
+ export default function ProductHeroSource({ value, onChange }: Props): import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as c,jsxs as $}from"react/jsx-runtime";import{SettingsField as z}from"efficient-easel/panel";import{FieldSelect as O}from"efficient-easel/fields";import{CategoryIcon as _}from"efficient-easel/icons";import{useEffect as w,useMemo as C,useState as K}from"react";import{useEaselHost as N}from"efficient-easel/screen/lib/host";import{formatPrice as W}from"../../render/lib/commerce.js";import{resolveWheelPrice as G}from"../../render/lib/wheels/price-display.js";import{isRenderableFinish as M}from"../../render/lib/wheels/renderable-finishes.js";import{loadUnifiedProductCatalog as U}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as V}from"./useStorefrontCategories.js";import{ALL_CATEGORY as Y,filterByCategory as q,useCategoryFilter as D}from"./useCategoryFilter.js";import{useSnapshotSource as J}from"efficient-web-builder/editor/components/useSnapshotSource";import{useCurrency as Q}from"../../render/components/CurrencyContext.js";import X from"efficient-web-builder/editor/components/SearchSelectField";import Z from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as v}from"efficient-web-builder/format/lib/editor-words";const S=e=>e.kind==="tyre"?"tyre":"alloy-wheel",m=e=>`${e.kind}:${e.slug}`;function P(e){return e.kind==="tyre"?{kind:"tyre",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.brand??"",image:e.coverImage??null,finishes:[],prices:e.prices,href:`/tyres/${e.slug}`}:{kind:"wheel",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.process,image:e.coverImage??null,finishes:e.finishes.filter(M).map(r=>({name:r.name,color:r.color,src:r.src})),prices:e.prices,href:`/wheels/${e.slug}`}}function x(e,r){const s=S(r);return e.find(t=>t.kind===s&&t.slug===r.slug)}function L(e){return R(e)?n("Category — wheels only"):n("Category")}const R=e=>!!(e?.some(r=>r.kind==="tyre")&&e.some(r=>r.kind==="alloy-wheel")),ee=e=>v("{n} size","{n} sizes",e);function te({rows:e,category:r,value:s,loading:t,currency:l}){const a=e??[],d=a.filter(o=>o.kind==="alloy-wheel"),p=a.filter(o=>o.kind==="tyre"),h=d.length>0&&p.length>0,k={value:"",label:t?n("Loading…"):n("Pick a product…")},g=s&&!(e!==null&&x(e,s))?[{value:m({kind:S(s),slug:s.slug}),label:t?s.name:n("{name} (unavailable)",{name:s.name})}]:[],u=q(d,r).map(o=>{const f=G(o.prices[l],o.msrpPrices?.[l]);return{value:m({kind:"alloy-wheel",slug:o.slug}),label:o.name,...h?{group:n("Wheels")}:{},thumb:o.coverImage??null,...f.priced?{meta:W(f.unit,l)}:{}}}),b=p.map(o=>({value:m(o),label:o.name,...h?{group:n("Tyres")}:{},thumb:o.coverImage??null,meta:ee(o.variantCount)}));return[k,...g,...u,...b]}function oe({value:e,onChange:r}){const s=N(),{rows:t,loading:l,refreshing:a,errored:d,refresh:p}=J({load:U,resolve:x,snapshot:P,value:e,onChange:r}),[h,k]=K(null);w(()=>{let i=!1;return V().then(y=>{i||k(y)}),()=>{i=!0}},[]);const{currency:g}=Q(),u=C(()=>t&&e?x(t,e)??null:null,[t,e]),b=C(()=>(t??[]).filter(i=>i.kind==="alloy-wheel"),[t]),{category:o,setCategory:f,categoryNames:T}=D(b,h,u?.kind==="alloy-wheel"?u:null),A=!!e?.slug&&t!==null&&!u,E=C(()=>te({rows:t,category:o,value:e,loading:l,currency:g}),[t,o,e,l,g]),F=i=>{if(!i){r(null);return}const y=(t??[]).find(H=>m(H)===i);y&&r(P(y))},I=()=>{e?.slug&&s.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=d?"error":a?"loading":"idle",B=d?n("Couldn’t reach the product catalog."):a?n("Syncing from the catalog…"):A?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):n("Linked to “{name}” · title, description, category, price & image follow the product.",{name:e?.name??""});return $("div",{children:[c(X,{label:"Product",options:E,fallback:"",value:e?m({kind:S(e),slug:e.slug}):"",onChange:F,placeholder:"Search products…"}),c(z,{label:L(t),icon:c(_,{}),children:c(O,{value:o,ariaLabel:L(t),onChange:f,readOnly:l,options:[{label:R(t)?n("All wheel categories"):n("All products"),value:Y},...T.map(i=>({label:i,value:i}))]})}),e?.slug?c(Z,{status:j,statusText:B,onRefresh:p,busy:a,edit:{label:n("Edit product ✎"),onClick:I},hint:n("The whole hero comes from the product record — title, price, pictures, options and Add to Cart. Edit the product in the Products database and this hero updates to match.")}):c("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.")})]})}export{oe as default,L as heroCategoryLabel,te as heroPickerOptions,x as heroResolve,P as heroSnapshot};
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ value?: string;
3
+ onChange: (value: string) => void;
4
+ }
5
+ export default function ProductPicker({ value, onChange }: Props): import("react").JSX.Element;
6
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as t,jsxs as d}from"react/jsx-runtime";import{SettingsField as u}from"efficient-easel/panel";import{FieldSelect as m}from"efficient-easel/fields";import{BlockProductIcon as L,CategoryIcon as N}from"efficient-easel/icons";import{useEffect as S,useMemo as v,useState as f}from"react";import{loadProductCatalog as x}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as j}from"./useStorefrontCategories.js";import{ALL_CATEGORY as T,useCategoryFilter as A}from"./useCategoryFilter.js";import{useGridSourceLock as F}from"./useGridSourceLock.js";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{sayWith as O}from"../lib/say-with.js";function W({value:r,onChange:g}){const[l,h]=f(null),[p,y]=f(null);S(()=>{let e=!1;return x().then(i=>{e||h(i)}),j().then(i=>{e||y(i)}),()=>{e=!0}},[]);const b=v(()=>l&&r?l.find(e=>e.slug===r)??null:null,[l,r]),{category:C,setCategory:k,categoryNames:P,filtered:n}=A(l,p,b),a=l===null,c=F(),s=c!==null;return d("div",{children:[s&&t("p",{className:"es-field-hint sf-hint-keep",style:{marginBottom:8},children:O(o("Disabled because this grid’s {source} is set to “{name}”. The grid fills itself from that source automatically. To pick wheels here, set {source} back to “None”.",{name:c??""}),{source:t("strong",{children:o("Products source")})})}),d("div",{className:s?"sf-locked":void 0,children:[t(u,{label:o("Category"),icon:t(N,{}),children:t(m,{value:C,ariaLabel:o("Category"),onChange:k,readOnly:a||s,options:[{label:o("All products"),value:T},...P.map(e=>({label:e,value:e}))]})}),t(u,{label:o("Product"),icon:t(L,{}),children:t(m,{value:r??"",ariaLabel:o("Product"),onChange:g,readOnly:a||s,options:[{label:a?o("Loading…"):n.length===0?o("No products in this category"):o("Select a product…"),value:""},...n.map(e=>({label:e.name,value:e.slug}))]})})]})]})}export{W as default};
@@ -0,0 +1 @@
1
+ export default function SocialLinksDoor(): import("react").JSX.Element;
@@ -0,0 +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};
@@ -0,0 +1,7 @@
1
+ import type { SpecTableSourceValue } from "../../render/lib/wheels/spec-sheet.js";
2
+ interface Props {
3
+ value?: SpecTableSourceValue | null;
4
+ onChange: (value: SpecTableSourceValue | null) => void;
5
+ }
6
+ export default function SpecTableSource({ value, onChange }: Props): import("react").JSX.Element;
7
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as s,jsxs as F}from"react/jsx-runtime";import{SettingsField as p}from"efficient-easel/panel";import{FieldSelect as f}from"efficient-easel/fields";import{BlockProductIcon as N,CategoryIcon as A}from"efficient-easel/icons";import{useEffect as B,useMemo as O,useState as _}from"react";import{resolveMedia as H}from"efficient-web-builder/render/lib/media";import{useEaselHost as I}from"efficient-easel/screen/lib/host";import{loadProductCatalog as M}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as R}from"./useStorefrontCategories.js";import{ALL_CATEGORY as Y,useCategoryFilter as z}from"./useCategoryFilter.js";import{useSnapshotSource as G}from"efficient-web-builder/editor/components/useSnapshotSource";import W from"efficient-web-builder/editor/components/SourceStatus";import{say as o}from"efficient-web-builder/format/lib/editor-words";function g(e){return{slug:e.slug,name:e.name,process:e.process,spokes:e.spokes,mesh:e.mesh,spec:e.spec,finishes:e.finishes.map(r=>({name:r.name,image:H(r.angles?.[0]??r.src)??null}))}}function q({value:e,onChange:r}){const h=I(),{rows:n,loading:l,refreshing:i,errored:u,refresh:b}=G({load:M,resolve:(t,a)=>t.find(c=>c.slug===a.slug),snapshot:g,value:e,onChange:r}),[y,S]=_(null);B(()=>{let t=!1;return R().then(a=>{t||S(a)}),()=>{t=!0}},[]);const m=O(()=>n&&e?.slug?n.find(t=>t.slug===e.slug)??null:null,[n,e?.slug]),{category:k,setCategory:C,categoryNames:L,filtered:x}=z(n,y,m),d=!!e?.slug&&n!==null&&!m,P=t=>{if(!t){r(null);return}const a=(n??[]).find(c=>c.slug===t);a&&r(g(a))},E=()=>{e?.slug&&h.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},T=!!e?.spec,j=u?"error":i?"loading":"idle",w=u?o("Couldn’t reach the product catalog."):i?o("Syncing from the catalog…"):d?o("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):T?o("Linked to “{name}” · every spec row follows the product.",{name:e?.name??""}):o("Linked to “{name}” — this product has no spec data yet.",{name:e?.name??""});return F("div",{children:[s(p,{label:o("Category"),icon:s(A,{}),children:s(f,{value:k,ariaLabel:o("Category"),onChange:C,readOnly:l,options:[{label:o("All products"),value:Y},...L.map(t=>({label:t,value:t}))]})}),s(p,{label:o("Product"),icon:s(N,{}),children:s(f,{value:e?.slug??"",ariaLabel:o("Product"),onChange:P,readOnly:l,options:[{label:l?o("Loading…"):o("None (write the rows yourself)"),value:""},...d?[{label:o("{name} (unavailable)",{name:e.name}),value:e.slug}]:[],...x.map(t=>({label:t.name,value:t.slug}))]})}),e?.slug?s(W,{status:j,statusText:w,onRefresh:b,busy:i,edit:{label:o("Edit product ✎"),onClick:E},hint:o("Every spec row (lug count, bolt pattern, offset, center bore, load rating, bump profile…) comes from the product record — edit its part numbers in the Products database and this table updates to match. You still choose which finish to picture and an optional size.")}):s("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:o("Pick a product to fill the spec table from the catalog, or keep “None” to write the rows yourself.")})]})}export{q as default};
@@ -0,0 +1,6 @@
1
+ import type { ReactNode } from "react";
2
+ import type { EaselSurface as EditorSurface } from "efficient-easel/screen/lib/host-chrome";
3
+ export default function StorefrontEditorFurniture({ surface, children }: {
4
+ surface: EditorSurface;
5
+ children: ReactNode;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as i,jsxs as o}from"react/jsx-runtime";import c from"./EditorCurrencyProvider.js";import a from"./PreviewHeaderPrimer.js";import{PreviewMenusProvider as m}from"../../render/components/PreviewMenusContext.js";import u from"./PreviewMenusPrimer.js";import{useScreenDocument as f}from"efficient-easel/screen/components/ScreenDocumentContext";function S({surface:d,children:n}){const{token:e,siteId:s,capabilities:r}=f();if(d==="section")return o(m,{children:[e?i(u,{token:e}):null,n]});const t=e??"";return o(c,{token:t,siteId:s,enabled:r.hasSiteSettings,children:[r.hasSiteSettings&&i(a,{token:t,siteId:s}),o(m,{children:[r.hasSiteSettings&&i(u,{token:t}),n]})]})}export{S as default};
@@ -0,0 +1,2 @@
1
+ import type { HostPanelProps } from "efficient-easel/screen/lib/host-chrome";
2
+ export default function StorefrontHeaderPanel({ placeholderMode, tokenRef, siteId, websiteName, onOpenWebsiteSettings, onAuthExpired, }: HostPanelProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as e,Fragment as a,jsxs as l}from"react/jsx-runtime";import{ShowWhen as d}from"efficient-shell/ui";import m,{OFF_PLACEHOLDER as p}from"./HeaderSettingsPanel.js";import u from"./SwitchToBoxHeader.js";function f({placeholderMode:t,tokenRef:n,siteId:r,websiteName:i,onOpenWebsiteSettings:o,onAuthExpired:s}){return l(a,{children:[e(d,{rule:p,values:null,context:{placeholderMode:t},children:e("div",{className:"px-4 pt-3 pb-1",children:e(u,{})})}),e(m,{inline:!0,placeholderMode:t,tokenRef:n,siteId:r,websiteName:i??void 0,onOpenWebsiteSettings:o,onAuthExpired:s})]})}export{f as default};
@@ -0,0 +1,5 @@
1
+ import type { EaselChrome as EditorChrome } from "efficient-easel/screen/lib/host-chrome";
2
+ import { type LinkFieldUsage } from "../../render/lib/links/link-rules.js";
3
+ export declare const STOREFRONT_PRODUCTS: NonNullable<EditorChrome["products"]>;
4
+ export declare function loadFieldUsage(siteId?: string): Promise<LinkFieldUsage[]>;
5
+ export declare const STOREFRONT_LINK_FILTERS: NonNullable<EditorChrome["linkFilters"]>;
@@ -0,0 +1 @@
1
+ "use client";import{loadProductCatalog as s,loadUnifiedProductCatalog as i}from"../../render/components/useProductCatalog.js";import{storefrontAdmin as l}from"../../render/lib/api/index.js";import{getEditorToken as c}from"efficient-web-builder/render/lib/editor-auth";import{fieldUsageFromAdminRows as m,storefrontLinkFilters as u,wheelPath as f}from"../../render/lib/links/link-rules.js";const R={list:async()=>(await s()).map(e=>({slug:e.slug,name:e.name,href:f(e.slug)}))},a=new Map;function d(e){const t=e??"",o=c(),r=a.get(t);if(r&&!(r.token===null&&o!==null))return r.promise;const n=o&&e?l.listFieldUsage(o,e).then(m).catch(()=>[]):Promise.resolve([]);return a.set(t,{promise:n,token:o}),n}const T={load:async e=>{const[t,o]=await Promise.all([i().catch(()=>[]),d(e??void 0)]);return u({catalogue:t,fieldUsage:o,offersCommerce:!0})}};export{T as STOREFRONT_LINK_FILTERS,R as STOREFRONT_PRODUCTS,d as loadFieldUsage};
@@ -0,0 +1,2 @@
1
+ import type { EaselChrome as EditorChrome } from "efficient-easel/screen/lib/host-chrome";
2
+ export declare const STOREFRONT_PAGE_ROWS: NonNullable<EditorChrome["pageRows"]>;