efficient-storefront-blocks 0.75.0 → 0.76.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 (248) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/chunks/EditorPreviewCheckout-ANI7HUYX.js +4 -0
  3. package/dist/chunks/{SiteEditorProvider-N4T55FAV.js → SiteEditorProvider-AJUWZYHT.js} +1 -1
  4. package/dist/chunks/chunk-3IQQNZIM.js +311 -0
  5. package/dist/chunks/chunk-4F5CAFXO.js +1 -0
  6. package/dist/chunks/chunk-YAYHH5GY.js +1 -0
  7. package/dist/chunks/{chunk-K26JUDGZ.js → chunk-YFPWVNDB.js} +1 -1
  8. package/dist/chunks/{fitment-data-5ZSHENM3.js → fitment-data-IZYCNTET.js} +1 -1
  9. package/dist/contract.js +2 -2
  10. package/dist/editor/components/BlogSource.js +1 -1
  11. package/dist/editor/components/CategoryProductFields.d.ts +22 -0
  12. package/dist/editor/components/CategoryProductFields.js +1 -0
  13. package/dist/editor/components/CategorySource.d.ts +12 -0
  14. package/dist/editor/components/CategorySource.js +1 -1
  15. package/dist/editor/components/CollectionPicker.js +1 -1
  16. package/dist/editor/components/CountryShowAsTiles.js +1 -1
  17. package/dist/editor/components/EditorPreviewChat.js +1 -11
  18. package/dist/editor/components/EditorPreviewSurface.js +1 -1
  19. package/dist/editor/components/GalleryProductBinding.js +1 -1
  20. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  21. package/dist/editor/components/HeaderSettingsPanel.d.ts +8 -4
  22. package/dist/editor/components/HeaderSettingsPanel.js +1 -1
  23. package/dist/editor/components/MenuPicker.js +1 -1
  24. package/dist/editor/components/PreviewProductPicker.js +1 -1
  25. package/dist/editor/components/ProductHeroSource.js +1 -1
  26. package/dist/editor/components/ProductPicker.js +1 -1
  27. package/dist/editor/components/SocialLinksDoor.js +1 -1
  28. package/dist/editor/components/SpecTableSource.js +1 -1
  29. package/dist/editor/lib/document/block-align-row.d.ts +2 -0
  30. package/dist/editor/lib/document/block-align-row.js +1 -0
  31. package/dist/editor/lib/document/blocks/commerce/AccountBlock/fields.js +1 -1
  32. package/dist/editor/lib/document/blocks/commerce/AlloyWheelsListing/fields.js +1 -1
  33. package/dist/editor/lib/document/blocks/commerce/BundleOffer/fields.js +1 -1
  34. package/dist/editor/lib/document/blocks/commerce/CartBlock/fields.js +1 -1
  35. package/dist/editor/lib/document/blocks/commerce/CatalogFilterBar/fields.js +1 -1
  36. package/dist/editor/lib/document/blocks/commerce/CheckoutCTA/fields.js +1 -1
  37. package/dist/editor/lib/document/blocks/commerce/CollectionCard/fields.js +1 -1
  38. package/dist/editor/lib/document/blocks/commerce/Collections/fields.js +1 -1
  39. package/dist/editor/lib/document/blocks/commerce/CompatibleTyres/fields.js +1 -1
  40. package/dist/editor/lib/document/blocks/commerce/CountrySwitchBlock/fields.js +1 -1
  41. package/dist/editor/lib/document/blocks/commerce/DeliveryOptions/fields.js +1 -1
  42. package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -1
  43. package/dist/editor/lib/document/blocks/commerce/EuTyreLabel/fields.js +1 -1
  44. package/dist/editor/lib/document/blocks/commerce/FitmentFinder/fields.js +1 -1
  45. package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -1
  46. package/dist/editor/lib/document/blocks/commerce/Gallery/fields.js +1 -1
  47. package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -1
  48. package/dist/editor/lib/document/blocks/commerce/GalleryItem/fields.js +1 -1
  49. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.d.ts +2 -2
  50. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.js +1 -1
  51. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
  52. package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -1
  53. package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
  54. package/dist/editor/lib/document/blocks/commerce/SearchBlock/fields.js +1 -1
  55. package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
  56. package/dist/editor/lib/document/blocks/commerce/TyreFitment/fields.js +1 -1
  57. package/dist/editor/lib/document/blocks/commerce/TyreSizes/fields.js +1 -1
  58. package/dist/editor/lib/document/blocks/commerce/shared-fields.d.ts +1 -0
  59. package/dist/editor/lib/document/blocks/commerce/shared-fields.js +1 -1
  60. package/dist/editor/lib/document/blocks/service/AppointmentBooking/fields.js +1 -1
  61. package/dist/editor/lib/document/blocks/service/BookingBox/fields.js +1 -1
  62. package/dist/editor/lib/document/blocks/service/ContactCards/fields.js +1 -1
  63. package/dist/editor/lib/document/blocks/service/ContactRouting/fields.js +1 -1
  64. package/dist/editor/lib/document/blocks/service/Events/fields.js +1 -1
  65. package/dist/editor/lib/document/blocks/service/Footer/fields.js +1 -1
  66. package/dist/editor/lib/document/blocks/service/FooterDivider/fields.js +1 -1
  67. package/dist/editor/lib/document/blocks/service/FooterEmailSignup/fields.js +1 -1
  68. package/dist/editor/lib/document/blocks/service/FooterGroup/fields.js +1 -1
  69. package/dist/editor/lib/document/blocks/service/FooterLogo/fields.js +1 -1
  70. package/dist/editor/lib/document/blocks/service/FooterMenu/fields.js +1 -1
  71. package/dist/editor/lib/document/blocks/service/FooterMessaging/fields.js +1 -1
  72. package/dist/editor/lib/document/blocks/service/FooterPayment/fields.js +1 -1
  73. package/dist/editor/lib/document/blocks/service/FooterSocial/fields.js +1 -1
  74. package/dist/editor/lib/document/blocks/service/FooterText/fields.js +1 -1
  75. package/dist/editor/lib/document/blocks/service/Form/fields.js +1 -1
  76. package/dist/editor/lib/document/blocks/service/MessagingCards/fields.js +1 -1
  77. package/dist/editor/lib/document/blocks/service/OpeningHours/fields.js +1 -1
  78. package/dist/editor/lib/document/blocks/service/RateTable/fields.js +1 -1
  79. package/dist/editor/lib/document/blocks/service/RatingBlock/fields.js +1 -1
  80. package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -1
  81. package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -1
  82. package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -1
  83. package/dist/editor/lib/document/blocks/service/SubmitBox/fields.js +1 -1
  84. package/dist/editor/lib/document/blocks/service/SubmitBuild/fields.js +1 -1
  85. package/dist/editor/lib/document/blocks/service/Subscribe/fields.js +1 -1
  86. package/dist/editor/lib/document/blocks/service/SubscribeBlogs/fields.js +1 -1
  87. package/dist/editor/lib/document/box-header.js +1 -1
  88. package/dist/editor/lib/document/config.d.ts +16 -16
  89. package/dist/editor/lib/document/config.js +1 -1
  90. package/dist/editor/lib/editor-currency-source.js +1 -1
  91. package/dist/editor/lib/storefront-editor-words.d.ts +10 -13
  92. package/dist/editor/lib/storefront-editor-words.js +1 -1
  93. package/dist/editor.css +1 -1
  94. package/dist/index.js +214 -724
  95. package/dist/links.js +1 -1
  96. package/dist/render/app/globals.css +32 -79
  97. package/dist/render/built-with.json +1 -1
  98. package/dist/render/components/BoxHeaderBar.js +1 -1
  99. package/dist/render/components/CartContext.d.ts +1 -0
  100. package/dist/render/components/CartContext.js +1 -1
  101. package/dist/render/components/CartDrawer.js +2 -2
  102. package/dist/render/components/CatalogFilterBarSection.d.ts +1 -1
  103. package/dist/render/components/CatalogFilterBarSection.js +1 -1
  104. package/dist/render/components/Collections.js +1 -1
  105. package/dist/render/components/CompatibleTyres.js +1 -1
  106. package/dist/render/components/ConsentPanel.js +1 -1
  107. package/dist/render/components/ContactRouting.js +1 -1
  108. package/dist/render/components/CouponField.js +1 -1
  109. package/dist/render/components/CurrencyContext.js +1 -1
  110. package/dist/render/components/Events.js +1 -1
  111. package/dist/render/components/FitmentTable.js +1 -1
  112. package/dist/render/components/FooterGroup.d.ts +1 -1
  113. package/dist/render/components/FooterGroup.js +1 -1
  114. package/dist/render/components/FooterLogo.d.ts +2 -1
  115. package/dist/render/components/FooterMenu.js +1 -1
  116. package/dist/render/components/FooterPayment.d.ts +1 -2
  117. package/dist/render/components/FooterPayment.js +1 -1
  118. package/dist/render/components/FooterSocial.d.ts +1 -2
  119. package/dist/render/components/FooterSocial.js +1 -1
  120. package/dist/render/components/FormBlock.js +1 -1
  121. package/dist/render/components/GalleryItem.js +1 -1
  122. package/dist/render/components/GalleryShowcase.js +1 -1
  123. package/dist/render/components/Header.js +1 -1
  124. package/dist/render/components/HeaderTools.js +1 -1
  125. package/dist/render/components/Lightbox.d.ts +2 -2
  126. package/dist/render/components/Lightbox.js +1 -1
  127. package/dist/render/components/LinkedProductHero.d.ts +2 -0
  128. package/dist/render/components/PopupFrame.d.ts +17 -4
  129. package/dist/render/components/PopupFrame.js +1 -1
  130. package/dist/render/components/ProductGallery.js +1 -1
  131. package/dist/render/components/ProductGridSection.js +1 -1
  132. package/dist/render/components/ProductHeroPanel.d.ts +3 -1
  133. package/dist/render/components/ProductHeroPanel.js +1 -1
  134. package/dist/render/components/ProductLightbox.js +1 -1
  135. package/dist/render/components/ReviewForm.js +1 -1
  136. package/dist/render/components/SpecTable.d.ts +2 -1
  137. package/dist/render/components/SpecTable.js +1 -1
  138. package/dist/render/components/SubscribePopup.js +2 -2
  139. package/dist/render/components/TyreRenderSvg.js +1 -1
  140. package/dist/render/components/booking/BookingRegions.js +1 -1
  141. package/dist/render/components/catalog/CatalogFilterBar.d.ts +4 -4
  142. package/dist/render/components/catalog/CatalogFilterBar.js +1 -1
  143. package/dist/render/components/catalog/CatalogFilterContext.d.ts +5 -3
  144. package/dist/render/components/catalog/CatalogFilterContext.js +1 -1
  145. package/dist/render/components/catalog/FilterPill.d.ts +3 -1
  146. package/dist/render/components/catalog/FilterPill.js +1 -1
  147. package/dist/render/components/checkout/CheckoutPageClient.js +1 -1
  148. package/dist/render/components/checkout/checkout-parts.js +1 -1
  149. package/dist/render/components/checkout/checkout-state.d.ts +12 -0
  150. package/dist/render/components/checkout/checkout-state.js +3 -3
  151. package/dist/render/components/fitment/StockFitmentCard.js +1 -1
  152. package/dist/render/components/pdp-dynamic/DynamicProductGallery.js +1 -1
  153. package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +2 -0
  154. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
  155. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  156. package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -1
  157. package/dist/render/components/product-hero/TyreHeroFitment.js +1 -1
  158. package/dist/render/components/product-hero/VehicleQuestion.d.ts +1 -2
  159. package/dist/render/components/product-hero/VehicleQuestion.js +1 -1
  160. package/dist/render/components/product-hero/WheelHeroFitment.js +1 -1
  161. package/dist/render/components/product-hero/trust-bullets.d.ts +5 -0
  162. package/dist/render/components/product-hero/trust-bullets.js +1 -0
  163. package/dist/render/components/useModalDismiss.d.ts +2 -1
  164. package/dist/render/components/useModalDismiss.js +1 -1
  165. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  166. package/dist/render/components/wheels-plp/PlpNotifyMeDialog.js +1 -1
  167. package/dist/render/lib/booking/appointment-time.d.ts +2 -0
  168. package/dist/render/lib/booking/appointment-time.js +1 -0
  169. package/dist/render/lib/catalog/from-wheel.js +1 -1
  170. package/dist/render/lib/catalog/plp-item.js +1 -1
  171. package/dist/render/lib/checkout/stripe-appearance.d.ts +10 -0
  172. package/dist/render/lib/checkout/stripe-appearance.js +1 -0
  173. package/dist/render/lib/checkout/wallet-return.d.ts +1 -1
  174. package/dist/render/lib/commerce.d.ts +1 -0
  175. package/dist/render/lib/commerce.js +1 -1
  176. package/dist/render/lib/content/legacy-block-align.d.ts +2 -0
  177. package/dist/render/lib/content/legacy-block-align.js +1 -0
  178. package/dist/render/lib/content/menu-row.d.ts +0 -3
  179. package/dist/render/lib/content/menu-row.js +1 -1
  180. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/meta.js +1 -1
  181. package/dist/render/lib/document/blocks/commerce/BundleOffer/meta.js +1 -1
  182. package/dist/render/lib/document/blocks/commerce/CheckoutCTA/meta.js +1 -1
  183. package/dist/render/lib/document/blocks/commerce/Collections/meta.js +1 -1
  184. package/dist/render/lib/document/blocks/commerce/CompatibleTyres/meta.js +1 -1
  185. package/dist/render/lib/document/blocks/commerce/DeliveryOptions/meta.js +1 -1
  186. package/dist/render/lib/document/blocks/commerce/DetailRows/meta.js +1 -1
  187. package/dist/render/lib/document/blocks/commerce/EuTyreLabel/meta.js +1 -1
  188. package/dist/render/lib/document/blocks/commerce/FitmentFinder/meta.js +1 -1
  189. package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -1
  190. package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
  191. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.d.ts +6 -0
  192. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.js +1 -1
  193. package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
  194. package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.js +1 -1
  195. package/dist/render/lib/document/blocks/commerce/SpecTable/meta.js +1 -1
  196. package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
  197. package/dist/render/lib/document/blocks/commerce/TyreFitment/meta.js +1 -1
  198. package/dist/render/lib/document/blocks/commerce/TyreSizes/meta.js +1 -1
  199. package/dist/render/lib/document/blocks/service/ContactCards/meta.js +1 -1
  200. package/dist/render/lib/document/blocks/service/ContactRouting/meta.js +1 -1
  201. package/dist/render/lib/document/blocks/service/FooterPayment/meta.js +1 -1
  202. package/dist/render/lib/document/blocks/service/FooterSocial/meta.js +1 -1
  203. package/dist/render/lib/document/blocks/service/MessagingCards/meta.js +1 -1
  204. package/dist/render/lib/document/blocks/service/OpeningHours/meta.js +1 -1
  205. package/dist/render/lib/document/blocks/service/RateTable/meta.js +1 -1
  206. package/dist/render/lib/document/blocks/service/SubmitBuild/meta.js +1 -1
  207. package/dist/render/lib/document/blocks/service/Subscribe/meta.js +1 -1
  208. package/dist/render/lib/document/blocks/service/SubscribeBlogs/meta.js +1 -1
  209. package/dist/render/lib/document/lazy-draws.js +1 -1
  210. package/dist/render/lib/document/render-client.d.ts +8 -3
  211. package/dist/render/lib/document/render-client.js +1 -1
  212. package/dist/render/lib/document/section-to-box-rows-reviews.js +1 -1
  213. package/dist/render/lib/document/storefront-root.d.ts +0 -2
  214. package/dist/render/lib/document/storefront-root.js +1 -1
  215. package/dist/render/lib/field-input.d.ts +1 -0
  216. package/dist/render/lib/field-input.js +1 -0
  217. package/dist/render/lib/sections/content-cap-gutter.d.ts +1 -0
  218. package/dist/render/lib/sections/content-cap-gutter.js +1 -0
  219. package/dist/render/lib/sections/hero-trust-bullets.d.ts +2 -0
  220. package/dist/render/lib/sections/hero-trust-bullets.js +1 -0
  221. package/dist/render/lib/tyres/spec-sheet.d.ts +17 -0
  222. package/dist/render/lib/tyres/spec-sheet.js +1 -1
  223. package/dist/render/lib/use-scope-class.d.ts +1 -0
  224. package/dist/render/lib/use-scope-class.js +1 -0
  225. package/dist/render/lib/wheels/catalog-default-layout.d.ts +3 -3
  226. package/dist/render/lib/wheels/catalog-default-layout.js +1 -1
  227. package/dist/render/lib/wheels/catalog-filters.d.ts +2 -2
  228. package/dist/render/lib/wheels/catalog-filters.js +1 -1
  229. package/dist/render/lib/wheels/grid-source.d.ts +7 -1
  230. package/dist/render/lib/wheels/grid-source.js +1 -1
  231. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  232. package/dist/words.d.ts +46 -45
  233. package/dist/words.js +6 -6
  234. package/package.json +4 -4
  235. package/dist/chunks/EditorPreviewCheckout-27GNLSNR.js +0 -4
  236. package/dist/chunks/chunk-3TBLX25X.js +0 -1
  237. package/dist/chunks/chunk-4V6BLJSG.js +0 -1
  238. package/dist/chunks/chunk-WPHE7RI4.js +0 -246
  239. package/dist/render/components/product-hero/hero-content.d.ts +0 -7
  240. package/dist/render/components/product-hero/hero-content.js +0 -1
  241. package/dist/render/components/useIsLightTheme.d.ts +0 -1
  242. package/dist/render/components/useIsLightTheme.js +0 -1
  243. package/dist/render/lib/content/product-hero.d.ts +0 -14
  244. package/dist/render/lib/content/product-hero.js +0 -1
  245. package/dist/render/lib/wheels/collections.d.ts +0 -22
  246. package/dist/render/lib/wheels/collections.js +0 -1
  247. /package/dist/chunks/{chunk-WPHE7RI4.js.LEGAL.txt → chunk-3IQQNZIM.js.LEGAL.txt} +0 -0
  248. /package/dist/chunks/{chunk-SJODSVWU.js → chunk-5NXOTPHK.js} +0 -0
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as r,Fragment as b}from"react/jsx-runtime";import{photoLabel as g}from"./product-hero/hero-view.js";import{stageControls as H,useHeldStagePhoto as L}from"./product-hero/stage-photo.js";import{DEFAULT_HERO_GALLERY_MODE as M,DEFAULT_HERO_IMAGE_FIT as S,parseHeroGalleryMode as $,parseHeroImageFit as F,resolveHeroImageFit as k}from"../lib/sections/hero-gallery.js";import{productHasComposedRender as z}from"../lib/wheels/set-mode.js";function A({product:a,view:e,angleIdx:s,onSelect:c,isLight:m,onLightbox:p,galleryMode:i=M,imageFit:x=S,style:n}){const o=$(i),d=k(F(x),z(a));return r("div",{"data-hero-gallery":o,"data-hero-fit":d,className:o==="tiled"?"flex items-start gap-3 max-[720px]:gap-2":void 0,style:n,children:[t("div",{className:o==="tiled"?"min-w-0 flex-1":void 0,children:t(R,{name:a.name,view:e,angleIdx:s,onSelect:c,isLight:m,onLightbox:p,fit:d})}),o!=="main"&&t(T,{name:a.name,view:e,angleIdx:s,onSelect:c,isLight:m,tiled:o==="tiled"})]})}function y(a){return a.photos.length>0?a.photos.length:a.thumbFallbackCells}const E=6;function R({name:a,view:e,angleIdx:s,onSelect:c,isLight:m,onLightbox:p,fit:i}){const x=e.photos[Math.min(s,e.photos.length-1)],n=L(e.photos,x),o=y(e),d=o>=2,N=String(o).padStart(2,"0"),f=Math.min(s,Math.max(e.photos.length-1,0)),_=d||e.captions[f]?g(e,f):"",u=[a,e.metaValue,_].filter(Boolean).join(" — "),h="max-[720px]:static",j=["relative flex aspect-square items-center justify-center overflow-hidden max-[720px]:col-span-2",m?"bg-bg":""].join(" ");return r("div",{className:"relative max-[720px]:grid max-[720px]:grid-cols-[minmax(0,1fr)_auto] max-[720px]:items-start max-[720px]:gap-x-3 max-[720px]:gap-y-2",style:{color:e.tint},children:[r("div",{className:`absolute left-0 top-0 z-10 flex items-center gap-3 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.2em] text-fg ${h} max-[720px]:min-w-0 max-[720px]:flex-wrap max-[720px]:gap-x-2 max-[720px]:gap-y-1`,children:[d&&r(b,{children:[r("span",{className:"text-accent",children:[String(s+1).padStart(2,"0")," / ",N]}),t("span",{className:"text-fg-dim",children:"·"})]}),t("span",{children:a}),e.metaValue&&r(b,{children:[t("span",{className:"text-fg-dim",children:"·"}),t("span",{className:"text-accent",children:e.metaValue})]})]}),d&&t("div",{className:`absolute right-5 top-5 z-10 flex gap-1 ${h}`,children:H(s,o,c).map(l=>t("button",{type:"button","aria-label":l.label,title:l.label,onClick:l.onClick,className:"flex h-7 w-7 items-center justify-center border border-fg-dim/60 text-fg transition-colors hover:border-accent hover:text-accent",children:l.glyph},l.label))}),r("div",{className:j,children:[["top-3 left-3","top-3 right-3","bottom-3 left-3","bottom-3 right-3"].map((l,C)=>t("span",{className:`absolute ${l} h-3 w-3 border border-fg-dim/40`,style:{borderTop:l.includes("top")?"1px solid var(--site-line)":"none",borderBottom:l.includes("bottom")?"1px solid var(--site-line)":"none",borderLeft:l.includes("left")?"1px solid var(--site-line)":"none",borderRight:l.includes("right")?"1px solid var(--site-line)":"none"}},C)),e.stageImage({photo:n,alt:u,label:`Open ${[a,e.metaValue].filter(Boolean).join(" ")} at full resolution`,onZoom:()=>p(n,u),fit:i})]}),r("div",{className:`absolute bottom-0 left-0 right-0 z-10 flex items-end justify-between gap-3 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em] text-fg-dim ${h} max-[720px]:col-span-2 max-[720px]:flex-wrap`,children:[r("span",{className:"flex min-w-0 flex-col gap-1",children:[e.specCaption&&t("span",{children:e.specCaption}),e.referenceNote&&t("span",{"data-hero-reference-note":!0,children:e.referenceNote}),e.galleryHint&&t("span",{"data-hero-gallery-hint":!0,children:e.galleryHint})]}),t("span",{children:e.originCaption})]})]})}function T({name:a,view:e,angleIdx:s,onSelect:c,isLight:m,tiled:p=!1}){const i=y(e);return i<2?null:t("div",{className:p?"order-[-1] flex w-16 flex-col gap-2 max-[720px]:w-12 max-[720px]:gap-1":"mt-2 grid grid-cols-4 gap-2 max-[720px]:gap-1",style:!p&&i>4?{gridTemplateColumns:`repeat(${Math.min(i,E)}, minmax(0, 1fr))`}:void 0,children:Array.from({length:i}).map((x,n)=>{const o=e.photos[n];return r("button",{type:"button",onClick:()=>c(n),"aria-label":`View ${g(e,n)}`,className:["relative flex aspect-square items-center justify-center overflow-hidden transition-colors",m?"bg-bg":"",n===s?"border border-accent":"border border-transparent hover:border-fg-dim"].join(" "),style:{color:e.tint},children:[t("span",{className:"absolute top-1.5 left-2 z-10 font-mono text-[length:var(--size-label,8px)] uppercase tracking-[0.18em] text-fg-dim",children:String(n+1).padStart(2,"0")}),e.thumbImage({photo:o,alt:`${a} — ${g(e,n)}`})]},n)})})}export{A as default};
1
+ "use client";import{jsx as t,jsxs as s,Fragment as b}from"react/jsx-runtime";import{photoLabel as g}from"./product-hero/hero-view.js";import{stageControls as H,useHeldStagePhoto as L}from"./product-hero/stage-photo.js";import{DEFAULT_HERO_GALLERY_MODE as M,DEFAULT_HERO_IMAGE_FIT as S,parseHeroGalleryMode as $,parseHeroImageFit as F,resolveHeroImageFit as k}from"../lib/sections/hero-gallery.js";import{productHasComposedRender as z}from"../lib/wheels/set-mode.js";function A({product:a,view:e,angleIdx:r,onSelect:c,isLight:m,onLightbox:p,galleryMode:i=M,imageFit:x=S,style:o}){const n=$(i),d=k(F(x),z(a));return s("div",{"data-hero-gallery":n,"data-hero-fit":d,className:n==="tiled"?"flex items-start gap-3 max-[720px]:gap-2":void 0,style:o,children:[t("div",{className:n==="tiled"?"min-w-0 flex-1":void 0,children:t(R,{name:a.name,view:e,angleIdx:r,onSelect:c,isLight:m,onLightbox:p,fit:d})}),n!=="main"&&t(T,{name:a.name,view:e,angleIdx:r,onSelect:c,isLight:m,tiled:n==="tiled"})]})}function y(a){return a.photos.length>0?a.photos.length:a.thumbFallbackCells}const E=6;function R({name:a,view:e,angleIdx:r,onSelect:c,isLight:m,onLightbox:p,fit:i}){const x=e.photos[Math.min(r,e.photos.length-1)],o=L(e.photos,x),n=y(e),d=n>=2,N=String(n).padStart(2,"0"),f=Math.min(r,Math.max(e.photos.length-1,0)),_=d||e.captions[f]?g(e,f):"",u=[a,e.metaValue,_].filter(Boolean).join(" — "),h="max-[720px]:static",j=["relative flex aspect-square items-center justify-center overflow-hidden max-[720px]:col-span-2",m?"bg-bg":""].join(" ");return s("div",{className:"relative max-[720px]:grid max-[720px]:grid-cols-[minmax(0,1fr)_auto] max-[720px]:items-start max-[720px]:gap-x-3 max-[720px]:gap-y-2",style:{color:e.tint},children:[s("div",{className:`absolute left-0 top-0 z-10 flex items-center gap-3 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.2em] text-fg ${h} max-[720px]:min-w-0 max-[720px]:flex-wrap max-[720px]:gap-x-2 max-[720px]:gap-y-1`,children:[d&&s(b,{children:[s("span",{className:"text-accent",children:[String(r+1).padStart(2,"0")," / ",N]}),t("span",{className:"text-fg-dim",children:"·"})]}),t("span",{children:a}),e.metaValue&&s(b,{children:[t("span",{className:"text-fg-dim",children:"·"}),t("span",{className:"text-accent",children:e.metaValue})]})]}),d&&t("div",{className:`absolute right-5 top-5 z-10 flex gap-1 ${h}`,children:H(r,n,c).map(l=>t("button",{type:"button","aria-label":l.label,title:l.label,onClick:l.onClick,className:"flex h-7 w-7 items-center justify-center border border-fg-dim/60 text-fg transition-colors hover:border-accent hover:text-accent",children:l.glyph},l.label))}),s("div",{className:j,children:[["top-3 left-3","top-3 right-3","bottom-3 left-3","bottom-3 right-3"].map((l,C)=>t("span",{className:`absolute ${l} h-3 w-3 border border-fg-dim/40`,style:{borderTop:l.includes("top")?"1px solid var(--site-line)":"none",borderBottom:l.includes("bottom")?"1px solid var(--site-line)":"none",borderLeft:l.includes("left")?"1px solid var(--site-line)":"none",borderRight:l.includes("right")?"1px solid var(--site-line)":"none"}},C)),e.stageImage({photo:o,alt:u,label:`Open ${[a,e.metaValue].filter(Boolean).join(" ")} at full resolution`,onZoom:()=>p(o,u),fit:i})]}),s("div",{className:`absolute bottom-0 left-0 right-0 z-10 flex items-end justify-between gap-3 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em] text-fg-dim ${h} max-[720px]:col-span-2 max-[720px]:flex-wrap`,children:[s("span",{className:"flex min-w-0 flex-col gap-1",children:[e.specCaption&&t("span",{children:e.specCaption}),e.referenceNote&&t("span",{"data-hero-reference-note":!0,children:e.referenceNote}),e.galleryHint&&t("span",{"data-hero-gallery-hint":!0,children:e.galleryHint})]}),t("span",{children:e.originCaption})]})]})}function T({name:a,view:e,angleIdx:r,onSelect:c,isLight:m,tiled:p=!1}){const i=y(e);return i<2?null:t("div",{className:p?"order-[-1] flex w-16 flex-col gap-2 max-[720px]:w-12 max-[720px]:gap-1":"mt-2 grid grid-cols-4 gap-2 max-[720px]:gap-1",style:!p&&i>4?{gridTemplateColumns:`repeat(${Math.min(i,E)}, minmax(0, 1fr))`}:void 0,children:Array.from({length:i}).map((x,o)=>{const n=e.photos[o];return s("button",{type:"button",onClick:()=>c(o),"aria-label":`View ${g(e,o)}`,"aria-pressed":o===r,className:["relative flex aspect-square items-center justify-center overflow-hidden transition-colors",m?"bg-bg":"",o===r?"border border-accent":"border border-transparent hover:border-fg-dim"].join(" "),style:{color:e.tint},children:[t("span",{className:"absolute top-1.5 left-2 z-10 font-mono text-[length:var(--size-label,8px)] uppercase tracking-[0.18em] text-fg-dim",children:String(o+1).padStart(2,"0")}),e.thumbImage({photo:n,alt:`${a} — ${g(e,o)}`})]},o)})})}export{A as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as x,Fragment as He}from"react/jsx-runtime";import{GRID_CARD_SHOW as k}from"../lib/sections/card-show-defaults.js";import{useEffect as B,useId as Oe,useMemo as d,useState as ke}from"react";import{CARD_IMAGE_BG_OFF as Be,resolveCardImageBackground as De}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as Ge}from"efficient-web-builder/format/lib/content/card-image-shape";import{containerGapProps as Ue,GAP_LENGTH_VAR as je,GAP_ZONE_CLASS as We}from"efficient-web-builder/format/lib/content/container-gap";import Ke from"next/link";import Xe from"./ProductCard.js";import{CARD_ROWS_GRID_CLASS as Ze,cardRowsGridStyle as Ve}from"./WheelCardFrame.js";import{ProductCardChromeProvider as qe}from"./ProductCardChrome.js";import{gridClassImageSizes as Ye}from"../lib/sections/card-image-sizes.js";import{fillRowCss as Je}from"../lib/sections/fill-row.js";import{noHoleBands as ee,noHoleCss as re,showsASetCard as te}from"../lib/sections/grid-no-hole.js";import{setIsWide as Qe,summarySetBuild as er}from"../lib/wheels/set-mode.js";import{answersForKind as se}from"../lib/content/field-usage.js";import{wheelCardEyebrowShows as rr}from"./ProductCardEyebrow.js";import tr from"./NoCurrencyNote.js";import{DEFAULT_CARD_OUTLINE as sr,cardIndexCss as nr,parseCardIndexFormat as or}from"efficient-web-builder/format/lib/sections/product-card-style";import{DEFAULT_COVER_INDEX as ar}from"../lib/wheels/cover-rendering.js";import{SITE_WIDTH_CAP as ir,centredCap as lr}from"efficient-web-builder/format/lib/content/page-width";import{ProductCatalogProvider as mr,SectionWheelsProvider as dr}from"./ProductRef.js";import{useCurrency as pr}from"./CurrencyContext.js";import{COLLECTION_ATTR as cr,useCatalogFilter as gr}from"./catalog/CatalogFilterContext.js";import{renderGold as D,renderHeadline as ur}from"efficient-web-builder/render/components/goldPhrases";import{applyCatalogFilters as xr}from"../lib/wheels/catalog-filters.js";import{normalizeCatalogRows as hr}from"../lib/wheels/wheel-summary-casing.js";import fr from"./TyreSummaryCard.js";import{itemKind as G,plpItemsOfKinds as yr,plpKindNoun as Cr,resolvePlpKinds as ne}from"../lib/catalog/plp-item.js";import{rowsForGridSource as vr}from"../lib/wheels/grid-source.js";import{useUnifiedProductCatalog as br}from"./useProductCatalog.js";import{STICKY_UNDERHEADER_CLASS as wr}from"efficient-web-builder/render/lib/document/header-clearance";import{finishFamiliesOf as Sr}from"../lib/wheels/finish-defaults.js";import{lugCountsOf as $r}from"../lib/wheels/lug-count.js";import{diametersOf as Mr}from"../lib/wheels/size-range.js";import{say as Nr}from"efficient-web-builder/format/lib/editor-words";import{DEFAULT_TITLE_SIZE as _r}from"../lib/sections/product-grid-title.js";const n={headingMediumUpTo800Xs:"max-[800px]:text-[length:var(--size-headingMedium,28px)]",headingMediumUpTo800Small:"max-[800px]:text-[length:var(--size-headingMedium,32px)]",headingMediumUpTo800Large:"max-[800px]:text-[length:var(--size-headingMedium,36px)]",headingMediumUpTo800Xl:"max-[800px]:text-[length:var(--size-headingMedium,40px)]",body:"text-[length:var(--size-body,13px)]",headingMedium1:"text-[length:var(--size-headingMedium,40px)]",headingMedium2:"text-[length:var(--size-headingMedium,48px)]",headingMedium3:"text-[length:var(--size-headingMedium,56px)]",headingMedium4:"text-[length:var(--size-headingMedium,64px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},oe={1:"grid-cols-1",2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",5:"grid-cols-5 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",6:"grid-cols-6 max-[1100px]:grid-cols-3 max-[800px]:grid-cols-1"},ae=[{value:"para",label:"Paragraph size — 13px",cls:`font-mono font-normal uppercase tracking-[0.22em] ${n.labelLarge}`},{value:"sm",label:"Small — 40px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium1} ${n.headingMediumUpTo800Xs}`},{value:"md",label:"Medium — 48px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium2} ${n.headingMediumUpTo800Small}`},{value:"lg",label:"Large — 56px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium3} ${n.headingMediumUpTo800Large}`},{value:"xl",label:"Extra large — 64px",cls:`font-heading2 font-medium tracking-[-0.03em] ${n.headingMedium4} ${n.headingMediumUpTo800Xl}`}];function Er(h){return(ae.find(p=>p.value===h)??ae.find(p=>p.value===_r)).cls}function Tr({num:h,catalog:p,kinds:N,title:_,titleSize:ie,padTop:U,description:v,link:f,products:le,wheels:me,source:c,columns:de,limit:o,editing:y,contentCapped:pe=!1,imageBackground:ce,spinOnHover:ge,coverIndex:ue,indexBadge:xe,outline:he,showBadge:fe,fieldUsage:g,showCardPrice:ye,showCardFinishes:Ce,showCardSizes:ve,showCardBuy:be,showCardPage:we,cardImage:Se,gap:$e}){const E=d(()=>g?se(g,"alloy-wheel"):void 0,[g]),Me=d(()=>g?se(g,"tyre"):void 0,[g]),t=`pg-${Oe().replace(/:/g,"")}`,m=oe[Math.min(6,Math.max(1,de??4))]??oe[4],j=typeof o=="number"&&o>0,W=pe,K=br(y===!0&&!!c),i=d(()=>c?hr(vr(c,yr(K??p??[],ne(N)))):null,[p,K,c,N]),T=c?.process,u=!!T,{filters:b,reportCount:L,reportLugs:z,reportSizes:I,reportFinishes:P,vehicle:X}=gr(),{currency:A}=pr(),F=u&&!!b.process&&b.process!==T,r=d(()=>i?u?xr(i,b,A,X.fit):i:null,[i,u,b,A,X.fit]);B(()=>{if(u)return L(t,F?0:r?.length??0),()=>L(t,0)},[u,F,r,L,t]);const Ne=d(()=>{const s=(r??[]).filter(l=>G(l)!=="tyre");if(s.length===0)return!1;const a=s.some(l=>!!l.process);return s.some(l=>!!l.setWords)||rr({kind:!1,brand:!1,process:a},E??[])},[r,E]),w=d(()=>({lugs:$r(i??[]),sizes:Mr(i??[]),finishes:Sr(i??[])}),[i]);B(()=>(z(t,w.lugs),I(t,w.sizes),P(t,w.finishes),()=>{z(t,[]),I(t,[]),P(t,[])}),[w,z,I,P,t]);const C=Ue("ProductGrid",$e,"both"),Z=C.className.includes(We),R=`${t} grid${C.className} bg-[var(--catalog-grid-bg)] ${m}`,_e=Z?`${R} ${Ze}`:R,Ee=Z?{...C.style,...Ve(`var(${je})`)}:C.style,Te=r?r.length>0?e("div",{className:_e,style:Ee,children:r.map((s,a)=>G(s)==="tyre"?e(fr,{item:s,currency:A,editing:y,fieldUsage:Me},`tyre:${s.slug}-${a}`):e(Xe,{wheel:s,variant:"catalog"},`${s.slug}-${a}`))}):y?e("div",{className:"flex min-h-[320px] items-center justify-center rounded bg-surface-2 p-4 text-center",children:e("span",{className:`font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:Nr("No products in “{name}” yet",{name:c?.name??""})})}):null:e(le,{className:R,style:C.style,minEmptyHeight:320}),S=r?r.length:null,V=Cr(ne(N)),Le=h||_||v||f?x("div",{className:`${wr} sticky top-[var(--sf-header-h,88px)] z-30 mb-5 flex items-center justify-between gap-4 max-[800px]:flex-wrap max-[800px]:gap-y-2 border-b border-line bg-bg/95 py-3 backdrop-blur-md ${W?"":"-mx-[var(--sf-site-gutter,40px)] px-[var(--sf-site-gutter,40px)] max-[800px]:-mx-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]"}`,children:[x("div",{className:"flex min-w-0 items-end gap-6 max-[800px]:flex-col max-[800px]:items-stretch max-[800px]:gap-3",children:[h&&e("span",{className:`font-mono ${n.labelLarge} leading-none uppercase tracking-[0.22em] text-fg-dim`,children:D(h)}),_&&e("h2",{className:`${Er(ie)} leading-none text-fg max-[800px]:leading-[1] [&>span]:block`,children:ur(_,!1)})]}),(v||f||S!==null)&&x("div",{className:"flex items-center gap-5 max-[800px]:gap-3 min-[800px]:grow min-[800px]:justify-end",children:[v&&e("span",{className:`max-w-[340px] truncate font-display ${n.body} leading-[1.4] text-fg-dim max-[800px]:hidden min-[800px]:w-0 min-[800px]:grow min-[800px]:text-right`,children:D(v)}),f&&x(Ke,{href:f.href,className:`inline-flex items-center gap-2 whitespace-nowrap font-mono ${n.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:[D(f.text),e("span",{"aria-hidden":!0,children:"→"})]}),S!==null&&x("span",{className:`whitespace-nowrap font-mono ${n.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:[S," ",S===1?V.one:V.many]})]})]}):null,ze=typeof U=="number"?U:120,q=or(xe),$=d(()=>{if(!r)return null;const s=r.map(a=>G(a)!=="tyre"&&Qe(er(a))?2:1);return te(s,o)?ee(m,s,o):null},[r,m,o]),[Ie,Pe]=ke("");B(()=>{if(r)return;const s=document.querySelector(`.${t}`);if(!s)return;const a=()=>{const l=[...s.children].map(Re=>Re.classList.contains("col-span-2")?2:1);Pe(te(l,o)?re(t,ee(m,l,o,!1),l.length):"")};a();const O=new MutationObserver(a);return O.observe(s,{childList:!0}),()=>O.disconnect()},[r,t,m,o]);const Ae=$?$[0].tracks:r?j?Math.min(r.length,o):r.length:void 0,M=$?re(t,$,r.length):Ie,Y=M?"":Je(t,m,{limit:o,cards:r?.length}),J=nr(t,q),Q=x(He,{children:[j&&!M&&e("style",{children:`.${t} > *:nth-child(n+${o+1}){display:none}`}),M&&e("style",{children:M}),Y&&e("style",{children:Y}),J&&e("style",{children:J}),Le,Te,e(tr,{editing:y})]});if(F)return null;const H=e("section",{...u?{[cr]:T}:{},className:"relative z-[2] bg-bg px-[var(--sf-site-gutter,40px)] pt-[var(--pg-pt)] pb-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:pt-[70px] max-[800px]:pb-[70px]",style:{"--pg-pt":`${ze}px`,...Ge(Se)},children:W?e("div",{style:lr(ir),children:Q}):Q}),Fe=i?H:y?e(mr,{children:H}):e(dr,{wheels:me,children:H});return e(qe,{imageSizes:Ye(m,Ae),imageBackgroundFill:De(ce,Be),spinOnHover:ge??!0,coverIndex:ue??ar,indexBadge:q,outline:he??sr,showBadge:fe??!0,fieldUsage:E,reserveEyebrow:Ne,showCardPrice:ye??!0,showCardFinishes:Ce??!0,showCardSizes:ve??k.showCardSizes,showCardBuy:be??k.showCardBuy,showCardPage:we??k.showCardPage,children:Fe})}export{ae as TITLE_SIZES,Tr as default};
1
+ "use client";import{jsx as r,jsxs as h,Fragment as Fe}from"react/jsx-runtime";import{GRID_CARD_SHOW as D}from"../lib/sections/card-show-defaults.js";import{useScopeClass as Be}from"../lib/use-scope-class.js";import{useEffect as _,useMemo as p,useState as He}from"react";import{CARD_IMAGE_BG_OFF as ke,resolveCardImageBackground as De}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as Ge}from"efficient-web-builder/format/lib/content/card-image-shape";import{containerGapProps as Ue,GAP_LENGTH_VAR as je,GAP_ZONE_CLASS as We}from"efficient-web-builder/format/lib/content/container-gap";import Xe from"next/link";import Ke from"./ProductCard.js";import{CARD_ROWS_GRID_CLASS as Ze,cardRowsGridStyle as Ve}from"./WheelCardFrame.js";import{ProductCardChromeProvider as qe}from"./ProductCardChrome.js";import{gridClassImageSizes as Ye}from"../lib/sections/card-image-sizes.js";import{fillRowCss as Je}from"../lib/sections/fill-row.js";import{noHoleBands as re,noHoleCss as te,showsASetCard as ne}from"../lib/sections/grid-no-hole.js";import{setIsWide as Qe,summarySetBuild as er}from"../lib/wheels/set-mode.js";import{answersForKind as se}from"../lib/content/field-usage.js";import{wheelCardEyebrowShows as rr}from"./ProductCardEyebrow.js";import tr from"./NoCurrencyNote.js";import{DEFAULT_CARD_OUTLINE as nr,cardIndexCss as sr,parseCardIndexFormat as ar}from"efficient-web-builder/format/lib/sections/product-card-style";import{DEFAULT_COVER_INDEX as or}from"../lib/wheels/cover-rendering.js";import{SITE_WIDTH_CAP as ir,centredCap as lr}from"efficient-web-builder/format/lib/content/page-width";import{ProductCatalogProvider as mr,SectionWheelsProvider as dr}from"./ProductRef.js";import{useCurrency as pr}from"./CurrencyContext.js";import{COLLECTION_ATTR as cr,useCatalogFilter as gr}from"./catalog/CatalogFilterContext.js";import{renderGold as G,renderHeadline as ur}from"efficient-web-builder/render/components/goldPhrases";import{applyCatalogFilters as xr}from"../lib/wheels/catalog-filters.js";import{normalizeCatalogRows as hr}from"../lib/wheels/wheel-summary-casing.js";import fr from"./TyreSummaryCard.js";import{itemKind as U,plpKindNoun as yr}from"../lib/catalog/plp-item.js";import{filterBarCategoryOf as Cr,gridKindsOf as vr,gridRowsOf as br}from"../lib/wheels/grid-source.js";import{useUnifiedProductCatalog as wr}from"./useProductCatalog.js";import{STICKY_UNDERHEADER_CLASS as Sr}from"efficient-web-builder/render/lib/document/header-clearance";import{finishFamiliesOf as Mr}from"../lib/wheels/finish-defaults.js";import{lugCountsOf as $r}from"../lib/wheels/lug-count.js";import{diametersOf as Nr}from"../lib/wheels/size-range.js";import{say as _r}from"efficient-web-builder/format/lib/editor-words";import{DEFAULT_TITLE_SIZE as Er}from"../lib/sections/product-grid-title.js";const s={headingMediumUpTo800Xs:"max-[800px]:text-[length:var(--size-headingMedium,28px)]",headingMediumUpTo800Small:"max-[800px]:text-[length:var(--size-headingMedium,32px)]",headingMediumUpTo800Large:"max-[800px]:text-[length:var(--size-headingMedium,36px)]",headingMediumUpTo800Xl:"max-[800px]:text-[length:var(--size-headingMedium,40px)]",body:"text-[length:var(--size-body,13px)]",headingMedium1:"text-[length:var(--size-headingMedium,40px)]",headingMedium2:"text-[length:var(--size-headingMedium,48px)]",headingMedium3:"text-[length:var(--size-headingMedium,56px)]",headingMedium4:"text-[length:var(--size-headingMedium,64px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},ae={1:"grid-cols-1",2:"grid-cols-2 max-[800px]:grid-cols-1",3:"grid-cols-3 max-[800px]:grid-cols-1",4:"grid-cols-4 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",5:"grid-cols-5 max-[1100px]:grid-cols-2 max-[800px]:grid-cols-1",6:"grid-cols-6 max-[1100px]:grid-cols-3 max-[800px]:grid-cols-1"},oe=[{value:"para",label:"Paragraph size — 13px",cls:`font-mono font-normal uppercase tracking-[0.22em] ${s.labelLarge}`},{value:"sm",label:"Small — 40px",cls:`font-heading2 font-medium tracking-[-0.03em] ${s.headingMedium1} ${s.headingMediumUpTo800Xs}`},{value:"md",label:"Medium — 48px",cls:`font-heading2 font-medium tracking-[-0.03em] ${s.headingMedium2} ${s.headingMediumUpTo800Small}`},{value:"lg",label:"Large — 56px",cls:`font-heading2 font-medium tracking-[-0.03em] ${s.headingMedium3} ${s.headingMediumUpTo800Large}`},{value:"xl",label:"Extra large — 64px",cls:`font-heading2 font-medium tracking-[-0.03em] ${s.headingMedium4} ${s.headingMediumUpTo800Xl}`}];function Tr(f){return(oe.find(c=>c.value===f)??oe.find(c=>c.value===Er)).cls}function Lr({num:f,catalog:c,kinds:E,title:T,titleSize:ie,padTop:j,description:b,link:y,products:le,wheels:me,source:m,columns:de,limit:a,editing:C,contentCapped:pe=!1,imageBackground:ce,spinOnHover:ge,coverIndex:ue,indexBadge:xe,outline:he,showBadge:fe,fieldUsage:g,showCardPrice:ye,showCardFinishes:Ce,showCardSizes:ve,showCardBuy:be,showCardPage:we,cardImage:Se,gap:Me}){const L=p(()=>g?se(g,"alloy-wheel"):void 0,[g]),$e=p(()=>g?se(g,"tyre"):void 0,[g]),e=Be("pg"),d=ae[Math.min(6,Math.max(1,de??4))]??ae[4],W=typeof a=="number"&&a>0,X=pe,K=wr(C===!0&&!!m),i=p(()=>m?hr(br(m,E,K??c??[])):null,[c,K,m,E]),u=Cr(m),x=u!==null,{filters:w,reportCount:z,reportLugs:I,reportSizes:A,reportFinishes:P,reportCategories:R,vehicle:Z}=gr(),{currency:O}=pr(),F=x&&!!w.process&&w.process!==u,t=p(()=>i?x?xr(i,w,O,Z.fit):i:null,[i,x,w,O,Z.fit]);_(()=>(R(e,u===null?[]:[u]),()=>R(e,[])),[u,R,e]),_(()=>{if(x)return z(e,F?0:t?.length??0),()=>z(e,0)},[x,F,t,z,e]);const Ne=p(()=>{const n=(t??[]).filter(l=>U(l)!=="tyre");if(n.length===0)return!1;const o=n.some(l=>!!l.process);return n.some(l=>!!l.setWords)||rr({kind:!1,brand:!1,process:o},L??[])},[t,L]),S=p(()=>({lugs:$r(i??[]),sizes:Nr(i??[]),finishes:Mr(i??[])}),[i]);_(()=>(I(e,S.lugs),A(e,S.sizes),P(e,S.finishes),()=>{I(e,[]),A(e,[]),P(e,[])}),[S,I,A,P,e]);const v=Ue("ProductGrid",Me,"both"),V=v.className.includes(We),B=`${e} grid${v.className} bg-[var(--catalog-grid-bg)] ${d}`,_e=V?`${B} ${Ze}`:B,Ee=V?{...v.style,...Ve(`var(${je})`)}:v.style,Te=t?t.length>0?r("div",{className:_e,style:Ee,children:t.map((n,o)=>U(n)==="tyre"?r(fr,{item:n,currency:O,editing:C,fieldUsage:$e},`tyre:${n.slug}-${o}`):r(Ke,{wheel:n,variant:"catalog"},`${n.slug}-${o}`))}):C?r("div",{className:"flex min-h-[320px] items-center justify-center rounded bg-surface-2 p-4 text-center",children:r("span",{className:`font-mono ${s.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:_r("No products in “{name}” yet",{name:m?.name??""})})}):null:r(le,{className:B,style:v.style,minEmptyHeight:320}),M=t?t.length:null,q=yr(vr(m,E)),Le=f||T||b||y?h("div",{className:`${Sr} sticky top-[var(--sf-header-h,88px)] z-30 mb-5 flex items-center justify-between gap-4 max-[800px]:flex-wrap max-[800px]:gap-y-2 border-b border-line bg-bg/95 py-3 backdrop-blur-md ${X?"":"-mx-[var(--sf-site-gutter,40px)] px-[var(--sf-site-gutter,40px)] max-[800px]:-mx-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]"}`,children:[h("div",{className:"flex min-w-0 items-end gap-6 max-[800px]:flex-col max-[800px]:items-stretch max-[800px]:gap-3",children:[f&&r("span",{className:`font-mono ${s.labelLarge} leading-none uppercase tracking-[0.22em] text-fg-dim`,children:G(f)}),T&&r("h2",{className:`${Tr(ie)} leading-none text-fg max-[800px]:leading-[1] [&>span]:block`,children:ur(T,!1)})]}),(b||y||M!==null)&&h("div",{className:"flex items-center gap-5 max-[800px]:gap-3 min-[800px]:grow min-[800px]:justify-end",children:[b&&r("span",{className:`max-w-[340px] truncate font-display ${s.body} leading-[1.4] text-fg-dim max-[800px]:hidden min-[800px]:w-0 min-[800px]:grow min-[800px]:text-right`,children:G(b)}),y&&h(Xe,{href:y.href,className:`inline-flex items-center gap-2 whitespace-nowrap font-mono ${s.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:[G(y.text),r("span",{"aria-hidden":!0,children:"→"})]}),M!==null&&h("span",{className:`whitespace-nowrap font-mono ${s.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:[M," ",M===1?q.one:q.many]})]})]}):null,ze=typeof j=="number"?j:120,Y=ar(xe),$=p(()=>{if(!t)return null;const n=t.map(o=>U(o)!=="tyre"&&Qe(er(o))?2:1);return ne(n,a)?re(d,n,a):null},[t,d,a]),[Ie,Ae]=He("");_(()=>{if(t)return;const n=document.querySelector(`.${e}`);if(!n)return;const o=()=>{const l=[...n.children].map(Oe=>Oe.classList.contains("col-span-2")?2:1);Ae(ne(l,a)?te(e,re(d,l,a,!1),l.length):"")};o();const k=new MutationObserver(o);return k.observe(n,{childList:!0}),()=>k.disconnect()},[t,e,d,a]);const Pe=$?$[0].tracks:t?W?Math.min(t.length,a):t.length:void 0,N=$?te(e,$,t.length):Ie,J=N?"":Je(e,d,{limit:a,cards:t?.length}),Q=sr(e,Y),ee=h(Fe,{children:[W&&!N&&r("style",{children:`.${e} > *:nth-child(n+${a+1}){display:none}`}),N&&r("style",{children:N}),J&&r("style",{children:J}),Q&&r("style",{children:Q}),Le,Te,r(tr,{editing:C})]});if(F)return null;const H=r("section",{...x?{[cr]:u}:{},className:"relative z-[2] bg-bg px-[var(--sf-site-gutter,40px)] pt-[var(--pg-pt)] pb-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:pt-[70px] max-[800px]:pb-[70px]",style:{"--pg-pt":`${ze}px`,...Ge(Se)},children:X?r("div",{style:lr(ir),children:ee}):ee}),Re=i?H:C?r(mr,{children:H}):r(dr,{wheels:me,children:H});return r(qe,{imageSizes:Ye(d,Pe),imageBackgroundFill:De(ce,ke),spinOnHover:ge??!0,coverIndex:ue??or,indexBadge:Y,outline:he??nr,showBadge:fe??!0,fieldUsage:L,reserveEyebrow:Ne,showCardPrice:ye??!0,showCardFinishes:Ce??!0,showCardSizes:ve??D.showCardSizes,showCardBuy:be??D.showCardBuy,showCardPage:we??D.showCardPage,children:Re})}export{oe as TITLE_SIZES,Lr as default};
@@ -1,3 +1,4 @@
1
+ import { type ReactNode } from "react";
1
2
  import type { ProductSelection } from "./useProductSelection.js";
2
3
  import { type StoreProduct } from "../lib/catalog/store-product.js";
3
4
  import type { HeroPricePlacement } from "../lib/sections/hero-price-placement.js";
@@ -17,6 +18,7 @@ interface Props {
17
18
  showPriceQuote?: boolean;
18
19
  galleryMode?: HeroGalleryMode;
19
20
  imageFit?: HeroImageFit;
21
+ trustBullets?: ReactNode;
20
22
  }
21
- export default function ProductHeroPanel({ product, selection, onLightbox, editing, pricePlacement, showVehicleFitment, heroLayout, imageRatio, textAlign, showSpecTable, showPriceQuote, galleryMode, imageFit, }: Props): import("react").JSX.Element;
23
+ export default function ProductHeroPanel({ product, selection, onLightbox, editing, pricePlacement, showVehicleFitment, heroLayout, imageRatio, textAlign, showSpecTable, showPriceQuote, galleryMode, imageFit, trustBullets, }: Props): import("react").JSX.Element;
22
24
  export {};
@@ -1 +1 @@
1
- "use client";import{jsx as a,jsxs as n,Fragment as b}from"react/jsx-runtime";import X from"next/link";import{BUY_ROW_CLASS as xe}from"./buy-row.js";import{useEffect as J,useRef as ve,useState as ke}from"react";import{useCart as ye}from"./CartContext.js";import Ne from"./QuoteLink.js";import{useSiteTakesOrders as Se}from"./SiteRecordContext.js";import _e from"./EmailCaptureForm.js";import{useEnglish as $}from"./EnglishVariant.js";import we from"./QuantityStepper.js";import{MarkedLabel as I,heroView as Te}from"./product-hero/hero-view.js";import{useProductHeroContent as Ee}from"./product-hero/hero-content.js";import Re from"./ProductGallery.js";import{useIsLightTheme as Ae}from"./useIsLightTheme.js";import{useWishlist as Le}from"./WishlistContext.js";import{useStockAlertSignup as Oe}from"./useStockAlertSignup.js";import{SPARE_WORDS as ze,productCartLine as Ce}from"../lib/catalog/purchase.js";import{OPTION_ROW_ATTR as $e}from"../lib/catalog/store-product.js";import{resolvingRowsAnswered as Ie}from"../lib/catalog/product-options.js";import{HERO_BULLET_SEPARATOR as je}from"../lib/content/product-hero.js";import{STOCK_WORDS as Me}from"../lib/content/stock-words.js";import{trackViewItem as De}from"../lib/google-tag.js";import{DEFAULT_HERO_LAYOUT as Fe,DEFAULT_HERO_RATIO as Pe,DEFAULT_HERO_TEXT_ALIGN as Be,parseHeroLayout as He,parseHeroRatio as Ue,parseHeroTextAlign as Ve}from"../lib/sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as We,DEFAULT_HERO_IMAGE_FIT as Ge}from"../lib/sections/hero-gallery.js";import{ADD_TO_BASKET_ATTR as Ke,MAX_SPARES as qe,UNITS_PER_SET as Ye,formatPrice as Z}from"../lib/commerce.js";import{UNPRICED_LABEL as Qe,formatSelectionPrice as Xe,setPriceLabel as Je}from"../lib/wheels/price-display.js";import{productIsDually as Ze,productIsTwoObjects as et,setSuppressesRow as tt}from"../lib/wheels/set-mode.js";const at=4e3;function nt(t){return t?[t.year,t.make,t.model,t.modification].join("-"):""}const rt=.72;function lt(t){const l=t.trim().split(/\s+/).filter(Boolean);if(l.length===0)return;const d=l.map((s,c)=>s.length+(l.length>1&&c===l.length-1?1:0));return`calc(100cqi / ${(Math.max(...d)*rt).toFixed(2)})`}function ot({product:t,selection:l,onLightbox:d,editing:s=!1,pricePlacement:c="top",showVehicleFitment:o=!0,heroLayout:f=Fe,imageRatio:_=Pe,textAlign:te=Be,showSpecTable:ae=!0,showPriceQuote:w=!0,galleryMode:ne=We,imageFit:re=Ge}){const le=$(),v=He(f),j=Ve(te),y=Ue(_),oe=v==="imageRight"?`${100-y}fr ${y}fr`:`${y}fr ${100-y}fr`,{picked:ie,pick:M,qty:D,setQty:se,choice:g,setChoice:N,angleIdx:ce,setAngleIdx:de,showValidation:me,setShowValidation:T,manualMode:F,vehicle:E,rows:P,facts:pe,part:x,outOfStock:B,offer:m,preOrder:R,canAddToCart:S,currency:k,price:u,set:H,msrpLabel:U}=l,i=Te(t,l,s),{bullets:V}=Ee(),A=Ze(t),fe=et(t),L=o?i.vehicle:null,ue=o?i.vehicleMemory:null,O=Ae(),{addAndOpen:be,warmCatalog:W}=ye(),h=Se();J(()=>{!s&&h&&W(t.kind)},[s,h,t.kind,W]);const G=P.filter(e=>!R||e.values.length>0),K=G.filter(e=>e.role==="resolves"),z=G.filter(e=>e.role==="describes"&&!tt(fe,e.key)),q=z.findIndex(e=>e.chosen===null),Y=(!L||!i.vehicleAnswersSpecs||l.fitmentSet)&&Ie(P,R)?q===-1?z:z.slice(0,q+1):[],ge=[...K,...Y],C=n("div",{className:"flex items-baseline gap-5 border-t border-line pt-[18px]",children:[U&&a("div",{className:"font-mono text-[length:var(--size-label,15px)] text-fg-dim line-through",children:U}),a("div",{className:"font-heading2 text-[length:min(var(--size-headingMedium,36px),var(--sf-heading-max,9999px))] font-bold leading-none tracking-[-0.01em] text-fg",children:A?Je(u,k):Xe(u,k)}),u.priced&&a("div",{className:"font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:i.unitLabel}),u.setTotal!=null&&n("div",{className:"ml-auto border border-accent px-3 py-2 font-mono text-[length:var(--size-label,13px)] font-bold uppercase tracking-[0.18em] text-accent",style:{background:"color-mix(in oklab, var(--accent) 14%, transparent)"},children:[m.quantityLabel,": ",Z(H,k)]})]}),Q=ve(null);return J(()=>{s||Q.current===t.slug||(Q.current=t.slug,De({itemId:x?`${t.slug}|${x.id}`:t.slug,itemName:t.name,variant:i.metaValue,pricePerSet:u.setTotal??u.fromSetTotal??0,currency:k}))},[s,t.slug,t.name,i.metaValue,x,u,k]),n(b,{children:[a("nav",{className:"border-b border-line px-[max(var(--sf-site-gutter,40px),calc((100%_-_var(--sf-content-cap,100%))/2_+_var(--sf-site-gutter,40px)))] pt-4 pb-4 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim max-[720px]:px-[min(20px,var(--sf-site-gutter,40px))]",style:O?void 0:{background:"var(--section-bg)"},children:t.crumbs.map((e,r)=>n("span",{children:[r>0&&n(b,{children:[a("span",{className:"mx-3 text-accent",children:"/"}),a("wbr",{})]}),e.href?a(X,{href:e.href,className:"hover:text-fg",children:a(I,{text:e.label})}):a("span",{className:"text-fg",children:a(I,{text:e.label})})]},`${e.label}-${r}`))}),n("section",{"data-hero-layout":v,"data-hero-align":j,className:["grid gap-10 px-[max(var(--sf-site-gutter,40px),calc((100%_-_var(--sf-content-cap,100%))/2_+_var(--sf-site-gutter,40px)))] py-14 max-[720px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[720px]:py-8",v==="stacked"?"grid-cols-1":"[grid-template-columns:var(--hero-cols)] max-[1100px]:[grid-template-columns:minmax(0,1fr)]"].join(" "),style:{...O?{}:{background:"var(--section-bg)"},...v==="stacked"?{}:{"--hero-cols":oe}},children:[a(Re,{product:t,view:i,angleIdx:ce,onSelect:de,isLight:O,onLightbox:d,galleryMode:ne,imageFit:re,style:v==="imageRight"?{order:2}:void 0}),n("div",{className:["flex flex-col gap-7",j==="center"?"items-center text-center":""].filter(Boolean).join(" "),style:v==="imageRight"?{order:1}:void 0,children:[n("div",{className:"w-full [container-type:inline-size]",children:[n("div",{className:"mb-2.5 flex items-center gap-2.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.2em] text-accent",children:[a("span",{children:a(I,{text:t.eyebrow})}),t.badge&&n(b,{children:[a("span",{children:"·"}),a("span",{children:t.badge})]})]}),a("h1",{className:"font-heading2 text-[length:min(min(var(--size-headingMedium,clamp(48px,5.5vw,84px)),var(--hero-name-fit,9999px)),var(--sf-heading-max,9999px))] [font-weight:var(--sf-heading-weight,500)] [text-transform:var(--sf-heading-case,uppercase)] leading-[0.92] tracking-[-0.035em]",style:{"--hero-name-fit":lt(i.heading)},children:(()=>{const e=i.heading.lastIndexOf(" ");if(e===-1)return i.heading;const r=i.heading.slice(0,e),p=i.heading.slice(e+1);return n(b,{children:[r," ",n("em",{className:"font-normal italic text-accent",children:[p,"."]})]})})()})]}),c!=="belowSpecs"&&w&&C,ue,K.map(e=>a(ee,{row:e,onPick:M},e.key)),R&&i.preOrder?n(b,{children:[c==="belowSpecs"&&w&&C,i.preOrder]}):n(b,{children:[L,Y.map(e=>a(ee,{row:e,onPick:M},e.key)),ae&&a(it,{facts:pe}),(m.packs.length>0||h&&(m.extra||m.spareCounts.length>0))&&n("div",{className:"border-b border-line pb-[26px]",children:[m.packs.length>0&&n(b,{children:[a("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:"How many"}),a("div",{className:"flex flex-wrap gap-1.5",children:m.packs.map(e=>n("button",{type:"button",onClick:()=>N(r=>({...r,unit:e.value})),"aria-pressed":g.unit===e.value,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",g.unit===e.value?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:g.unit===e.value?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[g.unit===e.value&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:e.label})]},e.value))})]}),h&&m.extra&&n("label",{className:`${m.packs.length>0?"mt-3.5 ":""}flex cursor-pointer items-center gap-3 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.16em] text-fg`,children:[a("input",{type:"checkbox",checked:g.spares>0,onChange:e=>N(r=>({...r,spares:e.target.checked?qe:0})),className:"h-4 w-4 cursor-pointer accent-[var(--accent)]"}),m.extra.label]}),h&&m.spareCounts.length>0&&n(b,{children:[a("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:ze.howMany}),a("div",{className:"flex flex-col gap-1.5 sm:flex-row sm:flex-wrap",children:m.spareCounts.map(e=>{const r=e.value-Ye,p=g.spares===r;return n("button",{type:"button",onClick:()=>N(he=>({...he,spares:r})),"aria-pressed":p,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",p?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:p?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[p&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),n("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:[e.value," · ",e.label]})]},e.value)})})]}),h&&m.spareSide&&n(b,{children:[a("div",{className:"mb-3.5 mt-[26px] font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:m.spareSide.label}),a("div",{className:"flex flex-wrap gap-1.5",children:m.spareSide.options.map(e=>{const r=g.spareSide===e.value;return n("button",{type:"button",onClick:()=>N(p=>({...p,spareSide:e.value})),"aria-pressed":r,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",r?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:r?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[r&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:e.label})]},e.value)})})]})]}),c==="belowSpecs"&&w&&C,n("div",{className:xe,children:[h&&!(A&&!u.priced)&&a(we,{value:D,onChange:se,size:"large"}),!h||A&&!u.priced?a(Ne,{className:"flex-1 cursor-pointer bg-btn px-6 py-4 text-center font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-btn-ink transition-colors hover:bg-fg"}):u.priced?B?a("button",{type:"button",disabled:!0,"aria-disabled":!0,className:"flex-1 cursor-not-allowed border-2 border-dashed border-fg-dim/20 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-fg-dim/40",children:Me.outOfStock}):n("button",{type:"button",[Ke]:"",onClick:()=>{if(!S){T(!0),window.setTimeout(()=>T(!1),at);return}if(T(!1),s)return;const e=Ce(t,x,ie,{choice:g,qty:D},{fitmentLabel:F?i.specCaption:E.appliedName?`For ${E.appliedName}`:"",fitmentKey:F?`manual|${i.specCaption}`:`vehicle|${nt(E.applied?.vehicle)}`});e&&be(e)},"aria-disabled":!S,className:["flex-1 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] transition-colors",S?"cursor-pointer bg-btn text-btn-ink hover:bg-fg hover:text-bg":"cursor-pointer border-2 border-dashed border-accent/50 text-accent/80 hover:border-accent hover:text-accent"].join(" "),style:S?void 0:{background:"color-mix(in oklab, var(--accent) 6%, transparent)"},children:["Add to Cart",u.setTotal!=null?` · ${Z(H,k)}`:""]}):a("button",{type:"button",disabled:!0,"aria-disabled":!0,className:"flex-1 cursor-not-allowed border-2 border-dashed border-fg-dim/20 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-fg-dim/40",children:Qe}),a(st,{slug:t.slug,name:t.name})]}),B&&x&&a(ct,{partNumbers:x.components.map(e=>e.partNumber),productSlug:t.slug},x.id),me&&(()=>{const e=ge.filter(p=>p.chosen===null).map(p=>le(p.prompt).replace(/^Select\s+/i,""));if(L&&i.vehicleAnswersSpecs&&!l.fitmentSet&&e.push("vehicle fitment"),e.length===0)return null;const r=e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e.at(-1)}`;return n("p",{role:"alert",className:"-mt-1 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em]",style:{color:"var(--alert)"},children:["Please select ",r," first."]})})()]}),V.length>0&&a("ul",{className:"flex flex-wrap items-center gap-x-6 gap-y-2 border-t border-line pt-5 font-mono text-[length:var(--size-label,13px)] tracking-[0.05em] text-fg",children:V.map((e,r)=>n("li",{children:[a("strong",{className:"font-bold text-accent",children:e.label}),e.detail?` ${je} ${e.detail}`:""]},`${e.label}-${r}`))})]})]})]})}function it({facts:t}){const l=$();return t.length===0?null:n("div",{className:"border-b border-line pb-[26px]",children:[a("dl",{className:"flex flex-col gap-2",children:t.map(d=>n("div",{className:"flex flex-wrap items-baseline gap-x-2 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.22em]",children:[n("dt",{className:"text-fg-dim",children:[l(d.label)," ·"]}),a("dd",{className:"font-semibold text-fg",children:d.value.label})]},d.key))}),a("p",{className:"mt-3 font-mono text-[length:var(--size-body,12px)] leading-relaxed tracking-[0.1em] text-fg-dim",children:"Only one of each is left, so there is nothing to choose here."})]})}function ee({row:t,onPick:l}){const d=$();if(t.values.length===0&&!t.empty)return null;const s=t.values.find(o=>o.value===t.chosen),c=s&&[s.label,s.note].filter(Boolean).join(" · ");return n("div",{className:"border-b border-line pb-[26px]",[$e]:t.key,children:[n("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:[d(t.label)," · ",a("span",{className:"text-accent",children:c??d(t.prompt)})]}),t.values.length===0?n("p",{className:"font-mono text-[length:var(--size-body,12px)] leading-relaxed tracking-[0.1em] text-fg-dim",children:[t.empty.text," ",a(X,{href:t.empty.href,className:"text-accent hover:underline",children:t.empty.linkText})]}):t.display==="swatch"?a("div",{className:"flex flex-wrap gap-2",children:t.values.map(o=>{const f=o.value===t.chosen;return n("button",{type:"button",onClick:()=>l(t.key,o.value),className:["relative flex max-w-full items-center gap-3 border-2 px-3 py-3 text-left transition-colors",f?"border-accent outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 hover:border-accent"].join(" "),style:f?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[f&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block h-5 w-5 shrink-0 rounded-full border border-fg-dim",style:{background:o.swatch}}),a("span",{className:"block min-w-0 break-words font-mono text-[length:var(--size-label,12px)] font-bold uppercase tracking-[0.18em] text-fg",children:o.label})]},o.value)})}):a("div",{className:"flex flex-wrap gap-1.5",children:t.values.map(o=>{const f=o.value===t.chosen;return n("button",{type:"button",onClick:()=>l(t.key,o.value),className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",f?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:f?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[f&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:o.label}),o.note&&a("span",{className:"mt-1 block text-[length:var(--size-label,11px)] tracking-[0.12em] text-fg-dim",children:o.note})]},o.value)})})]})}function st({slug:t,name:l}){const{has:d,toggle:s}=Le(),c=d(t);return a("button",{type:"button",title:c?"Saved":"Save","aria-label":c?`Remove ${l} from wishlist`:`Save ${l} to wishlist`,"aria-pressed":c,onClick:()=>s(t),className:["h-12 w-12 cursor-pointer border-2 bg-transparent transition-colors",c?"border-accent text-accent":"border-fg-dim/50 text-fg hover:border-accent hover:text-accent"].join(" "),children:c?"♥":"♡"})}function ct({partNumbers:t,productSlug:l}){const[d,s]=ke(""),{status:c,submit:o,reset:f}=Oe();function _(){o({partNumbers:t,email:d,productSlug:l})}return c==="sent"?a("p",{className:"-mt-1 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em] text-accent",children:"We'll email you when it's back."}):a(_e,{className:"-mt-1",email:d,onEmailChange:s,status:c,onResetVerdict:f,onSubmit:_,inputAriaLabel:"Email for the back-in-stock alert",submitLabel:"Notify me when back",buttonClassName:"cursor-pointer whitespace-nowrap border-2 border-btn px-4 font-mono text-[length:var(--size-label,11px)] font-bold uppercase tracking-[0.22em] text-btn transition-colors hover:bg-btn hover:text-btn-ink disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-btn",errorMessage:"Couldn't save that — please try again."})}export{ot as default};
1
+ "use client";import{jsx as a,jsxs as n,Fragment as b}from"react/jsx-runtime";import Q from"next/link";import{BUY_ROW_CLASS as ve}from"./buy-row.js";import{useEffect as X,useRef as ke,useState as ye}from"react";import{useCart as Ne}from"./CartContext.js";import Se from"./QuoteLink.js";import{useSiteTakesOrders as we}from"./SiteRecordContext.js";import Te from"./EmailCaptureForm.js";import{useEnglish as I}from"./EnglishVariant.js";import _e from"./QuantityStepper.js";import{MarkedLabel as $,heroView as Ee}from"./product-hero/hero-view.js";import Re from"./ProductGallery.js";import{useRootIsDark as Ae}from"efficient-shell/theme";import{useWishlist as Ce}from"./WishlistContext.js";import{useStockAlertSignup as Le}from"./useStockAlertSignup.js";import{SPARE_WORDS as Oe,productCartLine as ze}from"../lib/catalog/purchase.js";import{OPTION_ROW_ATTR as Ie}from"../lib/catalog/store-product.js";import{resolvingRowsAnswered as $e}from"../lib/catalog/product-options.js";import{STOCK_WORDS as je}from"../lib/content/stock-words.js";import{trackViewItem as Me}from"../lib/google-tag.js";import{DEFAULT_HERO_LAYOUT as De,DEFAULT_HERO_RATIO as Fe,DEFAULT_HERO_TEXT_ALIGN as Pe,parseHeroLayout as Ue,parseHeroRatio as Be,parseHeroTextAlign as He}from"../lib/sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as Ve,DEFAULT_HERO_IMAGE_FIT as We}from"../lib/sections/hero-gallery.js";import{ADD_TO_BASKET_ATTR as Ge,MAX_SPARES as Ke,UNITS_PER_SET as qe,formatPrice as J}from"../lib/commerce.js";import{UNPRICED_LABEL as Ye,formatSelectionPrice as Qe,setPriceLabel as Xe}from"../lib/wheels/price-display.js";import{productIsDually as Je,productIsTwoObjects as Ze,setSuppressesRow as et}from"../lib/wheels/set-mode.js";import{CONTENT_CAP_GUTTER as Z}from"../lib/sections/content-cap-gutter.js";const tt=4e3;function at(t){return t?[t.year,t.make,t.model,t.modification].join("-"):""}const nt=.72;function rt(t){const r=t.trim().split(/\s+/).filter(Boolean);if(r.length===0)return;const d=r.map((s,c)=>s.length+(r.length>1&&c===r.length-1?1:0));return`calc(100cqi / ${(Math.max(...d)*nt).toFixed(2)})`}function lt({product:t,selection:r,onLightbox:d,editing:s=!1,pricePlacement:c="top",showVehicleFitment:l=!0,heroLayout:p=De,imageRatio:w=Fe,textAlign:te=Pe,showSpecTable:ae=!0,showPriceQuote:T=!0,galleryMode:ne=Ve,imageFit:re=We,trustBullets:le}){const ie=I(),v=Ue(p),j=He(te),y=Be(w),oe=v==="imageRight"?`${100-y}fr ${y}fr`:`${y}fr ${100-y}fr`,{picked:se,pick:M,qty:D,setQty:ce,choice:g,setChoice:N,angleIdx:de,setAngleIdx:me,showValidation:pe,setShowValidation:_,manualMode:F,vehicle:E,rows:P,facts:fe,part:x,outOfStock:U,offer:m,preOrder:R,canAddToCart:S,currency:k,price:u,set:B,msrpLabel:H}=r,o=Ee(t,r,s),A=Je(t),ue=Ze(t),C=l?o.vehicle:null,be=l?o.vehicleMemory:null,L=!Ae({whenUnset:!0}),{addAndOpen:ge,warmCatalog:V}=Ne(),h=we();X(()=>{!s&&h&&V(t.kind)},[s,h,t.kind,V]);const W=P.filter(e=>!R||e.values.length>0),G=W.filter(e=>e.role==="resolves"),O=W.filter(e=>e.role==="describes"&&!et(ue,e.key)),K=O.findIndex(e=>e.chosen===null),q=(!C||!o.vehicleAnswersSpecs||r.fitmentSet)&&$e(P,R)?K===-1?O:O.slice(0,K+1):[],he=[...G,...q],z=n("div",{className:"flex items-baseline gap-5 border-t border-line pt-[18px]",children:[H&&a("div",{className:"font-mono text-[length:var(--size-label,15px)] text-fg-dim line-through",children:H}),a("div",{className:"font-heading2 text-[length:min(var(--size-headingMedium,36px),var(--sf-heading-max,9999px))] font-bold leading-none tracking-[-0.01em] text-fg",children:A?Xe(u,k):Qe(u,k)}),u.priced&&a("div",{className:"font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:o.unitLabel}),u.setTotal!=null&&n("div",{className:"ml-auto border border-accent px-3 py-2 font-mono text-[length:var(--size-label,13px)] font-bold uppercase tracking-[0.18em] text-accent",style:{background:"color-mix(in oklab, var(--accent) 14%, transparent)"},children:[m.quantityLabel,": ",J(B,k)]})]}),Y=ke(null);return X(()=>{s||Y.current===t.slug||(Y.current=t.slug,Me({itemId:x?`${t.slug}|${x.id}`:t.slug,itemName:t.name,variant:o.metaValue,pricePerSet:u.setTotal??u.fromSetTotal??0,currency:k}))},[s,t.slug,t.name,o.metaValue,x,u,k]),n(b,{children:[a("nav",{className:`border-b border-line ${Z} pt-4 pb-4 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim max-[720px]:px-[min(20px,var(--sf-site-gutter,40px))]`,style:L?void 0:{background:"var(--section-bg)"},children:t.crumbs.map((e,i)=>n("span",{children:[i>0&&n(b,{children:[a("span",{className:"mx-3 text-accent",children:"/"}),a("wbr",{})]}),e.href?a(Q,{href:e.href,className:"hover:text-fg",children:a($,{text:e.label})}):a("span",{className:"text-fg",children:a($,{text:e.label})})]},`${e.label}-${i}`))}),n("section",{"data-hero-layout":v,"data-hero-align":j,className:[`grid gap-10 ${Z} py-14 max-[720px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[720px]:py-8`,v==="stacked"?"grid-cols-1":"[grid-template-columns:var(--hero-cols)] max-[1100px]:[grid-template-columns:minmax(0,1fr)]"].join(" "),style:{...L?{}:{background:"var(--section-bg)"},...v==="stacked"?{}:{"--hero-cols":oe}},children:[a(Re,{product:t,view:o,angleIdx:de,onSelect:me,isLight:L,onLightbox:d,galleryMode:ne,imageFit:re,style:v==="imageRight"?{order:2}:void 0}),n("div",{className:["flex flex-col gap-7",j==="center"?"items-center text-center":""].filter(Boolean).join(" "),style:v==="imageRight"?{order:1}:void 0,children:[n("div",{className:"w-full [container-type:inline-size]",children:[n("div",{className:"mb-2.5 flex items-center gap-2.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.2em] text-accent",children:[a("span",{children:a($,{text:t.eyebrow})}),t.badge&&n(b,{children:[a("span",{children:"·"}),a("span",{children:t.badge})]})]}),a("h1",{className:"font-heading2 text-[length:min(min(var(--size-headingMedium,clamp(48px,5.5vw,84px)),var(--hero-name-fit,9999px)),var(--sf-heading-max,9999px))] [font-weight:var(--sf-heading-weight,500)] [text-transform:var(--sf-heading-case,uppercase)] leading-[0.92] tracking-[-0.035em]",style:{"--hero-name-fit":rt(o.heading)},children:(()=>{const e=o.heading.lastIndexOf(" ");if(e===-1)return o.heading;const i=o.heading.slice(0,e),f=o.heading.slice(e+1);return n(b,{children:[i," ",n("em",{className:"font-normal italic text-accent",children:[f,"."]})]})})()})]}),c!=="belowSpecs"&&T&&z,be,G.map(e=>a(ee,{row:e,onPick:M},e.key)),R&&o.preOrder?n(b,{children:[c==="belowSpecs"&&T&&z,o.preOrder]}):n(b,{children:[C,q.map(e=>a(ee,{row:e,onPick:M},e.key)),ae&&a(it,{facts:fe}),(m.packs.length>0||h&&(m.extra||m.spareCounts.length>0))&&n("div",{className:"border-b border-line pb-[26px]",children:[m.packs.length>0&&n(b,{children:[a("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:"How many"}),a("div",{className:"flex flex-wrap gap-1.5",children:m.packs.map(e=>n("button",{type:"button",onClick:()=>N(i=>({...i,unit:e.value})),"aria-pressed":g.unit===e.value,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",g.unit===e.value?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:g.unit===e.value?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[g.unit===e.value&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:e.label})]},e.value))})]}),h&&m.extra&&n("label",{className:`${m.packs.length>0?"mt-3.5 ":""}flex cursor-pointer items-center gap-3 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.16em] text-fg`,children:[a("input",{type:"checkbox",checked:g.spares>0,onChange:e=>N(i=>({...i,spares:e.target.checked?Ke:0})),className:"h-4 w-4 cursor-pointer accent-[var(--accent)]"}),m.extra.label]}),h&&m.spareCounts.length>0&&n(b,{children:[a("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:Oe.howMany}),a("div",{className:"flex flex-col gap-1.5 sm:flex-row sm:flex-wrap",children:m.spareCounts.map(e=>{const i=e.value-qe,f=g.spares===i;return n("button",{type:"button",onClick:()=>N(xe=>({...xe,spares:i})),"aria-pressed":f,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",f?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:f?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[f&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),n("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:[e.value," · ",e.label]})]},e.value)})})]}),h&&m.spareSide&&n(b,{children:[a("div",{className:"mb-3.5 mt-[26px] font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:m.spareSide.label}),a("div",{className:"flex flex-wrap gap-1.5",children:m.spareSide.options.map(e=>{const i=g.spareSide===e.value;return n("button",{type:"button",onClick:()=>N(f=>({...f,spareSide:e.value})),"aria-pressed":i,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",i?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:i?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[i&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:e.label})]},e.value)})})]})]}),c==="belowSpecs"&&T&&z,n("div",{className:ve,children:[h&&!(A&&!u.priced)&&a(_e,{value:D,onChange:ce,size:"large"}),!h||A&&!u.priced?a(Se,{className:"flex-1 cursor-pointer bg-btn px-6 py-4 text-center font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-btn-ink transition-colors hover:bg-fg"}):u.priced?U?a("button",{type:"button",disabled:!0,"aria-disabled":!0,className:"flex-1 cursor-not-allowed border-2 border-dashed border-fg-dim/20 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-fg-dim/40",children:je.outOfStock}):n("button",{type:"button",[Ge]:"",onClick:()=>{if(!S){_(!0),window.setTimeout(()=>_(!1),tt);return}if(_(!1),s)return;const e=ze(t,x,se,{choice:g,qty:D},{fitmentLabel:F?o.specCaption:E.appliedName?`For ${E.appliedName}`:"",fitmentKey:F?`manual|${o.specCaption}`:`vehicle|${at(E.applied?.vehicle)}`});e&&ge(e)},"aria-disabled":!S,className:["flex-1 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] transition-colors",S?"cursor-pointer bg-btn text-btn-ink hover:bg-fg hover:text-bg":"cursor-pointer border-2 border-dashed border-accent/50 text-accent/80 hover:border-accent hover:text-accent"].join(" "),style:S?void 0:{background:"color-mix(in oklab, var(--accent) 6%, transparent)"},children:["Add to Cart",u.setTotal!=null?` · ${J(B,k)}`:""]}):a("button",{type:"button",disabled:!0,"aria-disabled":!0,className:"flex-1 cursor-not-allowed border-2 border-dashed border-fg-dim/20 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-fg-dim/40",children:Ye}),a(ot,{slug:t.slug,name:t.name})]}),U&&x&&a(st,{partNumbers:x.components.map(e=>e.partNumber),productSlug:t.slug},x.id),pe&&(()=>{const e=he.filter(f=>f.chosen===null).map(f=>ie(f.prompt).replace(/^Select\s+/i,""));if(C&&o.vehicleAnswersSpecs&&!r.fitmentSet&&e.push("vehicle fitment"),e.length===0)return null;const i=e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e.at(-1)}`;return n("p",{role:"alert",className:"-mt-1 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em]",style:{color:"var(--alert)"},children:["Please select ",i," first."]})})()]}),le]})]})]})}function it({facts:t}){const r=I();return t.length===0?null:a("div",{className:"border-b border-line pb-[26px]",children:a("dl",{className:"flex flex-col gap-2",children:t.map(d=>n("div",{className:"flex flex-wrap items-baseline gap-x-2 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.22em]",children:[n("dt",{className:"text-fg-dim",children:[r(d.label)," ·"]}),a("dd",{className:"font-semibold text-fg",children:d.value.label})]},d.key))})})}function ee({row:t,onPick:r}){const d=I();if(t.values.length===0&&!t.empty)return null;const s=t.values.find(l=>l.value===t.chosen),c=s&&[s.label,s.note].filter(Boolean).join(" · ");return n("div",{className:"border-b border-line pb-[26px]",[Ie]:t.key,children:[n("div",{className:"mb-3.5 font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:[d(t.label)," · ",a("span",{className:"text-accent",children:c??d(t.prompt)})]}),t.values.length===0?n("p",{className:"font-mono text-[length:var(--size-body,12px)] leading-relaxed tracking-[0.1em] text-fg-dim",children:[t.empty.text," ",a(Q,{href:t.empty.href,className:"text-accent hover:underline",children:t.empty.linkText})]}):t.display==="swatch"?a("div",{className:"flex flex-wrap gap-2",children:t.values.map(l=>{const p=l.value===t.chosen;return n("button",{type:"button",onClick:()=>r(t.key,l.value),"aria-pressed":p,className:["relative flex max-w-full items-center gap-3 border-2 px-3 py-3 text-left transition-colors",p?"border-accent outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 hover:border-accent"].join(" "),style:p?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[p&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block h-5 w-5 shrink-0 rounded-full border border-fg-dim",style:{background:l.swatch}}),a("span",{className:"block min-w-0 break-words font-mono text-[length:var(--size-label,12px)] font-bold uppercase tracking-[0.18em] text-fg",children:l.label})]},l.value)})}):a("div",{className:"flex flex-wrap gap-1.5",children:t.values.map(l=>{const p=l.value===t.chosen;return n("button",{type:"button",onClick:()=>r(t.key,l.value),"aria-pressed":p,className:["relative cursor-pointer border-2 px-4 py-3 text-left font-mono uppercase transition-colors",p?"border-accent text-fg outline outline-1 outline-accent -outline-offset-1":"border-fg-dim/50 text-fg hover:border-accent"].join(" "),style:p?{background:"color-mix(in oklab, var(--accent) 14%, transparent)"}:void 0,children:[p&&a("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),a("span",{className:"block text-[length:var(--size-label,14px)] tracking-[0.18em]",children:l.label}),l.note&&a("span",{className:"mt-1 block text-[length:var(--size-label,11px)] tracking-[0.12em] text-fg-dim",children:l.note})]},l.value)})})]})}function ot({slug:t,name:r}){const{has:d,toggle:s}=Ce(),c=d(t);return a("button",{type:"button",title:c?"Saved":"Save","aria-label":c?`Remove ${r} from wishlist`:`Save ${r} to wishlist`,"aria-pressed":c,onClick:()=>s(t),className:["h-12 w-12 cursor-pointer border-2 bg-transparent transition-colors",c?"border-accent text-accent":"border-fg-dim/50 text-fg hover:border-accent hover:text-accent"].join(" "),children:c?"♥":"♡"})}function st({partNumbers:t,productSlug:r}){const[d,s]=ye(""),{status:c,submit:l,reset:p}=Le();function w(){l({partNumbers:t,email:d,productSlug:r})}return c==="sent"?a("p",{className:"-mt-1 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.18em] text-accent",children:"We'll email you when it's back."}):a(Te,{className:"-mt-1",email:d,onEmailChange:s,status:c,onResetVerdict:p,onSubmit:w,inputAriaLabel:"Email for the back-in-stock alert",submitLabel:"Notify me when back",buttonClassName:"cursor-pointer whitespace-nowrap border-2 border-btn px-4 font-mono text-[length:var(--size-label,11px)] font-bold uppercase tracking-[0.22em] text-btn transition-colors hover:bg-btn hover:text-btn-ink disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent disabled:hover:text-btn",errorMessage:"Couldn't save that — please try again."})}export{lt as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,Fragment as a,jsxs as e}from"react/jsx-runtime";import r,{LightboxClose as l}from"./Lightbox.js";import{sizedImage as c}from"efficient-web-builder/format/lib/sized-image";const m="92vw";function n({item:o,onClose:s}){return t(r,{open:!!o,onClose:s,label:o?.alt??"",className:"flex cursor-zoom-out items-center justify-center bg-overlay-scrim/90 p-6 backdrop-blur-sm max-[720px]:p-3",children:o&&e(a,{children:[t("img",{...c(o.src,{fallbackWidth:1920}),sizes:m,alt:o.alt,className:"block max-h-[92vh] max-w-[92vw] cursor-zoom-out object-contain"}),t(l,{}),t("span",{className:"absolute bottom-5 left-5 font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:o.alt})]})})}export{n as default};
1
+ "use client";import{jsx as t,Fragment as e,jsxs as a}from"react/jsx-runtime";import r,{LightboxClose as l}from"./Lightbox.js";import{sizedImage as c}from"efficient-web-builder/format/lib/sized-image";const n="92vw";function m({item:o,onClose:s}){return t(r,{open:!!o,onClose:s,label:o?.alt??"",className:"flex cursor-zoom-out items-center justify-center p-6 max-[720px]:p-3",children:o&&a(e,{children:[t("img",{...c(o.src,{fallbackWidth:1920}),sizes:n,alt:o.alt,className:"block max-h-[92vh] max-w-[92vw] cursor-zoom-out object-contain"}),t(l,{}),t("span",{className:"absolute bottom-5 left-5 font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:o.alt})]})})}export{m as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as E,jsxs as r}from"react/jsx-runtime";import{useState as a}from"react";import{products as _}from"../lib/api/index.js";import j from"efficient-web-builder/render/components/SectionEyebrow";import l,{FieldCaption as q}from"./WebFormField.js";import{renderHeadline as z}from"efficient-web-builder/render/components/goldPhrases";const s="w-full border-2 border-line bg-bg px-4 py-4 font-display text-[17px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent",A="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] py-[84px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]",M="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] pt-0 pb-[84px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]";function T({eyebrow:p,title:u,designCode:x,omitHead:d=!1,editing:g=!1}={}){const[f,w]=a(""),[o,N]=a(""),[i,y]=a(0),[m,S]=a(""),[h,R]=a(""),[c,b]=a(!1),[k,C]=a(!1),[v,n]=a(null);async function F(t){if(t.preventDefault(),!(g||c)){if(i<1){n("Choose a star rating.");return}b(!0),n(null);try{await _.submitReview({authorName:f.trim(),...o.trim()?{email:o.trim()}:{},rating:i,...m.trim()?{title:m.trim()}:{},body:h.trim(),...x?.trim()?{designCode:x.trim()}:{}}),C(!0)}catch{n("Something went wrong — your review wasn't sent. Please try again.")}finally{b(!1)}}}return e("section",{className:"relative z-[2] border-t border-line bg-surface",children:r("div",{className:d?M:A,children:[d?null:r(E,{children:[(p??"").trim()&&e(j,{text:p??"",scaled:!1,className:"mb-4 block"}),(u??"").trim()&&e("h2",{className:"mb-12 font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-none tracking-[-0.02em] text-fg max-[800px]:mb-8 max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:z(u??"",!1)})]}),k?e("p",{role:"status",className:"max-w-[560px] font-serif text-[19px] italic leading-[1.6] text-fg-dim",children:"Thanks — your review will appear once approved."}):r("form",{className:"flex max-w-[720px] flex-col gap-5",onSubmit:F,children:[r("div",{className:"grid grid-cols-2 gap-3 max-[640px]:grid-cols-1",children:[e(l,{label:"Name",required:!0,children:e("input",{type:"text",required:!0,value:f,onChange:t=>w(t.target.value),className:s})}),e(l,{label:"Email — never shown publicly",children:e("input",{type:"email",value:o,onChange:t=>N(t.target.value),className:s})})]}),r("div",{className:"flex flex-col gap-2",children:[e(q,{required:!0,children:"Rating"}),e("div",{role:"group","aria-label":"Rating",className:"flex gap-1",children:[1,2,3,4,5].map(t=>e("button",{type:"button","aria-pressed":i>=t,"aria-label":`${t} star${t===1?"":"s"}`,onClick:()=>{y(t),n(null)},className:["cursor-pointer text-[30px] leading-none transition-colors",i>=t?"text-accent":"text-fg-dim/30 hover:text-fg-dim"].join(" "),children:"★"},t))})]}),e(l,{label:"Review title (optional)",children:e("input",{type:"text",value:m,onChange:t=>S(t.target.value),className:s})}),e(l,{label:"Your review",required:!0,children:e("textarea",{required:!0,rows:5,value:h,onChange:t=>R(t.target.value),className:s+" resize-y"})}),v&&e("p",{role:"alert",className:"font-mono text-[12px] uppercase tracking-[0.18em] text-alert",children:v}),e("button",{type:g?"button":"submit",disabled:c,className:"cursor-pointer self-start bg-btn px-8 py-4 font-mono text-[14px] uppercase tracking-[0.32em] text-btn-ink transition-colors hover:bg-fg hover:text-bg disabled:cursor-wait disabled:opacity-60",children:c?"Sending…":"Submit review →"})]})]})})}export{T as default};
1
+ "use client";import{jsx as e,Fragment as _,jsxs as r}from"react/jsx-runtime";import{useState as a}from"react";import{products as k}from"../lib/api/index.js";import j from"efficient-web-builder/render/components/SectionEyebrow";import n,{FieldCaption as q}from"./WebFormField.js";import{renderHeadline as z}from"efficient-web-builder/render/components/goldPhrases";import{FIELD_INPUT_CLASS as l}from"../lib/field-input.js";const A="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] py-[84px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]",I="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] pt-0 pb-[84px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]";function M({eyebrow:p,title:u,designCode:x,omitHead:d=!1,editing:g=!1}={}){const[f,N]=a(""),[o,w]=a(""),[i,y]=a(0),[m,S]=a(""),[h,F]=a(""),[c,v]=a(!1),[R,C]=a(!1),[b,s]=a(null);async function E(t){if(t.preventDefault(),!(g||c)){if(i<1){s("Choose a star rating.");return}v(!0),s(null);try{await k.submitReview({authorName:f.trim(),...o.trim()?{email:o.trim()}:{},rating:i,...m.trim()?{title:m.trim()}:{},body:h.trim(),...x?.trim()?{designCode:x.trim()}:{}}),C(!0)}catch{s("Something went wrong — your review wasn't sent. Please try again.")}finally{v(!1)}}}return e("section",{className:"relative z-[2] border-t border-line bg-surface",children:r("div",{className:d?I:A,children:[d?null:r(_,{children:[(p??"").trim()&&e(j,{text:p??"",scaled:!1,className:"mb-4 block"}),(u??"").trim()&&e("h2",{className:"mb-12 font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-none tracking-[-0.02em] text-fg max-[800px]:mb-8 max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:z(u??"",!1)})]}),R?e("p",{role:"status",className:"max-w-[560px] font-serif text-[19px] italic leading-[1.6] text-fg-dim",children:"Thanks — your review will appear once approved."}):r("form",{className:"flex max-w-[720px] flex-col gap-5",onSubmit:E,children:[r("div",{className:"grid grid-cols-2 gap-3 max-[640px]:grid-cols-1",children:[e(n,{label:"Name",required:!0,children:e("input",{type:"text",required:!0,value:f,onChange:t=>N(t.target.value),className:l})}),e(n,{label:"Email — never shown publicly",children:e("input",{type:"email",value:o,onChange:t=>w(t.target.value),className:l})})]}),r("div",{className:"flex flex-col gap-2",children:[e(q,{required:!0,children:"Rating"}),e("div",{role:"group","aria-label":"Rating",className:"flex gap-1",children:[1,2,3,4,5].map(t=>e("button",{type:"button","aria-pressed":i>=t,"aria-label":`${t} star${t===1?"":"s"}`,onClick:()=>{y(t),s(null)},className:["cursor-pointer text-[30px] leading-none transition-colors",i>=t?"text-accent":"text-fg-dim/30 hover:text-fg-dim"].join(" "),children:"★"},t))})]}),e(n,{label:"Review title (optional)",children:e("input",{type:"text",value:m,onChange:t=>S(t.target.value),className:l})}),e(n,{label:"Your review",required:!0,children:e("textarea",{required:!0,rows:5,value:h,onChange:t=>F(t.target.value),className:l+" resize-y"})}),b&&e("p",{role:"alert",className:"font-mono text-[12px] uppercase tracking-[0.18em] text-alert",children:b}),e("button",{type:g?"button":"submit",disabled:c,className:"cursor-pointer self-start bg-btn px-8 py-4 font-mono text-[14px] uppercase tracking-[0.32em] text-btn-ink transition-colors hover:bg-fg hover:text-bg disabled:cursor-wait disabled:opacity-60",children:c?"Sending…":"Submit review →"})]})]})})}export{M as default};
@@ -9,10 +9,11 @@ export interface SpecTableProps {
9
9
  title?: string;
10
10
  description?: string;
11
11
  rows?: SpecRow[];
12
+ builtInLabels?: boolean;
12
13
  diagram?: SpecDiagram | null;
13
14
  editing?: boolean;
14
15
  nodeId?: string;
15
16
  omitHead?: boolean;
16
17
  capped?: boolean;
17
18
  }
18
- export default function SpecTable({ num, title, description, rows, diagram, editing, omitHead, nodeId, capped, }: SpecTableProps): import("react").JSX.Element;
19
+ export default function SpecTable({ num, title, description, rows, builtInLabels, diagram, editing, omitHead, nodeId, capped, }: SpecTableProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- "use client";import{Fragment as y,jsx as e,jsxs as r}from"react/jsx-runtime";import L from"./SectionBand.js";import{useId as $,useState as z}from"react";import E from"efficient-web-builder/render/components/SectionHeader";import I from"./WheelSvg.js";import{renderGold as b,renderHeadline as T}from"efficient-web-builder/render/components/goldPhrases";import{inchLabel as v}from"../lib/wheels/spec-format.js";import D from"./DimensionArrowMarkers.js";import _ from"./SpecTablePartBridge.js";import{SPEC_REGION_ATTR as j}from"efficient-web-builder/format/lib/sections/spec-table-regions";import{say as N}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as V}from"efficient-web-builder/format/lib/sized-image";const W="(max-width: 1100px) 80vw, 290px",d={labelSmall:"text-[length:var(--size-label,11px)]",label:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,14px)]"};function t(l,a){return l?{[j]:a}:{}}function B({editing:l,nodeId:a,children:i}){return!l||!a?e(y,{children:i}):e(_,{nodeId:a,children:i})}function S({row:l,topBorder:a,editing:i}){return r("div",{className:`flex items-baseline justify-between gap-6 py-4 font-mono ${d.labelLarge} tracking-[0.05em] ${a?"border-t border-line":""}`,children:[e("span",{...t(i,"rowLabel"),className:"uppercase text-fg-dim",children:l.label}),e("span",{...t(i,"rowValue"),className:`text-right ${l.accent?"text-accent":"text-fg"}`,children:l.value})]})}function R({diagram:l,editing:a}){const[i,x]=z(!1),n=`spec-${$().replace(/:/g,"")}`,{wheelName:m,imageSrc:o,diameter:g,width:h,offset:p,holes:f,pcd:s,spokes:c,mesh:u,bore:k}=l,w=!!o&&!i;return r("div",{className:"sf-card bg-surface p-6 max-[1100px]:mt-8",children:[e("div",{...t(a,"diagramTitle"),className:`mb-3 font-mono ${d.label} uppercase tracking-[0.25em] text-fg-dim`,children:"Wheel Dimension Diagram"}),r("div",{className:"relative flex aspect-square items-center justify-center",children:[r("svg",{viewBox:"0 0 320 320",className:"absolute inset-0 h-full w-full text-fg-dim",fill:"none",stroke:"currentColor",children:[e("line",{x1:40,y1:20,x2:280,y2:20,strokeWidth:1,markerStart:`url(#${n}-L)`,markerEnd:`url(#${n}-R)`}),e("line",{x1:40,y1:15,x2:40,y2:25,strokeWidth:1}),e("line",{x1:280,y1:15,x2:280,y2:25,strokeWidth:1}),e(D,{id:n})]}),w?e("img",{...V(o,{fallbackWidth:960}),sizes:W,alt:`${m} — face`,onError:()=>x(!0),loading:"lazy",className:"relative z-[1] block h-[80%] w-[80%] object-contain"}):e(I,{spokes:c,mesh:u,className:"relative z-[1] block h-[72%] w-[72%] text-accent"}),r("span",{...t(a,"diagramCallout"),className:`absolute top-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-accent`,children:["⌀ ",v(g)]}),r("span",{...t(a,"diagramCallout"),className:`absolute bottom-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-fg`,children:["WIDTH ",v(h)]})]}),r("div",{className:`mt-4 grid grid-cols-5 gap-3 font-mono ${d.labelSmall} uppercase tracking-[0.2em] text-fg-dim max-[480px]:grid-cols-3`,children:[r("div",{children:[e("div",{...t(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Holes"}),e("div",{...t(a,"diagramStatValue"),className:"mt-1 text-fg",children:f})]}),r("div",{children:[e("div",{...t(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"PCD"}),e("div",{...t(a,"diagramStatValue"),className:"mt-1 text-fg",children:s})]}),r("div",{children:[e("div",{...t(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Spokes"}),r("div",{...t(a,"diagramStatValue"),className:"mt-1 text-fg",children:[c,u?" + Mesh":""]})]}),r("div",{children:[e("div",{...t(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Bore"}),e("div",{...t(a,"diagramStatValue"),className:"mt-1 text-fg",children:k})]}),r("div",{children:[e("div",{...t(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"ET"}),e("div",{...t(a,"diagramStatValue"),className:"mt-1 text-accent",children:p})]})]})]})}function C({num:l,title:a,description:i,rows:x,diagram:n,editing:m=!1,omitHead:o=!1,nodeId:g,capped:h=!0}){const p=(x??[]).filter(s=>(s?.label??"").trim()||(s?.value??"").trim()),f=p.length>0?p:m?[{label:N("Label"),value:N("Value")}]:[];return e(L,{className:o?"border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20":"border-b border-line py-[120px] max-[1100px]:py-20",capped:h,children:r(B,{editing:m,nodeId:g,children:[o?null:e(E,{num:l?b(l):void 0,title:a?T(a,!1):void 0,description:i?b(i):void 0,accent:!0}),n?r("div",{className:"grid grid-cols-[1fr_400px] gap-12 max-[1100px]:grid-cols-1",children:[e("div",{children:f.map((s,c)=>e(S,{row:s,topBorder:c>0,editing:m},c))}),e(R,{diagram:n,editing:m})]}):e("div",{className:"grid grid-cols-2 gap-x-16 max-[900px]:grid-cols-1",children:f.map((s,c)=>e(S,{row:s,topBorder:!0,editing:m},c))})]})})}export{C as default};
1
+ "use client";import{Fragment as y,jsx as e,jsxs as l}from"react/jsx-runtime";import L from"./SectionBand.js";import{useScopeClass as E}from"../lib/use-scope-class.js";import{useState as z}from"react";import T from"efficient-web-builder/render/components/SectionHeader";import $ from"./WheelSvg.js";import{renderGold as v,renderHeadline as I}from"efficient-web-builder/render/components/goldPhrases";import{inchLabel as S}from"../lib/wheels/spec-format.js";import D from"./DimensionArrowMarkers.js";import _ from"./SpecTablePartBridge.js";import{SPEC_REGION_ATTR as j}from"efficient-web-builder/format/lib/sections/spec-table-regions";import{say as N}from"efficient-web-builder/format/lib/editor-words";import{useEnglish as V}from"./EnglishVariant.js";import{sizedImage as W}from"efficient-web-builder/format/lib/sized-image";const B="(max-width: 1100px) 80vw, 290px",d={labelSmall:"text-[length:var(--size-label,11px)]",label:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,14px)]"};function r(i,a){return i?{[j]:a}:{}}function C({editing:i,nodeId:a,children:s}){return!i||!a?e(y,{children:s}):e(_,{nodeId:a,children:s})}function k({row:i,topBorder:a,editing:s}){return l("div",{className:`flex items-baseline justify-between gap-6 py-4 font-mono ${d.labelLarge} tracking-[0.05em] ${a?"border-t border-line":""}`,children:[e("span",{...r(s,"rowLabel"),className:"uppercase text-fg-dim",children:i.label}),e("span",{...r(s,"rowValue"),className:`text-right ${i.accent?"text-accent":"text-fg"}`,children:i.value})]})}function R({diagram:i,editing:a}){const[s,g]=z(!1),n=E("spec"),{wheelName:p,imageSrc:m,diameter:f,width:h,offset:u,holes:b,pcd:x,spokes:o,mesh:t,bore:c}=i,w=!!m&&!s;return l("div",{className:"sf-card bg-surface p-6 max-[1100px]:mt-8",children:[e("div",{...r(a,"diagramTitle"),className:`mb-3 font-mono ${d.label} uppercase tracking-[0.25em] text-fg-dim`,children:"Wheel Dimension Diagram"}),l("div",{className:"relative flex aspect-square items-center justify-center",children:[l("svg",{viewBox:"0 0 320 320",className:"absolute inset-0 h-full w-full text-fg-dim",fill:"none",stroke:"currentColor",children:[e("line",{x1:40,y1:20,x2:280,y2:20,strokeWidth:1,markerStart:`url(#${n}-L)`,markerEnd:`url(#${n}-R)`}),e("line",{x1:40,y1:15,x2:40,y2:25,strokeWidth:1}),e("line",{x1:280,y1:15,x2:280,y2:25,strokeWidth:1}),e(D,{id:n})]}),w?e("img",{...W(m,{fallbackWidth:960}),sizes:B,alt:`${p} — face`,onError:()=>g(!0),loading:"lazy",className:"relative z-[1] block h-[80%] w-[80%] object-contain"}):e($,{spokes:o,mesh:t,className:"relative z-[1] block h-[72%] w-[72%] text-accent"}),l("span",{...r(a,"diagramCallout"),className:`absolute top-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-accent`,children:["⌀ ",S(f)]}),l("span",{...r(a,"diagramCallout"),className:`absolute bottom-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-fg`,children:["WIDTH ",S(h)]})]}),l("div",{className:`mt-4 grid grid-cols-5 gap-3 font-mono ${d.labelSmall} uppercase tracking-[0.2em] text-fg-dim max-[480px]:grid-cols-3`,children:[l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Holes"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:b})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"PCD"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:x})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Spokes"}),l("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:[o,t?" + Mesh":""]})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Bore"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:c})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"ET"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-accent",children:u})]})]})]})}function A({num:i,title:a,description:s,rows:g,builtInLabels:n=!1,diagram:p,editing:m=!1,omitHead:f=!1,nodeId:h,capped:u=!0}){const b=V(),x=(g??[]).filter(t=>(t?.label??"").trim()||(t?.value??"").trim()).map(t=>n&&t.label?{...t,label:b(t.label)}:t),o=x.length>0?x:m?[{label:N("Label"),value:N("Value")}]:[];return e(L,{className:f?"border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20":"border-b border-line py-[120px] max-[1100px]:py-20",capped:u,children:l(C,{editing:m,nodeId:h,children:[f?null:e(T,{num:i?v(i):void 0,title:a?I(a,!1):void 0,description:s?v(s):void 0,accent:!0}),p?l("div",{className:"grid grid-cols-[1fr_400px] gap-12 max-[1100px]:grid-cols-1",children:[e("div",{children:o.map((t,c)=>e(k,{row:t,topBorder:c>0,editing:m},c))}),e(R,{diagram:p,editing:m})]}):e("div",{className:"grid grid-cols-2 gap-x-16 max-[900px]:grid-cols-1",children:o.map((t,c)=>e(k,{row:t,topBorder:!0,editing:m},c))})]})})}export{A as default};
@@ -1,7 +1,7 @@
1
- "use client";import{jsx as r,jsxs as t,Fragment as te}from"react/jsx-runtime";import{useCallback as oe,useEffect as u,useRef as R,useState as d}from"react";import{ApiError as ie}from"../lib/api/index.js";import{sectionCornerStyle as ne}from"efficient-web-builder/format/lib/content/section-corners";import{nestedAccentValue as se,sectionThemeWrap as le}from"efficient-web-builder/format/lib/content/section-surface";import{SUBSCRIBE_POPUP_DEFAULTS as pe}from"efficient-web-builder/format/lib/content/subscribe";import{NEWSLETTER_SOURCE as me}from"../lib/newsletter-signup.js";import{popupKindStyle as ce}from"../lib/popup/text-kind-style.js";import{FormBody as de}from"./FormBlock.js";import{useBoundForm as fe}from"./formSubmission.js";import D from"efficient-web-builder/render/components/SectionEyebrow";import O,{FieldCaption as U}from"./WebFormField.js";import{renderGold as i,renderHeadline as k}from"efficient-web-builder/render/components/goldPhrases";import{useNewsletterSignup as xe}from"./useNewsletterSignup.js";import{useSubscribePopup as ue}from"./SubscribePopupContext.js";import{useModalDismiss as be}from"./useModalDismiss.js";const H={eyebrow:"[&>span]:text-[length:var(--pp-eyebrow-size,var(--size-label,12px))]",formEyebrow:"[&>span]:text-[length:var(--pp-formeyebrow-size,var(--size-label,13px))]"},ge=50,b="font-[family-name:var(--pp-fieldlabel-font,var(--font-mono))] text-[length:var(--pp-fieldlabel-size,12px)]";function he(e){const n=le({sectionAccent:se(e.sectionAccent)}),l=ne(e.sectionCorners,e.sectionCornerSides);return{className:n?.className??"",style:{...n?.style??{},...l??{},...ce(e.textStyles)}}}function ve({content:e,open:n=!0,onClose:l,onSent:f,inline:o=!1,prefillEmail:c="",source:g=me.popup,mode:h="chosen",form:V}){const v=h==="chosen"?e.formSlug:"",y=fe(v||void 0,o?void 0:V??null),W=!!v&&!!y,[w,Y]=d(""),[S,z]=d(""),[E,M]=d(()=>new Set(e.interests.slice(0,1))),[_,G]=d(e.frequencies[0]??""),{status:m,error:C,submit:K,reset:j}=xe({source:g,dryRun:o}),F=m==="sending",L=m==="invalid"?e.emailInvalidText:m==="error"?C instanceof ie?C.message:e.submitErrorText:null,[X,Z]=d(""),P=R(null),T=R(null);u(()=>{n&&j()},[n,j]),u(()=>{m==="sent"&&!o&&f?.()},[m]);const J=oe(()=>l?.(),[l]);if(be({active:!o&&n,onDismiss:J}),u(()=>{if(o||!n)return;const a=window.setTimeout(()=>T.current?.focus(),ge);return()=>window.clearTimeout(a)},[o,n]),u(()=>{!n||!c||z(c)},[n,c]),!o&&!n)return null;function Q(a){M(s=>{const p=new Set(s);return p.has(a)?p.delete(a):p.add(a),p})}function ee(a){a.target===P.current&&l?.()}function re(a){a.preventDefault();const s=S.trim().toLowerCase();Z(s),K({email:s,firstName:w,interests:[...E],frequency:_})}const ae=e.successBody.replace(/\{email\}/g,X).replace(/\{issue\}/g,e.issueNumber),B=he(e),N=e.formSide==="left",q=t("div",{className:"flex flex-wrap items-center justify-between gap-5 uppercase tracking-[0.18em] text-fg-dim",children:[t("span",{className:"flex items-center gap-2 font-[family-name:var(--pp-fineprint-font,var(--font-mono))] text-[length:var(--pp-fineprint-size,12px)]",children:[r("span",{className:"block h-1.5 w-1.5 rounded-full bg-accent"}),i(e.finePrint)]}),!o&&r("button",{type:"button",onClick:l,className:"font-[family-name:var(--pp-dismiss-font,var(--font-mono))] text-[length:var(--pp-dismiss-size,12px)] uppercase tracking-[0.18em] text-fg-dim underline underline-offset-[3px] transition-colors hover:text-fg",children:i(e.dismissText)})]}),$=t(te,{children:[r("span",{className:`contents [&>span]:font-[family-name:var(--pp-formeyebrow-font,var(--font-mono))] ${H.formEyebrow}`,children:r(D,{text:e.formLabel,scaled:!1,className:"mb-5"})}),r("h2",{id:"subscribe-modal-title",className:"font-[family-name:var(--pp-formheading-font,var(--font-display))] text-[length:var(--pp-formheading-size,34px)] font-medium uppercase leading-none tracking-[-0.025em] [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.02em]",children:k(e.formHeading)}),r("p",{className:"mt-4 font-[family-name:var(--pp-formintro-font,var(--font-serif))] text-[length:var(--pp-formintro-size,17px)] italic leading-[1.55] text-fg-dim",children:i(e.formIntro,!0)})]}),A="px-12 py-12 max-[880px]:px-8 max-[880px]:py-8";let x;W&&y?x=t("div",{className:`relative flex min-h-[560px] flex-col max-[880px]:min-h-0 ${A}`,children:[$,r("div",{className:"mt-8",children:r(de,{form:y,formSlug:v,editing:o,onSent:f})}),r("div",{className:"mt-auto pt-8",children:q})]}):m!=="sent"?x=t("form",{onSubmit:re,noValidate:!0,className:`relative flex min-h-[560px] flex-col max-[880px]:min-h-0 ${A}`,children:[$,t("div",{className:"mt-8 flex flex-col gap-5",children:[r(O,{label:i(e.firstNameLabel),required:!0,labelFace:b,children:r("input",{type:"text",value:w,onChange:a=>Y(a.target.value),placeholder:e.firstNamePlaceholder,required:!0,className:"border border-line bg-surface px-4 py-4 font-display text-[15px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:tracking-[0.04em] placeholder:text-fg-dim focus:border-accent"})}),r(O,{label:i(e.emailLabel),required:!0,labelFace:b,children:r("input",{type:"email",value:S,onChange:a=>z(a.target.value),placeholder:e.emailPlaceholder,required:!0,className:"border border-line bg-surface px-4 py-4 font-display text-[15px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:tracking-[0.04em] placeholder:text-fg-dim focus:border-accent"})}),t("div",{className:"mt-2 flex flex-col gap-3",children:[r(U,{labelFace:b,children:i(e.interestsLabel)}),r("div",{className:"flex flex-wrap gap-2",children:e.interests.map((a,s)=>{const p=E.has(a);return r("button",{type:"button",onClick:()=>Q(a),"aria-pressed":p,className:["select-none border px-4 py-3 font-[family-name:var(--pp-option-font,var(--font-mono))] text-[length:var(--pp-option-size,12px)] uppercase tracking-[0.22em] transition-all",p?"border-accent bg-accent text-bg":"border-line text-fg-dim hover:text-fg"].join(" "),children:a},`${a}-${s}`)})})]}),e.frequencies.length>0&&t("div",{className:"mt-2 flex flex-col gap-3",children:[r(U,{labelFace:b,children:i(e.frequencyLabel)}),r("div",{className:"flex border border-line",children:e.frequencies.map((a,s)=>{const p=_===a;return r("button",{type:"button",onClick:()=>G(a),"aria-pressed":p,className:["flex-1 px-3 py-4 font-[family-name:var(--pp-option-font,var(--font-mono))] text-[length:var(--pp-option-size,12px)] uppercase tracking-[0.24em] transition-all",s<e.frequencies.length-1?"border-r border-line":"",p?"bg-accent text-bg":"text-fg-dim hover:text-fg"].join(" "),children:a},`${a}-${s}`)})})]})]}),t("div",{className:"mt-auto flex flex-col gap-4 pt-8",children:[L&&r("p",{role:"alert",className:"border border-red-300 bg-red-50 px-4 py-3 font-mono text-[12px] uppercase tracking-[0.18em] text-red-700",children:L}),t("button",{type:"submit",disabled:F,className:"group flex items-center justify-between gap-5 border border-btn bg-btn px-6 py-5 font-mono text-[14px] uppercase tracking-[0.3em] text-btn-ink transition-colors hover:border-fg hover:bg-fg disabled:cursor-wait disabled:opacity-60 disabled:hover:border-btn disabled:hover:bg-btn",children:[r("span",{children:e.submitText}),r("span",{className:"transition-transform group-hover:translate-x-[4px]",children:F?"…":"→"})]}),q]})]}):x=t("div",{className:"flex min-h-[560px] flex-col justify-center gap-6 px-12 py-12 max-[880px]:min-h-0 max-[880px]:px-8 max-[880px]:py-8",style:{animation:"subscribe-fade 0.25s ease"},children:[r("div",{className:"flex h-16 w-16 items-center justify-center border border-accent font-display text-[32px] text-accent",children:"✓"}),r("h3",{className:"font-[family-name:var(--pp-doneheading-font,var(--font-display))] text-[length:var(--pp-doneheading-size,38px)] font-medium uppercase leading-none tracking-[-0.025em] [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.02em]",children:k(e.successHeading)}),r("p",{className:"max-w-[440px] font-[family-name:var(--pp-donebody-font,var(--font-serif))] text-[length:var(--pp-donebody-size,18px)] italic leading-[1.55] text-fg-dim",children:i(ae,!0)}),!o&&r("button",{type:"button",onClick:l,className:"self-start border border-line px-6 py-5 font-mono text-[14px] uppercase tracking-[0.3em] text-fg transition-colors hover:border-accent hover:text-accent",children:i(e.keepBrowsingText)})]});const I=t("div",{className:`relative w-[min(1100px,100%)] overflow-hidden border border-line bg-bg [border-radius:var(--sf-section-radius,0px)] max-[880px]:border-x-0 max-[880px]:border-b-0 ${B.className}`.trim(),style:{...B.style,background:"var(--bg)",color:"var(--fg)",boxShadow:o?"0 30px 80px -30px rgba(0,0,0,0.5)":"0 60px 120px -20px rgba(0,0,0,0.7)",animation:o?void 0:"subscribe-rise 0.35s cubic-bezier(.2,.7,.2,1)"},children:[!o&&r("button",{ref:T,type:"button",onClick:l,"aria-label":"Close popup",className:"absolute right-[18px] top-[18px] z-[5] flex h-[38px] w-[38px] items-center justify-center border border-line font-mono text-[14px] text-fg-dim transition-colors hover:border-accent hover:text-fg max-[880px]:right-3 max-[880px]:top-3 max-[880px]:h-11 max-[880px]:w-11",style:{background:"color-mix(in oklab, var(--bg) 85%, transparent)"},children:"✕"}),t("div",{className:["grid max-h-[calc(100vh-48px)] overflow-hidden max-[880px]:max-h-[88dvh] max-[880px]:grid-cols-1 max-[880px]:overflow-auto",N?"grid-cols-[1fr_1.05fr]":"grid-cols-[1.05fr_1fr]"].join(" "),children:[t("aside",{className:["relative flex min-h-[560px] flex-col justify-between overflow-hidden border-line px-[var(--sf-site-gutter,40px)] py-12 max-[880px]:min-h-[380px] max-[880px]:border-r-0 max-[880px]:border-l-0 max-[880px]:border-b max-[880px]:px-8 max-[880px]:py-8",N?"order-2 border-l max-[880px]:order-none":"border-r",e.valuePanelOnPhone?"":"max-[880px]:hidden"].join(" "),style:{background:"var(--subscribe-panel-bg)"},children:[r("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:"repeating-linear-gradient(0deg, transparent 0 28px, color-mix(in oklab, var(--accent) 4%, transparent) 28px 29px), repeating-linear-gradient(90deg, transparent 0 28px, color-mix(in oklab, var(--accent) 3%, transparent) 28px 29px)"}}),t("div",{"aria-hidden":!0,className:"pointer-events-none absolute -right-[120px] -bottom-[120px] z-[1] h-[520px] w-[520px] rounded-full border opacity-50 max-[880px]:-right-[100px] max-[880px]:-bottom-[100px] max-[880px]:h-[340px] max-[880px]:w-[340px]",style:{borderColor:"color-mix(in oklab, var(--accent) 22%, transparent)"},children:[r("div",{className:"absolute inset-[60px] rounded-full border",style:{borderColor:"color-mix(in oklab, var(--accent) 18%, transparent)"}}),r("div",{className:"absolute inset-[140px] rounded-full border",style:{borderColor:"color-mix(in oklab, var(--accent) 14%, transparent)"}})]}),t("div",{className:["relative z-[2] flex items-start justify-between font-[family-name:var(--pp-meta-font,var(--font-mono))] text-[length:var(--pp-meta-size,12px)] uppercase tracking-[0.3em] text-fg-dim",N&&!o?"pr-[52px]":""].join(" "),children:[r("span",{children:i(e.metaLabel)}),(e.issueLabel||e.issueNumber)&&t("span",{children:[i(e.issueLabel)," ",r("strong",{className:"font-normal text-accent",children:e.issueNumber})]})]}),t("div",{className:"relative z-[2] flex flex-col gap-5 py-8",children:[r("span",{className:`contents [&>span]:font-[family-name:var(--pp-eyebrow-font,var(--font-mono))] ${H.eyebrow}`,children:r(D,{text:e.kicker,size:12,scaled:!1})}),r("h2",{className:"font-[family-name:var(--pp-heading-font,var(--font-display))] text-[length:var(--pp-heading-size,clamp(40px,4.8vw,68px))] font-medium uppercase leading-[0.92] tracking-[-0.04em] text-fg [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.03em]",children:k(e.heading)}),r("p",{className:"max-w-[420px] font-[family-name:var(--pp-body-font,var(--font-serif))] text-[length:var(--pp-body-size,18px)] italic leading-[1.5]",style:{color:"color-mix(in oklab, var(--fg) 85%, transparent)"},children:i(e.deck,!0)})]}),e.stats.length>0&&r("div",{className:"relative z-[2] grid grid-cols-2 gap-5 border-t pt-6",style:{borderColor:"color-mix(in oklab, var(--accent) 18%, var(--site-line))"},children:e.stats.map((a,s)=>t("div",{children:[r("div",{className:"mb-2 font-[family-name:var(--pp-statname-font,var(--font-mono))] text-[length:var(--pp-statname-size,11px)] uppercase tracking-[0.24em] text-fg-dim",children:i(a.label)}),r("div",{className:"font-[family-name:var(--pp-statvalue-font,var(--font-display))] text-[length:var(--pp-statvalue-size,22px)] font-medium tracking-[-0.015em] text-fg",children:i(a.value)})]},`${a.label}-${s}`))})]}),x]})]});return o?r("div",{className:"flex w-full justify-center p-6","data-subscribe-preview":!0,children:I}):t("div",{ref:P,onClick:ee,role:"dialog","aria-modal":"true","aria-labelledby":"subscribe-modal-title",className:"fixed inset-0 z-[90] flex items-center justify-center p-6 backdrop-blur-[8px] max-[880px]:items-end max-[880px]:p-0",style:{background:"color-mix(in oklab, var(--bg) 78%, transparent)",animation:"subscribe-fade 0.25s ease"},children:[I,r("style",{children:`
1
+ "use client";import{jsx as r,jsxs as t,Fragment as Q}from"react/jsx-runtime";import{useEffect as u,useRef as ee,useState as d}from"react";import{ApiError as re}from"../lib/api/index.js";import{sectionCornerStyle as ae}from"efficient-web-builder/format/lib/content/section-corners";import{nestedAccentValue as te,sectionThemeWrap as oe}from"efficient-web-builder/format/lib/content/section-surface";import{SUBSCRIBE_POPUP_DEFAULTS as ne}from"efficient-web-builder/format/lib/content/subscribe";import{NEWSLETTER_SOURCE as ie}from"../lib/newsletter-signup.js";import{popupKindStyle as se}from"../lib/popup/text-kind-style.js";import{FormBody as le}from"./FormBlock.js";import{useBoundForm as pe}from"./formSubmission.js";import I from"efficient-web-builder/render/components/SectionEyebrow";import O,{FieldCaption as R}from"./WebFormField.js";import{renderGold as n,renderHeadline as k}from"efficient-web-builder/render/components/goldPhrases";import{useNewsletterSignup as me}from"./useNewsletterSignup.js";import{useSubscribePopup as ce}from"./SubscribePopupContext.js";import de from"./PopupFrame.js";const U={eyebrow:"[&>span]:text-[length:var(--pp-eyebrow-size,var(--size-label,12px))]",formEyebrow:"[&>span]:text-[length:var(--pp-formeyebrow-size,var(--size-label,13px))]"},fe=50,b="font-[family-name:var(--pp-fieldlabel-font,var(--font-mono))] text-[length:var(--pp-fieldlabel-size,12px)]";function xe(e){const i=oe({sectionAccent:te(e.sectionAccent)}),p=ae(e.sectionCorners,e.sectionCornerSides);return{className:i?.className??"",style:{...i?.style??{},...p??{},...se(e.textStyles)}}}function ue({content:e,open:i=!0,onClose:p,onSent:f,inline:o=!1,prefillEmail:c="",source:g=ie.popup,mode:h="chosen",form:D}){const v=h==="chosen"?e.formSlug:"",y=pe(v||void 0,o?void 0:D??null),H=!!v&&!!y,[w,V]=d(""),[S,z]=d(""),[E,W]=d(()=>new Set(e.interests.slice(0,1))),[_,Y]=d(e.frequencies[0]??""),{status:m,error:C,submit:G,reset:F}=me({source:g,dryRun:o}),j=m==="sending",L=m==="invalid"?e.emailInvalidText:m==="error"?C instanceof re?C.message:e.submitErrorText:null,[K,M]=d(""),P=ee(null);if(u(()=>{i&&F()},[i,F]),u(()=>{m==="sent"&&!o&&f?.()},[m]),u(()=>{if(o||!i)return;const a=window.setTimeout(()=>P.current?.focus(),fe);return()=>window.clearTimeout(a)},[o,i]),u(()=>{!i||!c||z(c)},[i,c]),!o&&!i)return null;function X(a){W(s=>{const l=new Set(s);return l.has(a)?l.delete(a):l.add(a),l})}function Z(a){a.preventDefault();const s=S.trim().toLowerCase();M(s),G({email:s,firstName:w,interests:[...E],frequency:_})}const J=e.successBody.replace(/\{email\}/g,K).replace(/\{issue\}/g,e.issueNumber),T=xe(e),N=e.formSide==="left",B=t("div",{className:"flex flex-wrap items-center justify-between gap-5 uppercase tracking-[0.18em] text-fg-dim",children:[t("span",{className:"flex items-center gap-2 font-[family-name:var(--pp-fineprint-font,var(--font-mono))] text-[length:var(--pp-fineprint-size,12px)]",children:[r("span",{className:"block h-1.5 w-1.5 rounded-full bg-accent"}),n(e.finePrint)]}),!o&&r("button",{type:"button",onClick:p,className:"font-[family-name:var(--pp-dismiss-font,var(--font-mono))] text-[length:var(--pp-dismiss-size,12px)] uppercase tracking-[0.18em] text-fg-dim underline underline-offset-[3px] transition-colors hover:text-fg",children:n(e.dismissText)})]}),q=t(Q,{children:[r("span",{className:`contents [&>span]:font-[family-name:var(--pp-formeyebrow-font,var(--font-mono))] ${U.formEyebrow}`,children:r(I,{text:e.formLabel,scaled:!1,className:"mb-5"})}),r("h2",{id:"subscribe-modal-title",className:"font-[family-name:var(--pp-formheading-font,var(--font-display))] text-[length:var(--pp-formheading-size,34px)] font-medium uppercase leading-none tracking-[-0.025em] [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.02em]",children:k(e.formHeading)}),r("p",{className:"mt-4 font-[family-name:var(--pp-formintro-font,var(--font-serif))] text-[length:var(--pp-formintro-size,17px)] italic leading-[1.55] text-fg-dim",children:n(e.formIntro,!0)})]}),$="px-12 py-12 max-[880px]:px-8 max-[880px]:py-8";let x;H&&y?x=t("div",{className:`relative flex min-h-[560px] flex-col max-[880px]:min-h-0 ${$}`,children:[q,r("div",{className:"mt-8",children:r(le,{form:y,formSlug:v,editing:o,onSent:f})}),r("div",{className:"mt-auto pt-8",children:B})]}):m!=="sent"?x=t("form",{onSubmit:Z,noValidate:!0,className:`relative flex min-h-[560px] flex-col max-[880px]:min-h-0 ${$}`,children:[q,t("div",{className:"mt-8 flex flex-col gap-5",children:[r(O,{label:n(e.firstNameLabel),required:!0,labelFace:b,children:r("input",{type:"text",value:w,onChange:a=>V(a.target.value),placeholder:e.firstNamePlaceholder,required:!0,className:"border border-line bg-surface px-4 py-4 font-display text-[15px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:tracking-[0.04em] placeholder:text-fg-dim focus:border-accent"})}),r(O,{label:n(e.emailLabel),required:!0,labelFace:b,children:r("input",{type:"email",value:S,onChange:a=>z(a.target.value),placeholder:e.emailPlaceholder,required:!0,className:"border border-line bg-surface px-4 py-4 font-display text-[15px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:tracking-[0.04em] placeholder:text-fg-dim focus:border-accent"})}),t("div",{className:"mt-2 flex flex-col gap-3",children:[r(R,{labelFace:b,children:n(e.interestsLabel)}),r("div",{className:"flex flex-wrap gap-2",children:e.interests.map((a,s)=>{const l=E.has(a);return r("button",{type:"button",onClick:()=>X(a),"aria-pressed":l,className:["select-none border px-4 py-3 font-[family-name:var(--pp-option-font,var(--font-mono))] text-[length:var(--pp-option-size,12px)] uppercase tracking-[0.22em] transition-all",l?"border-accent bg-accent text-bg":"border-line text-fg-dim hover:text-fg"].join(" "),children:a},`${a}-${s}`)})})]}),e.frequencies.length>0&&t("div",{className:"mt-2 flex flex-col gap-3",children:[r(R,{labelFace:b,children:n(e.frequencyLabel)}),r("div",{className:"flex border border-line",children:e.frequencies.map((a,s)=>{const l=_===a;return r("button",{type:"button",onClick:()=>Y(a),"aria-pressed":l,className:["flex-1 px-3 py-4 font-[family-name:var(--pp-option-font,var(--font-mono))] text-[length:var(--pp-option-size,12px)] uppercase tracking-[0.24em] transition-all",s<e.frequencies.length-1?"border-r border-line":"",l?"bg-accent text-bg":"text-fg-dim hover:text-fg"].join(" "),children:a},`${a}-${s}`)})})]})]}),t("div",{className:"mt-auto flex flex-col gap-4 pt-8",children:[L&&r("p",{role:"alert",className:"border border-red-300 bg-red-50 px-4 py-3 font-mono text-[12px] uppercase tracking-[0.18em] text-red-700",children:L}),t("button",{type:"submit",disabled:j,className:"group flex items-center justify-between gap-5 border border-btn bg-btn px-6 py-5 font-mono text-[14px] uppercase tracking-[0.3em] text-btn-ink transition-colors hover:border-fg hover:bg-fg disabled:cursor-wait disabled:opacity-60 disabled:hover:border-btn disabled:hover:bg-btn",children:[r("span",{children:e.submitText}),r("span",{className:"transition-transform group-hover:translate-x-[4px]",children:j?"…":"→"})]}),B]})]}):x=t("div",{className:"flex min-h-[560px] flex-col justify-center gap-6 px-12 py-12 max-[880px]:min-h-0 max-[880px]:px-8 max-[880px]:py-8",style:{animation:"subscribe-fade 0.25s ease"},children:[r("div",{className:"flex h-16 w-16 items-center justify-center border border-accent font-display text-[32px] text-accent",children:"✓"}),r("h3",{className:"font-[family-name:var(--pp-doneheading-font,var(--font-display))] text-[length:var(--pp-doneheading-size,38px)] font-medium uppercase leading-none tracking-[-0.025em] [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.02em]",children:k(e.successHeading)}),r("p",{className:"max-w-[440px] font-[family-name:var(--pp-donebody-font,var(--font-serif))] text-[length:var(--pp-donebody-size,18px)] italic leading-[1.55] text-fg-dim",children:n(J,!0)}),!o&&r("button",{type:"button",onClick:p,className:"self-start border border-line px-6 py-5 font-mono text-[14px] uppercase tracking-[0.3em] text-fg transition-colors hover:border-accent hover:text-accent",children:n(e.keepBrowsingText)})]});const A=t("div",{className:`relative w-[min(1100px,100%)] overflow-hidden border border-line bg-bg [border-radius:var(--sf-section-radius,0px)] max-[880px]:border-x-0 max-[880px]:border-b-0 ${T.className}`.trim(),style:{...T.style,background:"var(--bg)",color:"var(--fg)",boxShadow:o?"0 30px 80px -30px rgba(0,0,0,0.5)":"0 60px 120px -20px rgba(0,0,0,0.7)",animation:o?void 0:"subscribe-rise 0.35s cubic-bezier(.2,.7,.2,1)"},children:[!o&&r("button",{ref:P,type:"button",onClick:p,"aria-label":"Close popup",className:"absolute right-[18px] top-[18px] z-[5] flex h-[38px] w-[38px] items-center justify-center border border-line font-mono text-[14px] text-fg-dim transition-colors hover:border-accent hover:text-fg max-[880px]:right-3 max-[880px]:top-3 max-[880px]:h-11 max-[880px]:w-11",style:{background:"color-mix(in oklab, var(--bg) 85%, transparent)"},children:"✕"}),t("div",{className:["grid max-h-[calc(100vh-48px)] overflow-hidden max-[880px]:max-h-[88dvh] max-[880px]:grid-cols-1 max-[880px]:overflow-auto",N?"grid-cols-[1fr_1.05fr]":"grid-cols-[1.05fr_1fr]"].join(" "),children:[t("aside",{className:["relative flex min-h-[560px] flex-col justify-between overflow-hidden border-line px-[var(--sf-site-gutter,40px)] py-12 max-[880px]:min-h-[380px] max-[880px]:border-r-0 max-[880px]:border-l-0 max-[880px]:border-b max-[880px]:px-8 max-[880px]:py-8",N?"order-2 border-l max-[880px]:order-none":"border-r",e.valuePanelOnPhone?"":"max-[880px]:hidden"].join(" "),style:{background:"var(--subscribe-panel-bg)"},children:[r("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:"repeating-linear-gradient(0deg, transparent 0 28px, color-mix(in oklab, var(--accent) 4%, transparent) 28px 29px), repeating-linear-gradient(90deg, transparent 0 28px, color-mix(in oklab, var(--accent) 3%, transparent) 28px 29px)"}}),t("div",{"aria-hidden":!0,className:"pointer-events-none absolute -right-[120px] -bottom-[120px] z-[1] h-[520px] w-[520px] rounded-full border opacity-50 max-[880px]:-right-[100px] max-[880px]:-bottom-[100px] max-[880px]:h-[340px] max-[880px]:w-[340px]",style:{borderColor:"color-mix(in oklab, var(--accent) 22%, transparent)"},children:[r("div",{className:"absolute inset-[60px] rounded-full border",style:{borderColor:"color-mix(in oklab, var(--accent) 18%, transparent)"}}),r("div",{className:"absolute inset-[140px] rounded-full border",style:{borderColor:"color-mix(in oklab, var(--accent) 14%, transparent)"}})]}),t("div",{className:["relative z-[2] flex items-start justify-between font-[family-name:var(--pp-meta-font,var(--font-mono))] text-[length:var(--pp-meta-size,12px)] uppercase tracking-[0.3em] text-fg-dim",N&&!o?"pr-[52px]":""].join(" "),children:[r("span",{children:n(e.metaLabel)}),(e.issueLabel||e.issueNumber)&&t("span",{children:[n(e.issueLabel)," ",r("strong",{className:"font-normal text-accent",children:e.issueNumber})]})]}),t("div",{className:"relative z-[2] flex flex-col gap-5 py-8",children:[r("span",{className:`contents [&>span]:font-[family-name:var(--pp-eyebrow-font,var(--font-mono))] ${U.eyebrow}`,children:r(I,{text:e.kicker,size:12,scaled:!1})}),r("h2",{className:"font-[family-name:var(--pp-heading-font,var(--font-display))] text-[length:var(--pp-heading-size,clamp(40px,4.8vw,68px))] font-medium uppercase leading-[0.92] tracking-[-0.04em] text-fg [&_em]:font-serif [&_em]:normal-case [&_em]:tracking-[-0.03em]",children:k(e.heading)}),r("p",{className:"max-w-[420px] font-[family-name:var(--pp-body-font,var(--font-serif))] text-[length:var(--pp-body-size,18px)] italic leading-[1.5]",style:{color:"color-mix(in oklab, var(--fg) 85%, transparent)"},children:n(e.deck,!0)})]}),e.stats.length>0&&r("div",{className:"relative z-[2] grid grid-cols-2 gap-5 border-t pt-6",style:{borderColor:"color-mix(in oklab, var(--accent) 18%, var(--site-line))"},children:e.stats.map((a,s)=>t("div",{children:[r("div",{className:"mb-2 font-[family-name:var(--pp-statname-font,var(--font-mono))] text-[length:var(--pp-statname-size,11px)] uppercase tracking-[0.24em] text-fg-dim",children:n(a.label)}),r("div",{className:"font-[family-name:var(--pp-statvalue-font,var(--font-display))] text-[length:var(--pp-statvalue-size,22px)] font-medium tracking-[-0.015em] text-fg",children:n(a.value)})]},`${a.label}-${s}`))})]}),x]})]});return o?r("div",{className:"flex w-full justify-center p-6","data-subscribe-preview":!0,children:A}):t(de,{site:{blur:8,sheetOnPhone:!0,animation:"subscribe-fade 0.25s ease"},labelledBy:"subscribe-modal-title",open:i,onClose:p,children:[A,r("style",{children:`
2
2
  @keyframes subscribe-fade { from { opacity: 0 } to { opacity: 1 } }
3
3
  @keyframes subscribe-rise {
4
4
  from { transform: translateY(20px); opacity: 0 }
5
5
  to { transform: translateY(0); opacity: 1 }
6
6
  }
7
- `})]})}function ye({content:e,form:n=null}){const{isOpen:l,mode:f,close:o,markSent:c,prefillEmail:g,signupSource:h}=ue();return r(ve,{content:e??pe,open:l,onClose:o,onSent:c,prefillEmail:g,source:h,mode:f,form:n})}export{ve as SubscribePopupView,ye as default};
7
+ `})]})}function be({content:e,form:i=null}){const{isOpen:p,mode:f,close:o,markSent:c,prefillEmail:g,signupSource:h}=ce();return r(ue,{content:e??ne,open:p,onClose:o,onSent:c,prefillEmail:g,source:h,mode:f,form:i})}export{ue as SubscribePopupView,be as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as n,Fragment as h}from"react/jsx-runtime";import{useId as b}from"react";import{TYRE_VIEW_SIZE as k,resolveTreadPattern as P,tyreArcPath as x,tyreBlockPath as $,tyreGeometry as I,tyreProfileFromSize as _,tyreRingPath as m}from"../lib/wheels/tyre-render.js";const c={rib:.2,grooveWall:.16,shoulder:.22,silhouette:.26,relief:[.26,.15,.11],lettering:.1,dishFill:.06,dishEdge:.3,spoke:.3,hubFill:.16,hubEdge:.34},F=[.8,.52,.24],O=.4,R=.88,E=.3,W=5,w=.3,T=.84,S=7,o=r=>Math.round(r*10)/10;function M({size:r,type:a,className:i}){const l=b().replace(/[^a-zA-Z0-9]/g,""),s={tread:`${l}-tread`,wall:`${l}-wall`,rim:`${l}-rim`,shadow:`${l}-shadow`,crown:`${l}-crown`},e=I(_(r)),y=m(e,0,1),p=r?`${r} tyre illustration`:"Tyre illustration";return n("svg",{"data-tyre-placeholder":"",viewBox:`0 0 ${k} ${k}`,role:"img","aria-label":p,fill:"none",className:i??"block h-full w-full",children:[t("title",{children:p}),n("defs",{children:[t(v,{id:s}),t("clipPath",{id:s.crown,children:t("path",{d:y})})]}),t("ellipse",{cx:o(e.cxf+e.dx/2),cy:o(e.cy+e.ry-4),rx:o(e.dx*1.5),ry:16,fill:`url(#${s.shadow})`}),t(G,{g:e,id:s}),t(A,{g:e,id:s}),t("path",{d:y,fill:`url(#${s.tread})`}),t("g",{clipPath:`url(#${s.crown})`,children:P(a).map(f=>t(N,{g:e,column:f},f.f[0]))}),t("path",{d:x(e,0,0,!0),stroke:"currentColor",strokeOpacity:c.shoulder,strokeWidth:1.2}),t("path",{d:x(e,1,1),stroke:"currentColor",strokeOpacity:c.silhouette,strokeWidth:1.4})]})}function N({g:r,column:a}){const[i,l]=a.f;if(!a.blocks)return n(h,{children:[t("path",{d:m(r,i,l),fill:"currentColor",fillOpacity:c.rib}),t("path",{d:x(r,i,1),stroke:"currentColor",strokeOpacity:c.grooveWall,strokeWidth:1})]});const{count:s,gap:e,phase:y=0}=a.blocks,p=1/s,f=[];for(let d=-1;d<=s;d+=1){const u=Math.max((d+y+e/2)*p,0),C=Math.min((d+y+1-e/2)*p,1);C-u>p*.15&&f.push([u,C])}return t(h,{children:f.map(([d,u])=>t("path",{d:$(r,i,l,d,u),fill:"currentColor",fillOpacity:c.rib,stroke:"currentColor",strokeOpacity:c.grooveWall,strokeWidth:1},d))})}function v({id:r}){return n(h,{children:[n("linearGradient",{id:r.tread,x1:"0",y1:"0",x2:"1",y2:"0",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.07}),t("stop",{offset:"0.14",stopColor:"currentColor",stopOpacity:.24}),t("stop",{offset:"0.45",stopColor:"currentColor",stopOpacity:.18}),t("stop",{offset:"0.84",stopColor:"currentColor",stopOpacity:.1}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.05})]}),n("linearGradient",{id:r.wall,x1:"0.15",y1:"0",x2:"0.9",y2:"1",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.28}),t("stop",{offset:"0.45",stopColor:"currentColor",stopOpacity:.17}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.08})]}),n("linearGradient",{id:r.rim,x1:"0.1",y1:"0",x2:"0.9",y2:"1",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.46}),t("stop",{offset:"0.5",stopColor:"currentColor",stopOpacity:.26}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.12})]}),n("radialGradient",{id:r.shadow,children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.22}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:0})]})]})}function G({g:r,id:a}){const i=r.rimRy/r.ry,l=e=>i+(1-i)*e,s=Math.max(6,(r.ry-r.rimRy)*.3);return n(h,{children:[t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx),ry:o(r.ry),fill:`url(#${a.wall})`}),F.map((e,y)=>{const p=l(e);return t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx*p),ry:o(r.ry*p),stroke:"currentColor",strokeOpacity:c.relief[y],strokeWidth:1},e)}),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx*l(O)),ry:o(r.ry*l(O)),stroke:"currentColor",strokeOpacity:c.lettering,strokeWidth:o(s)})]})}function A({g:r,id:a}){const i=Array.from({length:W},(l,s)=>{const e=(s*(360/W)-90)*Math.PI/180;return{x1:r.cxf+r.rimRx*w*Math.cos(e),y1:r.cy+r.rimRy*w*Math.sin(e),x2:r.cxf+r.rimRx*T*Math.cos(e),y2:r.cy+r.rimRy*T*Math.sin(e)}});return n(h,{children:[t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx),ry:o(r.rimRy),fill:`url(#${a.rim})`}),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx*R),ry:o(r.rimRy*R),fill:"currentColor",fillOpacity:c.dishFill,stroke:"currentColor",strokeOpacity:c.dishEdge,strokeWidth:1}),i.map((l,s)=>t("line",{x1:o(l.x1),y1:o(l.y1),x2:o(l.x2),y2:o(l.y2),stroke:"currentColor",strokeOpacity:c.spoke,strokeWidth:S,strokeLinecap:"round"},s)),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx*E),ry:o(r.rimRy*E),fill:"currentColor",fillOpacity:c.hubFill,stroke:"currentColor",strokeOpacity:c.hubEdge,strokeWidth:1})]})}export{M as default};
1
+ "use client";import{jsx as t,jsxs as n,Fragment as h}from"react/jsx-runtime";import{TYRE_VIEW_SIZE as k,resolveTreadPattern as b,tyreArcPath as x,tyreBlockPath as P,tyreGeometry as $,tyreProfileFromSize as _,tyreRingPath as m}from"../lib/wheels/tyre-render.js";import{useScopeClass as F}from"../lib/use-scope-class.js";const c={rib:.2,grooveWall:.16,shoulder:.22,silhouette:.26,relief:[.26,.15,.11],lettering:.1,dishFill:.06,dishEdge:.3,spoke:.3,hubFill:.16,hubEdge:.34},I=[.8,.52,.24],O=.4,R=.88,E=.3,W=5,w=.3,T=.84,S=7,o=r=>Math.round(r*10)/10;function M({size:r,type:a,className:i}){const l=F("",/[^a-zA-Z0-9]/g),s={tread:`${l}-tread`,wall:`${l}-wall`,rim:`${l}-rim`,shadow:`${l}-shadow`,crown:`${l}-crown`},e=$(_(r)),y=m(e,0,1),p=r?`${r} tyre illustration`:"Tyre illustration";return n("svg",{"data-tyre-placeholder":"",viewBox:`0 0 ${k} ${k}`,role:"img","aria-label":p,fill:"none",className:i??"block h-full w-full",children:[t("title",{children:p}),n("defs",{children:[t(v,{id:s}),t("clipPath",{id:s.crown,children:t("path",{d:y})})]}),t("ellipse",{cx:o(e.cxf+e.dx/2),cy:o(e.cy+e.ry-4),rx:o(e.dx*1.5),ry:16,fill:`url(#${s.shadow})`}),t(G,{g:e,id:s}),t(A,{g:e,id:s}),t("path",{d:y,fill:`url(#${s.tread})`}),t("g",{clipPath:`url(#${s.crown})`,children:b(a).map(f=>t(N,{g:e,column:f},f.f[0]))}),t("path",{d:x(e,0,0,!0),stroke:"currentColor",strokeOpacity:c.shoulder,strokeWidth:1.2}),t("path",{d:x(e,1,1),stroke:"currentColor",strokeOpacity:c.silhouette,strokeWidth:1.4})]})}function N({g:r,column:a}){const[i,l]=a.f;if(!a.blocks)return n(h,{children:[t("path",{d:m(r,i,l),fill:"currentColor",fillOpacity:c.rib}),t("path",{d:x(r,i,1),stroke:"currentColor",strokeOpacity:c.grooveWall,strokeWidth:1})]});const{count:s,gap:e,phase:y=0}=a.blocks,p=1/s,f=[];for(let d=-1;d<=s;d+=1){const u=Math.max((d+y+e/2)*p,0),C=Math.min((d+y+1-e/2)*p,1);C-u>p*.15&&f.push([u,C])}return t(h,{children:f.map(([d,u])=>t("path",{d:P(r,i,l,d,u),fill:"currentColor",fillOpacity:c.rib,stroke:"currentColor",strokeOpacity:c.grooveWall,strokeWidth:1},d))})}function v({id:r}){return n(h,{children:[n("linearGradient",{id:r.tread,x1:"0",y1:"0",x2:"1",y2:"0",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.07}),t("stop",{offset:"0.14",stopColor:"currentColor",stopOpacity:.24}),t("stop",{offset:"0.45",stopColor:"currentColor",stopOpacity:.18}),t("stop",{offset:"0.84",stopColor:"currentColor",stopOpacity:.1}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.05})]}),n("linearGradient",{id:r.wall,x1:"0.15",y1:"0",x2:"0.9",y2:"1",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.28}),t("stop",{offset:"0.45",stopColor:"currentColor",stopOpacity:.17}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.08})]}),n("linearGradient",{id:r.rim,x1:"0.1",y1:"0",x2:"0.9",y2:"1",children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.46}),t("stop",{offset:"0.5",stopColor:"currentColor",stopOpacity:.26}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:.12})]}),n("radialGradient",{id:r.shadow,children:[t("stop",{offset:"0",stopColor:"currentColor",stopOpacity:.22}),t("stop",{offset:"1",stopColor:"currentColor",stopOpacity:0})]})]})}function G({g:r,id:a}){const i=r.rimRy/r.ry,l=e=>i+(1-i)*e,s=Math.max(6,(r.ry-r.rimRy)*.3);return n(h,{children:[t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx),ry:o(r.ry),fill:`url(#${a.wall})`}),I.map((e,y)=>{const p=l(e);return t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx*p),ry:o(r.ry*p),stroke:"currentColor",strokeOpacity:c.relief[y],strokeWidth:1},e)}),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rx*l(O)),ry:o(r.ry*l(O)),stroke:"currentColor",strokeOpacity:c.lettering,strokeWidth:o(s)})]})}function A({g:r,id:a}){const i=Array.from({length:W},(l,s)=>{const e=(s*(360/W)-90)*Math.PI/180;return{x1:r.cxf+r.rimRx*w*Math.cos(e),y1:r.cy+r.rimRy*w*Math.sin(e),x2:r.cxf+r.rimRx*T*Math.cos(e),y2:r.cy+r.rimRy*T*Math.sin(e)}});return n(h,{children:[t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx),ry:o(r.rimRy),fill:`url(#${a.rim})`}),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx*R),ry:o(r.rimRy*R),fill:"currentColor",fillOpacity:c.dishFill,stroke:"currentColor",strokeOpacity:c.dishEdge,strokeWidth:1}),i.map((l,s)=>t("line",{x1:o(l.x1),y1:o(l.y1),x2:o(l.x2),y2:o(l.y2),stroke:"currentColor",strokeOpacity:c.spoke,strokeWidth:S,strokeLinecap:"round"},s)),t("ellipse",{cx:o(r.cxf),cy:o(r.cy),rx:o(r.rimRx*E),ry:o(r.rimRy*E),fill:"currentColor",fillOpacity:c.hubFill,stroke:"currentColor",strokeOpacity:c.hubEdge,strokeWidth:1})]})}export{M as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import{SAMPLE_CONFIRMATION as S,useBookingForm as z}from"./BookingFormState.js";import w from"efficient-web-builder/render/components/Btn";import c from"../WebFormField.js";import{formatMoneyInCurrency as D}from"../../lib/commerce.js";import{FREE_PRICE as B}from"../../lib/wheels/price-display.js";const d="w-full border-2 border-line bg-bg px-4 py-4 font-[family-name:var(--bk-value-font,var(--font-display))] text-[length:var(--bk-value-size,17px)] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent";function I(n,t){const a=Number(n);if(a===0)return B;try{return D(a,t)}catch{return`${t} ${n}`}}function $(n,t){try{return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit",timeZone:t}).format(new Date(n))}catch{return new Date(n).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}}function T(n,t){try{return new Intl.DateTimeFormat(void 0,{weekday:"long",day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit",timeZone:t,timeZoneName:"short"}).format(new Date(n))}catch{return new Date(n).toLocaleString()}}const p="font-[family-name:var(--bk-name-font,var(--font-mono))] text-[length:var(--bk-name-size,12px)]";function C({number:n,children:t}){return i("div",{className:"mb-4 flex items-center gap-3",children:[e("span",{className:"flex size-8 shrink-0 items-center justify-center rounded-full border border-line font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,11px)] font-semibold text-fg-dim",children:n}),e("h3",{className:"font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,12px)] font-semibold uppercase tracking-[0.2em] text-fg",children:t})]})}function _({eyebrow:n,heading:t,intro:a}){return i("div",{className:"mb-10 max-w-[760px]",children:[(n??"").trim()&&e("p",{className:"mb-4 font-mono text-[12px] font-semibold uppercase tracking-[0.24em] text-accent",children:n}),(t??"").trim()&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.98] tracking-[-0.025em] text-fg max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:t}),(a??"").trim()&&e("p",{className:"mt-5 max-w-[660px] font-display text-[17px] leading-[1.65] text-fg-dim",children:a})]})}function j({style:n}={}){const{fieldPrefix:t,services:a,currency:f,serviceId:g,setServiceId:b,requiresPayment:h,date:x,earliestDate:v,setDate:k,setDateTouched:y,availability:o,loadingSlots:N,noSlotsMessage:s,selectedStart:u,setSelectedStart:l,customerTimezone:m}=z();return a?i("div",{className:"flex flex-col gap-10",style:n,children:[i("div",{children:[e(C,{number:"01",children:"Choose a service"}),e("div",{className:"grid gap-3 sm:grid-cols-2",children:a.map(r=>{const F=r.id===g;return i("button",{type:"button","aria-pressed":F,onClick:()=>b(r.id),className:`min-h-11 border p-4 text-left transition-colors ${F?"border-accent bg-accent/10":"border-line bg-bg hover:border-fg-dim"}`,children:[e("span",{className:"block font-[family-name:var(--bk-name-font,var(--font-display))] text-[length:var(--bk-name-size,18px)] font-medium text-fg",children:r.name}),i("span",{className:"mt-1 block font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,11px)] uppercase tracking-[0.14em] text-fg-dim",children:[r.durationMinutes," min · ",I(r.price,f)]}),r.description&&e("span",{className:"mt-3 block font-[family-name:var(--bk-note-font,var(--font-display))] text-[length:var(--bk-note-size,14px)] leading-[1.5] text-fg-dim",children:r.description})]},r.id)})}),h&&e("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.14em] text-alert",role:"alert",children:"This service requires an upfront payment and cannot be booked through this form yet."})]}),i("div",{children:[e(C,{number:"02",children:"Choose a date and time"}),e(c,{separate:!0,htmlFor:`${t}-date`,label:"Date",required:!0,labelFace:p,children:e("input",{id:`${t}-date`,type:"date",min:v,value:x,onChange:r=>{y(!0),k(r.target.value)},className:d,required:!0})}),e("div",{className:"mt-4 grid grid-cols-2 gap-2 sm:grid-cols-3 min-[1200px]:grid-cols-4",role:"group","aria-label":"Available appointment times",children:N?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",children:"Loading times…"}):o?.slots.length?o.slots.map(r=>i("button",{type:"button","aria-pressed":u===r.start,onClick:()=>l(r.start),className:`min-h-11 border px-3 py-2 font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,12px)] font-semibold uppercase tracking-[0.12em] transition-colors ${u===r.start?"border-accent bg-accent text-bg":"border-line bg-bg text-fg hover:border-accent"}`,children:[e("span",{className:"block",children:$(r.start,m||o.timezone)}),m&&m!==o.timezone&&i("span",{className:"mt-0.5 block text-[9px] font-normal tracking-[0.08em] opacity-70",children:[$(r.start,o.timezone)," business"]})]},r.start)):s?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",role:"status",children:s}):null}),o?.timezone&&i("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,10px)] uppercase tracking-[0.16em] text-fg-dim",children:["Times shown in ",m||o.timezone,m&&m!==o.timezone?` · business timezone ${o.timezone}`:""]})]})]}):null}function R({buttonLabel:n,style:t}){const{fieldPrefix:a,editing:f,name:g,setName:b,email:h,setEmail:x,phone:v,setPhone:k,notes:y,setNotes:o,submitting:N,error:s,canSubmit:u}=z();return i("div",{className:"sf-card border border-line bg-bg p-5 min-[640px]:p-8",style:t,children:[e(C,{number:"03",children:"Your details"}),i("div",{className:"flex flex-col gap-4",children:[e(c,{separate:!0,htmlFor:`${a}-name`,label:"Name",required:!0,labelFace:p,children:e("input",{id:`${a}-name`,type:"text",autoComplete:"name",value:g,onChange:l=>b(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-email`,label:"Email",required:!0,labelFace:p,children:e("input",{id:`${a}-email`,type:"email",inputMode:"email",autoComplete:"email",value:h,onChange:l=>x(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-phone`,label:"Phone",labelFace:p,children:e("input",{id:`${a}-phone`,type:"tel",inputMode:"tel",autoComplete:"tel",value:v,onChange:l=>k(l.target.value),className:d})}),e(c,{separate:!0,htmlFor:`${a}-notes`,label:"What would you like to cover?",labelFace:p,children:e("textarea",{id:`${a}-notes`,rows:4,value:y,onChange:l=>o(l.target.value),className:`${d} resize-y`})})]}),s&&e("p",{className:"mt-4 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.16em] text-alert",role:"alert",children:s}),e(w,{type:f?"button":"submit",disabled:!u,arrow:null,className:"mt-6 w-full disabled:cursor-not-allowed disabled:opacity-50",children:N?"Submitting…":(n??"").trim()||"Book appointment"})]})}function Z({successMessage:n}){const{confirmation:t,customerTimezone:a}=z();return t?i("div",{className:"sf-card max-w-[760px] border border-line bg-bg p-6 min-[640px]:p-10",role:"status",children:[i("p",{className:"font-mono text-[12px] font-semibold uppercase tracking-[0.22em] text-accent",children:["Request received · ",t.bookingNumber]}),e("h3",{className:"mt-4 font-display text-[28px] font-medium uppercase text-fg",children:t.service}),e("p",{className:"mt-2 font-display text-[17px] text-fg-dim",children:T(t.startAt,t.customerTimezone||a||t.timezone)}),t.customerTimezone&&t.timezone!==t.customerTimezone&&i("p",{className:"mt-1 font-mono text-[10px] uppercase tracking-[0.16em] text-fg-dim",children:["Business time: ",T(t.startAt,t.timezone)]}),(n??"").trim()&&e("p",{className:"mt-5 max-w-[620px] font-serif text-[18px] italic leading-[1.6] text-fg-dim",children:n}),e(w,{href:`/book/${encodeURIComponent(t.manageToken)}`,newTab:t!==S,variant:"ghost",className:"mt-8",children:"Manage booking"})]}):null}export{j as BookingChoose,Z as BookingConfirmed,R as BookingDetails,_ as BookingHead};
1
+ "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import{SAMPLE_CONFIRMATION as w,useBookingForm as z}from"./BookingFormState.js";import $ from"efficient-web-builder/render/components/Btn";import c from"../WebFormField.js";import{formatAppointment as T,formatAppointmentTime as S}from"../../lib/booking/appointment-time.js";import{formatMoneyInCurrency as B}from"../../lib/commerce.js";import{FREE_PRICE as A}from"../../lib/wheels/price-display.js";const d="w-full border-2 border-line bg-bg px-4 py-4 font-[family-name:var(--bk-value-font,var(--font-display))] text-[length:var(--bk-value-size,17px)] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent";function q(o,t){const a=Number(o);if(a===0)return A;try{return B(a,t)}catch{return`${t} ${o}`}}const p="font-[family-name:var(--bk-name-font,var(--font-mono))] text-[length:var(--bk-name-size,12px)]";function C({number:o,children:t}){return r("div",{className:"mb-4 flex items-center gap-3",children:[e("span",{className:"flex size-8 shrink-0 items-center justify-center rounded-full border border-line font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,11px)] font-semibold text-fg-dim",children:o}),e("h3",{className:"font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,12px)] font-semibold uppercase tracking-[0.2em] text-fg",children:t})]})}function j({eyebrow:o,heading:t,intro:a}){return r("div",{className:"mb-10 max-w-[760px]",children:[(o??"").trim()&&e("p",{className:"mb-4 font-mono text-[12px] font-semibold uppercase tracking-[0.24em] text-accent",children:o}),(t??"").trim()&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.98] tracking-[-0.025em] text-fg max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:t}),(a??"").trim()&&e("p",{className:"mt-5 max-w-[660px] font-display text-[17px] leading-[1.65] text-fg-dim",children:a})]})}function R({style:o}={}){const{fieldPrefix:t,services:a,currency:u,serviceId:b,setServiceId:g,requiresPayment:x,date:h,earliestDate:v,setDate:k,setDateTouched:N,availability:i,loadingSlots:y,noSlotsMessage:s,selectedStart:f,setSelectedStart:l,customerTimezone:m}=z();return a?r("div",{className:"flex flex-col gap-10",style:o,children:[r("div",{children:[e(C,{number:"01",children:"Choose a service"}),e("div",{className:"grid gap-3 sm:grid-cols-2",children:a.map(n=>{const F=n.id===b;return r("button",{type:"button","aria-pressed":F,onClick:()=>g(n.id),className:`min-h-11 border p-4 text-left transition-colors ${F?"border-accent bg-accent/10":"border-line bg-bg hover:border-fg-dim"}`,children:[e("span",{className:"block font-[family-name:var(--bk-name-font,var(--font-display))] text-[length:var(--bk-name-size,18px)] font-medium text-fg",children:n.name}),r("span",{className:"mt-1 block font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,11px)] uppercase tracking-[0.14em] text-fg-dim",children:[n.durationMinutes," min · ",q(n.price,u)]}),n.description&&e("span",{className:"mt-3 block font-[family-name:var(--bk-note-font,var(--font-display))] text-[length:var(--bk-note-size,14px)] leading-[1.5] text-fg-dim",children:n.description})]},n.id)})}),x&&e("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.14em] text-alert",role:"alert",children:"This service requires an upfront payment and cannot be booked through this form yet."})]}),r("div",{children:[e(C,{number:"02",children:"Choose a date and time"}),e(c,{separate:!0,htmlFor:`${t}-date`,label:"Date",required:!0,labelFace:p,children:e("input",{id:`${t}-date`,type:"date",min:v,value:h,onChange:n=>{N(!0),k(n.target.value)},className:d,required:!0})}),e("div",{className:"mt-4 grid grid-cols-2 gap-2 sm:grid-cols-3 min-[1200px]:grid-cols-4",role:"group","aria-label":"Available appointment times",children:y?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",children:"Loading times…"}):i?.slots.length?i.slots.map(n=>r("button",{type:"button","aria-pressed":f===n.start,onClick:()=>l(n.start),className:`min-h-11 border px-3 py-2 font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,12px)] font-semibold uppercase tracking-[0.12em] transition-colors ${f===n.start?"border-accent bg-accent text-bg":"border-line bg-bg text-fg hover:border-accent"}`,children:[e("span",{className:"block",children:S(n.start,m||i.timezone)}),m&&m!==i.timezone&&r("span",{className:"mt-0.5 block text-[9px] font-normal tracking-[0.08em] opacity-70",children:[S(n.start,i.timezone)," business"]})]},n.start)):s?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",role:"status",children:s}):null}),i?.timezone&&r("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,10px)] uppercase tracking-[0.16em] text-fg-dim",children:["Times shown in ",m||i.timezone,m&&m!==i.timezone?` · business timezone ${i.timezone}`:""]})]})]}):null}function O({buttonLabel:o,style:t}){const{fieldPrefix:a,editing:u,name:b,setName:g,email:x,setEmail:h,phone:v,setPhone:k,notes:N,setNotes:i,submitting:y,error:s,canSubmit:f}=z();return r("div",{className:"sf-card border border-line bg-bg p-5 min-[640px]:p-8",style:t,children:[e(C,{number:"03",children:"Your details"}),r("div",{className:"flex flex-col gap-4",children:[e(c,{separate:!0,htmlFor:`${a}-name`,label:"Name",required:!0,labelFace:p,children:e("input",{id:`${a}-name`,type:"text",autoComplete:"name",value:b,onChange:l=>g(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-email`,label:"Email",required:!0,labelFace:p,children:e("input",{id:`${a}-email`,type:"email",inputMode:"email",autoComplete:"email",value:x,onChange:l=>h(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-phone`,label:"Phone",labelFace:p,children:e("input",{id:`${a}-phone`,type:"tel",inputMode:"tel",autoComplete:"tel",value:v,onChange:l=>k(l.target.value),className:d})}),e(c,{separate:!0,htmlFor:`${a}-notes`,label:"What would you like to cover?",labelFace:p,children:e("textarea",{id:`${a}-notes`,rows:4,value:N,onChange:l=>i(l.target.value),className:`${d} resize-y`})})]}),s&&e("p",{className:"mt-4 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.16em] text-alert",role:"alert",children:s}),e($,{type:u?"button":"submit",disabled:!f,arrow:null,className:"mt-6 w-full disabled:cursor-not-allowed disabled:opacity-50",children:y?"Submitting…":(o??"").trim()||"Book appointment"})]})}function U({successMessage:o}){const{confirmation:t,customerTimezone:a}=z();return t?r("div",{className:"sf-card max-w-[760px] border border-line bg-bg p-6 min-[640px]:p-10",role:"status",children:[r("p",{className:"font-mono text-[12px] font-semibold uppercase tracking-[0.22em] text-accent",children:["Request received · ",t.bookingNumber]}),e("h3",{className:"mt-4 font-display text-[28px] font-medium uppercase text-fg",children:t.service}),e("p",{className:"mt-2 font-display text-[17px] text-fg-dim",children:T(t.startAt,t.customerTimezone||a||t.timezone)}),t.customerTimezone&&t.timezone!==t.customerTimezone&&r("p",{className:"mt-1 font-mono text-[10px] uppercase tracking-[0.16em] text-fg-dim",children:["Business time: ",T(t.startAt,t.timezone)]}),(o??"").trim()&&e("p",{className:"mt-5 max-w-[620px] font-serif text-[18px] italic leading-[1.6] text-fg-dim",children:o}),e($,{href:`/book/${encodeURIComponent(t.manageToken)}`,newTab:t!==w,variant:"ghost",className:"mt-8",children:"Manage booking"})]}):null}export{R as BookingChoose,U as BookingConfirmed,O as BookingDetails,j as BookingHead};
@@ -1,5 +1,5 @@
1
1
  import { type CatalogVehicleControl } from "./CatalogVehiclePicker.js";
2
- import type { FinishFamily, Process } from "../../lib/api/index.js";
2
+ import type { FinishFamily } from "../../lib/api/index.js";
3
3
  import { type FieldUsageAnswer } from "../../lib/content/field-usage.js";
4
4
  import { type FilterBarLayout } from "../../lib/sections/catalog-filter-layout.js";
5
5
  import { type CatalogFilterState, type SortKey } from "../../lib/wheels/catalog-filters.js";
@@ -15,7 +15,7 @@ export interface FilterBarVisibility {
15
15
  }
16
16
  export interface CatalogFilterBarProps {
17
17
  filters: CatalogFilterState;
18
- setProcess: (v: Process | null) => void;
18
+ setProcess: (v: string | null) => void;
19
19
  setSize: (v: number | null) => void;
20
20
  setLugs: (v: number | null) => void;
21
21
  setFinish: (v: FinishFamily | null) => void;
@@ -27,7 +27,7 @@ export interface CatalogFilterBarProps {
27
27
  lugOptions?: readonly number[];
28
28
  sizeOptions?: readonly number[];
29
29
  finishOptions?: readonly string[];
30
- scrollProcess: Process | null;
30
+ scrollProcess: string | null;
31
31
  show?: FilterBarVisibility;
32
32
  picker?: CatalogVehicleControl;
33
33
  resultsLink?: {
@@ -35,7 +35,7 @@ export interface CatalogFilterBarProps {
35
35
  label: string;
36
36
  };
37
37
  layout?: FilterBarLayout;
38
- processOptions?: readonly Process[];
38
+ processOptions?: readonly string[];
39
39
  optionsReported?: boolean;
40
40
  fieldUsage?: readonly FieldUsageAnswer[];
41
41
  }
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as U,jsxs as n}from"react/jsx-runtime";import{useState as Q}from"react";import ee from"efficient-web-builder/render/components/RMark";import{FilterPill as A,OptButton as q,PanelTitle as $,PillButton as me}from"./FilterPill.js";import le from"../ThemedSelect.js";import{useCatalogFilterLabels as he}from"./CatalogFilterLabels.js";import{CatalogVehicleNextRow as ge,CatalogVehicleFieldRow as fe,CatalogVehicleRow as re,CatalogVehicleSheet as be}from"./CatalogVehiclePicker.js";import{facetFieldKey as ne,keepForFilter as xe,orderByAnswers as ve}from"../../lib/content/field-usage.js";import{PLP_ONE_VALUE_MAX as ie}from"../../lib/wheels/plp-filters.js";import{DEFAULT_FILTER_BAR_LAYOUT as Ce}from"../../lib/sections/catalog-filter-layout.js";import{SORT_LABELS as O}from"../../lib/wheels/catalog-filters.js";import{FINISH_FAMILY_SWATCHES as ae}from"../../lib/wheels/finish-defaults.js";import{VEHICLE_FIELD_ORDER as Ne}from"../../lib/wheels/vehicle-field-focus.js";const u={body:"text-[length:var(--size-body,14px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]",labelXl:"text-[length:var(--size-label,14px)]"},ye=["FusionForge®","Precision Forged","Monoblock Cast"];function te(t){return t==="FusionForge®"?n(U,{children:["FusionForge",e(ee,{})]}):t}const Y={size:ne("diameters","alloy-wheel"),finish:ne("finishes","alloy-wheel")};function oe(t,o){return ve(t,s=>Y[String(s.key)],o??[],"filterOrder")}function Fe({processCount:t,sizeCount:o,lugCount:s,finishCount:m,optionsReported:f,fieldUsage:R}){const b=M=>!f||M>ie,F=xe(R??[]);return{process:t>ie,size:F(Y.size)&&b(o),lugs:b(s),finish:F(Y.finish)&&b(m)}}function N(t,o){return t===o?null:o}function se({href:t,label:o}){return e("a",{href:t,"data-results-link":!0,className:`inline-block self-start border-0 border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg transition-colors hover:text-fg-dim`,children:o})}function ke({filters:t,setProcess:o,setSize:s,setLugs:m,setFinish:f,setPriceMin:R,setPriceMax:b,setSort:F,clearAll:M,total:x,scrollProcess:B,show:h,picker:c,lugOptions:I=[],sizeOptions:j=[],finishOptions:G,layout:de=Ce,processOptions:P=ye,resultsLink:v,optionsReported:ue=!1,fieldUsage:V}){const[p,g]=Q(null),[K,X]=Q(null),d=he(),{process:k,size:L,lugs:_,finish:T,priceMin:D,priceMax:W,sort:Z}=t,H=G?ae.filter(l=>G.includes(l.f)):ae,E=Fe({processCount:P.length,sizeCount:j.length,lugCount:I.length,finishCount:H.length,optionsReported:ue,fieldUsage:V}),i={process:(h?.process??!0)&&E.process,size:(h?.size??!0)&&E.size,lugs:(h?.lugs??!0)&&E.lugs,finish:(h?.finish??!0)&&E.finish,price:h?.price??!0,vehicle:(h?.vehicle??!0)&&!!c,count:h?.count??!0,sort:h?.sort??!0},C={process:k?1:0,size:L?1:0,lugs:_?1:0,finish:T?1:0,price:D!=null||W!=null?1:0,vehicle:c?.appliedName?1:0},J=()=>{M(),c?.clear(),g(null),X(null)};if(de==="columns"){const l=r=>X(K===r?null:r),a=[];i.vehicle&&c&&a.push(n(y,{name:"vehicle",label:d.vehicle,children:[Ne.map(r=>e(fe,{field:r,picker:c,open:K===r,onOpenRequest:l,onClose:()=>X(null)},r)),e(ge,{picker:c,onOpenRequest:l})]},"vehicle"));const z=[];return i.process&&z.push(e(y,{name:"process",label:d.process,rowsAreOptions:!0,children:P.map(r=>e(S,{active:k===r,onClick:()=>o(N(k,r)),children:te(r)},r))},"process")),i.size&&z.push(e(y,{name:"size",label:d.size,rowsAreOptions:!0,children:j.map(r=>n(S,{active:L===r,onClick:()=>s(N(L,r)),children:[r,'"']},r))},"size")),i.lugs&&z.push(e(y,{name:"lugs",label:d.lugs,rowsAreOptions:!0,children:I.map(r=>n(S,{active:_===r,onClick:()=>m(N(_,r)),children:[r,"-Lug"]},r))},"lugs")),i.finish&&z.push(e(y,{name:"finish",label:d.finish,rowsAreOptions:!0,children:H.map(r=>e(S,{active:T===r.f,onClick:()=>f(T===r.f?null:r.f),children:r.label},r.f))},"finish")),a.push(...oe(z,V)),i.price&&a.push(n(y,{name:"price",label:d.price,children:[e(pe,{label:"Min",value:D,onChange:R,ariaLabel:"Minimum price per wheel"}),e(pe,{label:"Max",value:W,onChange:b,ariaLabel:"Maximum price per wheel"})]},"price")),n("div",{className:"@container",children:[n("div",{className:"border-t border-line px-[var(--sf-site-gutter,40px)] pb-12 pt-10 @max-[720px]:px-4 @max-[720px]:pb-10 @max-[720px]:pt-8",children:[(i.count||i.sort)&&n("div",{className:"mb-10 flex flex-wrap items-center gap-x-6 gap-y-3 @max-[720px]:mb-8",children:[i.count&&n("span",{className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim`,children:[x," ",x===1?"result":"results"]}),i.sort&&n("div",{className:"ml-auto flex items-center gap-5",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:"Clear All"}),e(le,{value:Z,onChange:r=>F(r.target.value),className:`border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(r=>e("option",{value:r,children:O[r]},r))})]})]}),e("div",{"data-filter-columns":!0,className:`grid grid-cols-1 gap-x-[72px] gap-y-10 ${Le[a.length]??""}`,children:a}),v&&e("div",{className:"mt-10 flex",children:e(se,{href:v.href,label:v.label})})]}),i.vehicle&&c&&e(re,{picker:c,total:x})]})}const w=[];return i.process&&w.push(n(A,{name:"process",label:B?n(U,{children:[e("span",{className:"text-accent @min-[720px]:hidden",children:B==="FusionForge®"?n(U,{children:["FusionForge",e(ee,{})]}):B}),e("span",{className:"hidden @min-[720px]:inline",children:d.process})]}):d.process,badge:C.process,open:p==="process",onToggle:()=>g(p==="process"?null:"process"),children:[e($,{children:"Series · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Process series",children:P.map(l=>{const a=k===l;return e(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>o(N(k,l)),children:te(l)},l)})})]},"process")),i.size&&w.push(n(A,{name:"size",label:d.size,badge:C.size,open:p==="size",onToggle:()=>g(p==="size"?null:"size"),children:[e($,{children:"Diameter · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Wheel diameter",children:j.map(l=>{const a=L===l;return n(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>s(N(L,l)),children:[l,'"']},l)})})]},"size")),i.lugs&&w.push(n(A,{name:"lugs",label:d.lugs,badge:C.lugs,open:p==="lugs",onToggle:()=>g(p==="lugs"?null:"lugs"),children:[e($,{children:"Lug count · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Lug count",children:I.map(l=>{const a=_===l;return n(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>m(N(_,l)),children:[l,"-Lug"]},l)})})]},"lugs")),i.finish&&w.push(n(A,{name:"finish",label:d.finish,badge:C.finish,open:p==="finish",onToggle:()=>g(p==="finish"?null:"finish"),children:[e($,{children:"Color family · single-select"}),e("div",{className:"flex flex-col gap-2",role:"radiogroup","aria-label":"Finish color family",children:H.map(l=>{const a=T===l.f;return n("button",{type:"button",role:"radio","aria-checked":a,onClick:()=>f(a?null:l.f),className:["flex items-center gap-3 border px-3 py-2 text-left transition-colors",a?"border-accent text-fg":"border-line hover:border-fg-dim"].join(" "),children:[e("span",{className:"block h-3.5 w-3.5 shrink-0 rounded-full border border-line",style:{background:l.hex}}),e("span",{className:`font-mono ${u.labelSmall} uppercase tracking-[0.18em]`,style:a?void 0:{color:"color-mix(in oklab, currentColor 80%, transparent)"},children:l.label}),a&&e("span",{"aria-hidden":!0,className:"ml-auto text-accent",children:"●"})]},l.f)})})]},"finish")),n("div",{className:"@container sticky top-[67px] z-40 border-b border-line backdrop-blur",style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:[n("div",{className:"flex items-center gap-6 px-[var(--sf-site-gutter,40px)] py-4 @max-[720px]:flex-wrap @max-[720px]:items-stretch @max-[720px]:gap-2 @max-[720px]:px-4 @max-[720px]:py-3",children:[n("div",{className:"flex flex-wrap items-center gap-1 @max-[720px]:gap-2",children:[i.count&&n("span",{className:`mr-3 border-r border-line pr-4 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim @max-[720px]:hidden`,children:[x," ",x===1?"result":"results"]}),oe(w,V),i.price&&n(A,{name:"price",label:d.price,badge:C.price,open:p==="price",onToggle:()=>g(p==="price"?null:"price"),children:[e($,{children:"Price range (per wheel)"}),n("div",{className:"mt-1 flex items-center gap-2",children:[e("input",{type:"number",placeholder:"$ Min",value:D??"",onChange:l=>R(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`}),e("span",{className:`font-mono ${u.labelSmall} text-fg-dim`,children:"—"}),e("input",{type:"number",placeholder:"$ Max",value:W??"",onChange:l=>b(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`})]})]}),i.vehicle&&c&&e(me,{label:d.vehicle,badge:C.vehicle,open:p==="vehicle",onToggle:()=>g(p==="vehicle"?null:"vehicle")})]}),v&&e("div",{className:`flex items-center @max-[720px]:hidden ${i.sort?"":"ml-auto"}`,children:e(se,{href:v.href,label:v.label})}),i.sort&&n("div",{className:"ml-auto flex items-center gap-3 @max-[720px]:hidden",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-accent`,children:"Clear All"}),e(le,{value:Z,onChange:l=>F(l.target.value),className:`border border-line bg-transparent px-4 py-3 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(l=>e("option",{value:l,children:O[l]},l))})]})]}),i.vehicle&&c&&p==="vehicle"&&e(be,{picker:c,onClose:()=>g(null)}),i.vehicle&&c&&e(re,{picker:c,total:x})]})}const Le={1:"@min-[720px]:grid-cols-1",2:"@min-[720px]:grid-cols-2",3:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3",4:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-4",5:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-5",6:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-6"},ce=`flex w-full items-center justify-between gap-4 border-b py-3 text-left ${u.body}`;function y({name:t,label:o,rowsAreOptions:s,children:m}){return n("div",{"data-filter-column":t,className:"flex flex-col gap-6",children:[e("div",{className:`font-mono ${u.labelXs} uppercase tracking-[0.34em] text-fg-dim`,children:o}),e("div",{role:s?"radiogroup":void 0,"aria-label":s?o:void 0,children:m})]})}function S({active:t,onClick:o,children:s}){return e("button",{type:"button",role:"radio","aria-checked":t,onClick:o,className:[ce,"transition-colors",t?"border-fg text-fg":"border-line text-fg-dim hover:text-fg"].join(" "),children:e("span",{children:s})})}function pe({label:t,value:o,onChange:s,ariaLabel:m}){return n("label",{className:`${ce} border-line`,children:[e("span",{className:"text-fg-dim",children:t}),e("input",{type:"number",inputMode:"numeric","aria-label":m,placeholder:"Any",value:o??"",onChange:f=>s(f.target.value?Number(f.target.value):null),className:"w-24 bg-transparent text-right text-fg outline-none placeholder:text-fg-dim"})]})}export{ke as default,Fe as filterBarFacetsWithChoice};
1
+ "use client";import{jsx as e,jsxs as i,Fragment as ue}from"react/jsx-runtime";import{useState as Q}from"react";import{withRMark as de}from"efficient-web-builder/render/components/RMark";import{FilterPill as w,OptButton as W,PanelTitle as A,PillButton as he}from"./FilterPill.js";import ee from"../ThemedSelect.js";import{useCatalogFilterLabels as ge}from"./CatalogFilterLabels.js";import{CatalogVehicleNextRow as fe,CatalogVehicleFieldRow as be,CatalogVehicleRow as le,CatalogVehicleSheet as xe}from"./CatalogVehiclePicker.js";import{facetFieldKey as re,keepForFilter as ve,orderByAnswers as Ce}from"../../lib/content/field-usage.js";import{PLP_ONE_VALUE_MAX as ie}from"../../lib/wheels/plp-filters.js";import{DEFAULT_FILTER_BAR_LAYOUT as Ne}from"../../lib/sections/catalog-filter-layout.js";import{SORT_LABELS as O}from"../../lib/wheels/catalog-filters.js";import{FINISH_FAMILY_SWATCHES as ne}from"../../lib/wheels/finish-defaults.js";import{VEHICLE_FIELD_ORDER as ye}from"../../lib/wheels/vehicle-field-focus.js";import{CONTENT_CAP_GUTTER as ae}from"../../lib/sections/content-cap-gutter.js";const u={body:"text-[length:var(--size-body,14px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]",labelXl:"text-[length:var(--size-label,14px)]"};function H(t){return de(t)}const q={size:re("diameters","alloy-wheel"),finish:re("finishes","alloy-wheel")};function te(t,o){return Ce(t,s=>q[String(s.key)],o??[],"filterOrder")}function ke({processCount:t,sizeCount:o,lugCount:s,finishCount:d,optionsReported:f,fieldUsage:z}){const b=B=>!f||B>ie,k=ve(z??[]);return{process:t>ie,size:k(q.size)&&b(o),lugs:b(s),finish:k(q.finish)&&b(d)}}function N(t,o){return t===o?null:o}function oe({href:t,label:o}){return e("a",{href:t,"data-results-link":!0,className:`inline-block self-start border-0 border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg transition-colors hover:text-fg-dim`,children:o})}function Le({filters:t,setProcess:o,setSize:s,setLugs:d,setFinish:f,setPriceMin:z,setPriceMax:b,setSort:k,clearAll:B,total:x,scrollProcess:G,show:h,picker:c,lugOptions:M=[],sizeOptions:j=[],finishOptions:Y,layout:pe=Ne,processOptions:I=[],resultsLink:v,optionsReported:me=!1,fieldUsage:P}){const[p,g]=Q(null),[K,V]=Q(null),m=ge(),{process:L,size:F,lugs:_,finish:E,priceMin:X,priceMax:D,sort:Z}=t,U=Y?ne.filter(l=>Y.includes(l.f)):ne,R=ke({processCount:I.length,sizeCount:j.length,lugCount:M.length,finishCount:U.length,optionsReported:me,fieldUsage:P}),n={process:(h?.process??!0)&&R.process,size:(h?.size??!0)&&R.size,lugs:(h?.lugs??!0)&&R.lugs,finish:(h?.finish??!0)&&R.finish,price:h?.price??!0,vehicle:(h?.vehicle??!0)&&!!c,count:h?.count??!0,sort:h?.sort??!0},C={process:L?1:0,size:F?1:0,lugs:_?1:0,finish:E?1:0,price:X!=null||D!=null?1:0,vehicle:c?.appliedName?1:0},J=()=>{B(),c?.clear(),g(null),V(null)};if(pe==="columns"){const l=r=>V(K===r?null:r),a=[];n.vehicle&&c&&a.push(i(y,{name:"vehicle",label:m.vehicle,children:[ye.map(r=>e(be,{field:r,picker:c,open:K===r,onOpenRequest:l,onClose:()=>V(null)},r)),e(fe,{picker:c,onOpenRequest:l})]},"vehicle"));const $=[];return n.process&&$.push(e(y,{name:"process",label:m.process,rowsAreOptions:!0,children:I.map(r=>e(S,{active:L===r,onClick:()=>o(N(L,r)),children:H(r)},r))},"process")),n.size&&$.push(e(y,{name:"size",label:m.size,rowsAreOptions:!0,children:j.map(r=>i(S,{active:F===r,onClick:()=>s(N(F,r)),children:[r,'"']},r))},"size")),n.lugs&&$.push(e(y,{name:"lugs",label:m.lugs,rowsAreOptions:!0,children:M.map(r=>i(S,{active:_===r,onClick:()=>d(N(_,r)),children:[r,"-Lug"]},r))},"lugs")),n.finish&&$.push(e(y,{name:"finish",label:m.finish,rowsAreOptions:!0,children:U.map(r=>e(S,{active:E===r.f,onClick:()=>f(E===r.f?null:r.f),children:r.label},r.f))},"finish")),a.push(...te($,P)),n.price&&a.push(i(y,{name:"price",label:m.price,children:[e(ce,{label:"Min",value:X,onChange:z,ariaLabel:"Minimum price per wheel"}),e(ce,{label:"Max",value:D,onChange:b,ariaLabel:"Maximum price per wheel"})]},"price")),i("div",{className:"@container",children:[i("div",{className:`border-t border-line ${ae} pb-12 pt-10 @max-[720px]:px-4 @max-[720px]:pb-10 @max-[720px]:pt-8`,children:[(n.count||n.sort)&&i("div",{className:"mb-10 flex flex-wrap items-center gap-x-6 gap-y-3 @max-[720px]:mb-8",children:[n.count&&i("span",{className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim`,children:[x," ",x===1?"result":"results"]}),n.sort&&i("div",{className:"ml-auto flex items-center gap-5",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:"Clear All"}),e(ee,{"aria-label":"Sort results",value:Z,onChange:r=>k(r.target.value),className:`border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(r=>e("option",{value:r,children:O[r]},r))})]})]}),e("div",{"data-filter-columns":!0,className:`grid grid-cols-1 gap-x-[72px] gap-y-10 ${Fe[a.length]??""}`,children:a}),v&&e("div",{className:"mt-10 flex",children:e(oe,{href:v.href,label:v.label})})]}),n.vehicle&&c&&e(le,{picker:c,total:x})]})}const T=[];return n.process&&T.push(i(w,{name:"process",label:G?i(ue,{children:[e("span",{className:"text-accent @min-[720px]:hidden",children:H(G)}),e("span",{className:"hidden @min-[720px]:inline",children:m.process})]}):m.process,badge:C.process,open:p==="process",onToggle:()=>g(p==="process"?null:"process"),children:[e(A,{children:"Series · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Process series",children:I.map(l=>{const a=L===l;return e(W,{active:a,role:"radio",ariaChecked:a,onClick:()=>o(N(L,l)),children:H(l)},l)})})]},"process")),n.size&&T.push(i(w,{name:"size",label:m.size,badge:C.size,open:p==="size",onToggle:()=>g(p==="size"?null:"size"),children:[e(A,{children:"Diameter · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Wheel diameter",children:j.map(l=>{const a=F===l;return i(W,{active:a,role:"radio",ariaChecked:a,onClick:()=>s(N(F,l)),children:[l,'"']},l)})})]},"size")),n.lugs&&T.push(i(w,{name:"lugs",label:m.lugs,badge:C.lugs,open:p==="lugs",onToggle:()=>g(p==="lugs"?null:"lugs"),children:[e(A,{children:"Lug count · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Lug count",children:M.map(l=>{const a=_===l;return i(W,{active:a,role:"radio",ariaChecked:a,onClick:()=>d(N(_,l)),children:[l,"-Lug"]},l)})})]},"lugs")),n.finish&&T.push(i(w,{name:"finish",label:m.finish,badge:C.finish,open:p==="finish",onToggle:()=>g(p==="finish"?null:"finish"),children:[e(A,{children:"Color family · single-select"}),e("div",{className:"flex flex-col gap-2",role:"radiogroup","aria-label":"Finish color family",children:U.map(l=>{const a=E===l.f;return i("button",{type:"button",role:"radio","aria-checked":a,onClick:()=>f(a?null:l.f),className:["flex items-center gap-3 border px-3 py-2 text-left transition-colors",a?"border-accent text-fg":"border-line hover:border-fg-dim"].join(" "),children:[e("span",{className:"block h-3.5 w-3.5 shrink-0 rounded-full border border-line",style:{background:l.hex}}),e("span",{className:`font-mono ${u.labelSmall} uppercase tracking-[0.18em]`,style:a?void 0:{color:"color-mix(in oklab, currentColor 80%, transparent)"},children:l.label}),a&&e("span",{"aria-hidden":!0,className:"ml-auto text-accent",children:"●"})]},l.f)})})]},"finish")),i("div",{className:"@container sticky top-[67px] z-40 border-b border-line backdrop-blur",style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:[i("div",{className:`flex items-center gap-6 ${ae} py-4 @max-[720px]:flex-wrap @max-[720px]:items-stretch @max-[720px]:gap-2 @max-[720px]:px-4 @max-[720px]:py-3`,children:[i("div",{className:"flex flex-wrap items-center gap-1 @max-[720px]:basis-full @max-[720px]:gap-2",children:[n.count&&i("span",{className:`mr-3 border-r border-line pr-4 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim @max-[720px]:hidden`,children:[x," ",x===1?"result":"results"]}),te(T,P),n.price&&i(w,{name:"price",label:m.price,badge:C.price,open:p==="price",onToggle:()=>g(p==="price"?null:"price"),children:[e(A,{children:"Price range (per wheel)"}),i("div",{className:"mt-1 flex items-center gap-2",children:[e("input",{type:"number",placeholder:"$ Min",value:X??"",onChange:l=>z(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`}),e("span",{className:`font-mono ${u.labelSmall} text-fg-dim`,children:"—"}),e("input",{type:"number",placeholder:"$ Max",value:D??"",onChange:l=>b(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`})]})]}),n.vehicle&&c&&e(he,{label:m.vehicle,badge:C.vehicle,open:p==="vehicle",onToggle:()=>g(p==="vehicle"?null:"vehicle")})]}),v&&e("div",{className:`flex items-center ${n.sort?"":"ml-auto"}`,children:e(oe,{href:v.href,label:v.label})}),n.sort&&i("div",{className:"ml-auto flex items-center gap-3",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-accent`,children:"Clear All"}),e(ee,{"aria-label":"Sort results",value:Z,onChange:l=>k(l.target.value),className:`border border-line bg-transparent px-4 py-3 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(l=>e("option",{value:l,children:O[l]},l))})]})]}),n.vehicle&&c&&p==="vehicle"&&e(xe,{picker:c,onClose:()=>g(null)}),n.vehicle&&c&&e(le,{picker:c,total:x})]})}const Fe={1:"@min-[720px]:grid-cols-1",2:"@min-[720px]:grid-cols-2",3:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3",4:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-4",5:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-5",6:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-6"},se=`flex w-full items-center justify-between gap-4 border-b py-3 text-left ${u.body}`;function y({name:t,label:o,rowsAreOptions:s,children:d}){return i("div",{"data-filter-column":t,className:"flex flex-col gap-6",children:[e("div",{className:`font-mono ${u.labelXs} uppercase tracking-[0.34em] text-fg-dim`,children:o}),e("div",{role:s?"radiogroup":void 0,"aria-label":s?o:void 0,children:d})]})}function S({active:t,onClick:o,children:s}){return e("button",{type:"button",role:"radio","aria-checked":t,onClick:o,className:[se,"transition-colors",t?"border-fg text-fg":"border-line text-fg-dim hover:text-fg"].join(" "),children:e("span",{children:s})})}function ce({label:t,value:o,onChange:s,ariaLabel:d}){return i("label",{className:`${se} border-line`,children:[e("span",{className:"text-fg-dim",children:t}),e("input",{type:"number",inputMode:"numeric","aria-label":d,placeholder:"Any",value:o??"",onChange:f=>s(f.target.value?Number(f.target.value):null),className:"w-24 bg-transparent text-right text-fg outline-none placeholder:text-fg-dim"})]})}export{Le as default,ke as filterBarFacetsWithChoice};