efficient-storefront-blocks 0.75.0 → 0.77.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 (278) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/chunks/EditorPreviewCheckout-GNQP4MQ4.js +4 -0
  3. package/dist/chunks/{SiteEditorProvider-N4T55FAV.js → SiteEditorProvider-R3HXJAPW.js} +1 -1
  4. package/dist/chunks/chunk-BOJGJXIU.js +311 -0
  5. package/dist/chunks/chunk-CAULWKXR.js +1 -0
  6. package/dist/chunks/chunk-GDR5GGVW.js +1 -0
  7. package/dist/chunks/chunk-OWYNZAAY.js +1 -0
  8. package/dist/chunks/chunk-ZIZWJZ5T.js +1 -0
  9. package/dist/chunks/{fitment-data-5ZSHENM3.js → fitment-data-JNQKYQIB.js} +1 -1
  10. package/dist/contract.js +2 -2
  11. package/dist/editor/components/BlogSource.js +1 -1
  12. package/dist/editor/components/CategoryProductFields.d.ts +22 -0
  13. package/dist/editor/components/CategoryProductFields.js +1 -0
  14. package/dist/editor/components/CategorySource.d.ts +12 -0
  15. package/dist/editor/components/CategorySource.js +1 -1
  16. package/dist/editor/components/CollectionPicker.js +1 -1
  17. package/dist/editor/components/CountryShowAsTiles.js +1 -1
  18. package/dist/editor/components/EditorPreviewChat.js +1 -11
  19. package/dist/editor/components/EditorPreviewSurface.js +1 -1
  20. package/dist/editor/components/GalleryProductBinding.js +1 -1
  21. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  22. package/dist/editor/components/HeaderSettingsPanel.d.ts +8 -4
  23. package/dist/editor/components/HeaderSettingsPanel.js +1 -1
  24. package/dist/editor/components/MenuPicker.js +1 -1
  25. package/dist/editor/components/PreviewProductPicker.js +1 -1
  26. package/dist/editor/components/ProductHeroSource.js +1 -1
  27. package/dist/editor/components/ProductPicker.js +1 -1
  28. package/dist/editor/components/SocialLinksDoor.js +1 -1
  29. package/dist/editor/components/SpecTableSource.js +1 -1
  30. package/dist/editor/lib/document/block-align-row.d.ts +2 -0
  31. package/dist/editor/lib/document/block-align-row.js +1 -0
  32. package/dist/editor/lib/document/blocks/commerce/AccountBlock/fields.js +1 -1
  33. package/dist/editor/lib/document/blocks/commerce/AlloyWheelsListing/fields.js +1 -1
  34. package/dist/editor/lib/document/blocks/commerce/BundleOffer/fields.js +1 -1
  35. package/dist/editor/lib/document/blocks/commerce/CartBlock/fields.js +1 -1
  36. package/dist/editor/lib/document/blocks/commerce/CatalogFilterBar/fields.js +1 -1
  37. package/dist/editor/lib/document/blocks/commerce/CheckoutCTA/fields.js +1 -1
  38. package/dist/editor/lib/document/blocks/commerce/CollectionCard/fields.js +1 -1
  39. package/dist/editor/lib/document/blocks/commerce/Collections/fields.js +1 -1
  40. package/dist/editor/lib/document/blocks/commerce/CompatibleTyres/fields.js +1 -1
  41. package/dist/editor/lib/document/blocks/commerce/CountrySwitchBlock/fields.js +1 -1
  42. package/dist/editor/lib/document/blocks/commerce/DeliveryOptions/fields.js +1 -1
  43. package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -1
  44. package/dist/editor/lib/document/blocks/commerce/EuTyreLabel/fields.js +1 -1
  45. package/dist/editor/lib/document/blocks/commerce/FitmentFinder/fields.js +1 -1
  46. package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -1
  47. package/dist/editor/lib/document/blocks/commerce/Gallery/fields.js +1 -1
  48. package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -1
  49. package/dist/editor/lib/document/blocks/commerce/GalleryItem/fields.js +1 -1
  50. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.d.ts +2 -2
  51. package/dist/editor/lib/document/blocks/commerce/ProductGallery/fields.js +1 -1
  52. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
  53. package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -1
  54. package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
  55. package/dist/editor/lib/document/blocks/commerce/SearchBlock/fields.js +1 -1
  56. package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
  57. package/dist/editor/lib/document/blocks/commerce/TyreFitment/fields.js +1 -1
  58. package/dist/editor/lib/document/blocks/commerce/TyreSizes/fields.js +1 -1
  59. package/dist/editor/lib/document/blocks/commerce/shared-fields.d.ts +1 -0
  60. package/dist/editor/lib/document/blocks/commerce/shared-fields.js +1 -1
  61. package/dist/editor/lib/document/blocks/service/AppointmentBooking/fields.js +1 -1
  62. package/dist/editor/lib/document/blocks/service/BookingBox/fields.js +1 -1
  63. package/dist/editor/lib/document/blocks/service/ContactCards/fields.js +1 -1
  64. package/dist/editor/lib/document/blocks/service/ContactRouting/fields.js +1 -1
  65. package/dist/editor/lib/document/blocks/service/Events/fields.js +1 -1
  66. package/dist/editor/lib/document/blocks/service/Footer/fields.js +1 -1
  67. package/dist/editor/lib/document/blocks/service/FooterDivider/fields.js +1 -1
  68. package/dist/editor/lib/document/blocks/service/FooterEmailSignup/fields.js +1 -1
  69. package/dist/editor/lib/document/blocks/service/FooterGroup/fields.js +1 -1
  70. package/dist/editor/lib/document/blocks/service/FooterLogo/fields.js +1 -1
  71. package/dist/editor/lib/document/blocks/service/FooterMenu/fields.js +1 -1
  72. package/dist/editor/lib/document/blocks/service/FooterMessaging/fields.js +1 -1
  73. package/dist/editor/lib/document/blocks/service/FooterPayment/fields.js +1 -1
  74. package/dist/editor/lib/document/blocks/service/FooterSocial/fields.js +1 -1
  75. package/dist/editor/lib/document/blocks/service/FooterText/fields.js +1 -1
  76. package/dist/editor/lib/document/blocks/service/Form/fields.js +1 -1
  77. package/dist/editor/lib/document/blocks/service/MessagingCards/fields.js +1 -1
  78. package/dist/editor/lib/document/blocks/service/OpeningHours/fields.js +1 -1
  79. package/dist/editor/lib/document/blocks/service/RateTable/fields.js +1 -1
  80. package/dist/editor/lib/document/blocks/service/RatingBlock/fields.js +1 -1
  81. package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -1
  82. package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -1
  83. package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -1
  84. package/dist/editor/lib/document/blocks/service/SubmitBox/fields.js +1 -1
  85. package/dist/editor/lib/document/blocks/service/SubmitBuild/fields.js +1 -1
  86. package/dist/editor/lib/document/blocks/service/Subscribe/fields.js +1 -1
  87. package/dist/editor/lib/document/blocks/service/SubscribeBlogs/fields.js +1 -1
  88. package/dist/editor/lib/document/box-header.js +1 -1
  89. package/dist/editor/lib/document/config.d.ts +16 -16
  90. package/dist/editor/lib/document/config.js +1 -1
  91. package/dist/editor/lib/editor-currency-source.js +1 -1
  92. package/dist/editor/lib/storefront-editor-words.d.ts +10 -13
  93. package/dist/editor/lib/storefront-editor-words.js +1 -1
  94. package/dist/editor.css +1 -1
  95. package/dist/index.js +214 -724
  96. package/dist/links.js +1 -1
  97. package/dist/render/app/globals.css +45 -79
  98. package/dist/render/built-with.json +1 -1
  99. package/dist/render/components/BoxHeaderBar.js +1 -1
  100. package/dist/render/components/CartContext.d.ts +1 -0
  101. package/dist/render/components/CartContext.js +1 -1
  102. package/dist/render/components/CartDrawer.js +2 -2
  103. package/dist/render/components/CatalogFilterBarSection.d.ts +1 -1
  104. package/dist/render/components/CatalogFilterBarSection.js +1 -1
  105. package/dist/render/components/ChatWidget.js +1 -1
  106. package/dist/render/components/Collections.js +1 -1
  107. package/dist/render/components/CompatibleTyres.js +1 -1
  108. package/dist/render/components/ConsentPanel.js +1 -1
  109. package/dist/render/components/ContactRouting.js +1 -1
  110. package/dist/render/components/CouponField.js +1 -1
  111. package/dist/render/components/CurrencyContext.js +1 -1
  112. package/dist/render/components/Events.d.ts +2 -1
  113. package/dist/render/components/Events.js +1 -1
  114. package/dist/render/components/FitmentTable.js +1 -1
  115. package/dist/render/components/FooterGroup.d.ts +3 -2
  116. package/dist/render/components/FooterGroup.js +1 -1
  117. package/dist/render/components/FooterLogo.d.ts +2 -1
  118. package/dist/render/components/FooterMenu.js +1 -1
  119. package/dist/render/components/FooterPayment.d.ts +1 -2
  120. package/dist/render/components/FooterPayment.js +1 -1
  121. package/dist/render/components/FooterSocial.d.ts +1 -2
  122. package/dist/render/components/FooterSocial.js +1 -1
  123. package/dist/render/components/FormBlock.js +1 -1
  124. package/dist/render/components/GalleryGrid.d.ts +2 -1
  125. package/dist/render/components/GalleryGrid.js +1 -1
  126. package/dist/render/components/GalleryItem.js +1 -1
  127. package/dist/render/components/GalleryShowcase.js +1 -1
  128. package/dist/render/components/Header.js +1 -1
  129. package/dist/render/components/HeaderTools.js +1 -1
  130. package/dist/render/components/Lightbox.d.ts +2 -2
  131. package/dist/render/components/Lightbox.js +1 -1
  132. package/dist/render/components/LinkedProductHero.d.ts +2 -0
  133. package/dist/render/components/Notice.d.ts +6 -0
  134. package/dist/render/components/Notice.js +1 -0
  135. package/dist/render/components/PopupFrame.d.ts +17 -4
  136. package/dist/render/components/PopupFrame.js +1 -1
  137. package/dist/render/components/ProductGallery.js +1 -1
  138. package/dist/render/components/ProductGridSection.d.ts +2 -1
  139. package/dist/render/components/ProductGridSection.js +1 -1
  140. package/dist/render/components/ProductHeroPanel.d.ts +3 -1
  141. package/dist/render/components/ProductHeroPanel.js +1 -1
  142. package/dist/render/components/ProductLightbox.js +1 -1
  143. package/dist/render/components/ReviewForm.js +1 -1
  144. package/dist/render/components/SpecTable.d.ts +2 -1
  145. package/dist/render/components/SpecTable.js +1 -1
  146. package/dist/render/components/SubscribePopup.js +2 -2
  147. package/dist/render/components/TyreFitVerdicts.d.ts +2 -1
  148. package/dist/render/components/TyreFitVerdicts.js +1 -1
  149. package/dist/render/components/TyreRenderSvg.js +1 -1
  150. package/dist/render/components/TyreVehicleFitment.js +1 -1
  151. package/dist/render/components/WheelCardFrame.d.ts +3 -0
  152. package/dist/render/components/WheelCardFrame.js +1 -1
  153. package/dist/render/components/booking/BookingRegions.js +1 -1
  154. package/dist/render/components/catalog/CatalogFilterBar.d.ts +4 -4
  155. package/dist/render/components/catalog/CatalogFilterBar.js +1 -1
  156. package/dist/render/components/catalog/CatalogFilterContext.d.ts +5 -3
  157. package/dist/render/components/catalog/CatalogFilterContext.js +1 -1
  158. package/dist/render/components/catalog/FilterPill.d.ts +3 -1
  159. package/dist/render/components/catalog/FilterPill.js +1 -1
  160. package/dist/render/components/checkout/CheckoutPageClient.d.ts +4 -0
  161. package/dist/render/components/checkout/CheckoutPageClient.js +1 -1
  162. package/dist/render/components/checkout/checkout-parts.js +1 -1
  163. package/dist/render/components/checkout/checkout-state.d.ts +25 -1
  164. package/dist/render/components/checkout/checkout-state.js +3 -3
  165. package/dist/render/components/fitment/StockFitmentCard.js +1 -1
  166. package/dist/render/components/pdp-dynamic/DynamicProductGallery.js +1 -1
  167. package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +2 -0
  168. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
  169. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  170. package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -1
  171. package/dist/render/components/product-hero/TyreHeroFitment.d.ts +2 -1
  172. package/dist/render/components/product-hero/TyreHeroFitment.js +1 -1
  173. package/dist/render/components/product-hero/VehicleQuestion.d.ts +1 -6
  174. package/dist/render/components/product-hero/VehicleQuestion.js +1 -1
  175. package/dist/render/components/product-hero/WheelHeroFitment.js +1 -1
  176. package/dist/render/components/product-hero/trust-bullets.d.ts +5 -0
  177. package/dist/render/components/product-hero/trust-bullets.js +1 -0
  178. package/dist/render/components/useModalDismiss.d.ts +2 -1
  179. package/dist/render/components/useModalDismiss.js +1 -1
  180. package/dist/render/components/useTyreFitAnswer.d.ts +1 -0
  181. package/dist/render/components/useTyreFitAnswer.js +1 -1
  182. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  183. package/dist/render/components/wheels-plp/PlpNotifyMeDialog.js +1 -1
  184. package/dist/render/lib/api/index.d.ts +6 -3
  185. package/dist/render/lib/api/index.js +1 -1
  186. package/dist/render/lib/api/types.d.ts +3 -0
  187. package/dist/render/lib/booking/appointment-time.d.ts +2 -0
  188. package/dist/render/lib/booking/appointment-time.js +1 -0
  189. package/dist/render/lib/catalog/from-wheel.js +1 -1
  190. package/dist/render/lib/catalog/plp-item.js +1 -1
  191. package/dist/render/lib/checkout/pay-first.d.ts +34 -0
  192. package/dist/render/lib/checkout/pay-first.js +1 -0
  193. package/dist/render/lib/checkout/stripe-appearance.d.ts +10 -0
  194. package/dist/render/lib/checkout/stripe-appearance.js +1 -0
  195. package/dist/render/lib/checkout/wallet-return.d.ts +1 -1
  196. package/dist/render/lib/commerce.d.ts +1 -0
  197. package/dist/render/lib/commerce.js +1 -1
  198. package/dist/render/lib/content/legacy-block-align.d.ts +2 -0
  199. package/dist/render/lib/content/legacy-block-align.js +1 -0
  200. package/dist/render/lib/content/menu-row.d.ts +0 -3
  201. package/dist/render/lib/content/menu-row.js +1 -1
  202. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/meta.js +1 -1
  203. package/dist/render/lib/document/blocks/commerce/BundleOffer/meta.js +1 -1
  204. package/dist/render/lib/document/blocks/commerce/CheckoutCTA/meta.js +1 -1
  205. package/dist/render/lib/document/blocks/commerce/Collections/meta.js +1 -1
  206. package/dist/render/lib/document/blocks/commerce/CompatibleTyres/meta.js +1 -1
  207. package/dist/render/lib/document/blocks/commerce/DeliveryOptions/meta.js +1 -1
  208. package/dist/render/lib/document/blocks/commerce/DetailRows/meta.js +1 -1
  209. package/dist/render/lib/document/blocks/commerce/EuTyreLabel/meta.js +1 -1
  210. package/dist/render/lib/document/blocks/commerce/FitmentFinder/meta.js +1 -1
  211. package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -1
  212. package/dist/render/lib/document/blocks/commerce/GalleryB/render.js +1 -1
  213. package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
  214. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
  215. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.d.ts +6 -0
  216. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.js +1 -1
  217. package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
  218. package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.js +1 -1
  219. package/dist/render/lib/document/blocks/commerce/SpecTable/meta.js +1 -1
  220. package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
  221. package/dist/render/lib/document/blocks/commerce/TyreFitment/meta.js +1 -1
  222. package/dist/render/lib/document/blocks/commerce/TyreSizes/meta.js +1 -1
  223. package/dist/render/lib/document/blocks/service/ContactCards/meta.js +1 -1
  224. package/dist/render/lib/document/blocks/service/ContactRouting/meta.js +1 -1
  225. package/dist/render/lib/document/blocks/service/Events/render.js +1 -1
  226. package/dist/render/lib/document/blocks/service/FooterGroup/render.js +1 -1
  227. package/dist/render/lib/document/blocks/service/FooterPayment/meta.js +1 -1
  228. package/dist/render/lib/document/blocks/service/FooterSocial/meta.js +1 -1
  229. package/dist/render/lib/document/blocks/service/MessagingCards/meta.js +1 -1
  230. package/dist/render/lib/document/blocks/service/OpeningHours/meta.js +1 -1
  231. package/dist/render/lib/document/blocks/service/RateTable/meta.js +1 -1
  232. package/dist/render/lib/document/blocks/service/SubmitBuild/meta.js +1 -1
  233. package/dist/render/lib/document/blocks/service/Subscribe/meta.js +1 -1
  234. package/dist/render/lib/document/blocks/service/SubscribeBlogs/meta.js +1 -1
  235. package/dist/render/lib/document/lazy-draws.js +1 -1
  236. package/dist/render/lib/document/render-client.d.ts +8 -3
  237. package/dist/render/lib/document/render-client.js +1 -1
  238. package/dist/render/lib/document/section-to-box-rows-reviews.js +1 -1
  239. package/dist/render/lib/document/storefront-root.d.ts +0 -2
  240. package/dist/render/lib/document/storefront-root.js +1 -1
  241. package/dist/render/lib/field-input.d.ts +1 -0
  242. package/dist/render/lib/field-input.js +1 -0
  243. package/dist/render/lib/sections/content-cap-gutter.d.ts +1 -0
  244. package/dist/render/lib/sections/content-cap-gutter.js +1 -0
  245. package/dist/render/lib/sections/hero-trust-bullets.d.ts +2 -0
  246. package/dist/render/lib/sections/hero-trust-bullets.js +1 -0
  247. package/dist/render/lib/tyres/spec-sheet.d.ts +17 -0
  248. package/dist/render/lib/tyres/spec-sheet.js +1 -1
  249. package/dist/render/lib/tyres/tyre-fit-copy.js +1 -1
  250. package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +3 -1
  251. package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -1
  252. package/dist/render/lib/use-scope-class.d.ts +1 -0
  253. package/dist/render/lib/use-scope-class.js +1 -0
  254. package/dist/render/lib/wheels/catalog-default-layout.d.ts +3 -3
  255. package/dist/render/lib/wheels/catalog-default-layout.js +1 -1
  256. package/dist/render/lib/wheels/catalog-filters.d.ts +2 -2
  257. package/dist/render/lib/wheels/catalog-filters.js +1 -1
  258. package/dist/render/lib/wheels/grid-source.d.ts +7 -1
  259. package/dist/render/lib/wheels/grid-source.js +1 -1
  260. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  261. package/dist/words.d.ts +46 -50
  262. package/dist/words.js +6 -6
  263. package/package.json +4 -4
  264. package/dist/chunks/EditorPreviewCheckout-27GNLSNR.js +0 -4
  265. package/dist/chunks/chunk-3TBLX25X.js +0 -1
  266. package/dist/chunks/chunk-4V6BLJSG.js +0 -1
  267. package/dist/chunks/chunk-K26JUDGZ.js +0 -1
  268. package/dist/chunks/chunk-SJODSVWU.js +0 -1
  269. package/dist/chunks/chunk-WPHE7RI4.js +0 -246
  270. package/dist/render/components/product-hero/hero-content.d.ts +0 -7
  271. package/dist/render/components/product-hero/hero-content.js +0 -1
  272. package/dist/render/components/useIsLightTheme.d.ts +0 -1
  273. package/dist/render/components/useIsLightTheme.js +0 -1
  274. package/dist/render/lib/content/product-hero.d.ts +0 -14
  275. package/dist/render/lib/content/product-hero.js +0 -1
  276. package/dist/render/lib/wheels/collections.d.ts +0 -22
  277. package/dist/render/lib/wheels/collections.js +0 -1
  278. /package/dist/chunks/{chunk-WPHE7RI4.js.LEGAL.txt → chunk-BOJGJXIU.js.LEGAL.txt} +0 -0
@@ -1,12 +1,25 @@
1
- import { type ReactNode } from "react";
1
+ import { type ReactNode, type RefObject } from "react";
2
2
  import type { PopupLook } from "efficient-web-builder/format/lib/popup/look";
3
+ export declare const SITE_TINT = "color-mix(in oklab, var(--bg) 78%, transparent)";
4
+ export interface SiteScrim {
5
+ blur: 6 | 8;
6
+ layer?: "popup" | "consent";
7
+ sheetOnPhone?: boolean;
8
+ scroll?: boolean;
9
+ focusRef?: RefObject<HTMLElement | null>;
10
+ trapRef?: RefObject<HTMLElement | null>;
11
+ animation?: string;
12
+ }
13
+ export declare const SITE_BLUR: Record<SiteScrim["blur"], string>;
3
14
  export declare function tintOf(hex: string, opacity: number): string;
4
- export default function PopupFrame({ look, open, inline, modal, onClose, label, children, }: {
5
- look: PopupLook;
15
+ export default function PopupFrame({ look, site, open, inline, modal, onClose, label, labelledBy, children, }: {
16
+ look?: PopupLook;
17
+ site?: SiteScrim;
6
18
  open?: boolean;
7
19
  inline?: boolean;
8
20
  modal?: boolean;
9
21
  onClose?: () => void;
10
- label: string;
22
+ label?: string;
23
+ labelledBy?: string;
11
24
  children?: ReactNode;
12
25
  }): import("react").JSX.Element | null;
@@ -1 +1 @@
1
- "use client";import{jsx as c,jsxs as g}from"react/jsx-runtime";import{useCallback as m,useRef as h}from"react";import{useModalDismiss as b}from"./useModalDismiss.js";const y={"top-left":{justifyContent:"flex-start",alignItems:"flex-start"},"top-center":{justifyContent:"center",alignItems:"flex-start"},"top-right":{justifyContent:"flex-end",alignItems:"flex-start"},left:{justifyContent:"flex-start",alignItems:"center"},center:{justifyContent:"center",alignItems:"center"},right:{justifyContent:"flex-end",alignItems:"center"},"bottom-left":{justifyContent:"flex-start",alignItems:"flex-end"},"bottom-center":{justifyContent:"center",alignItems:"flex-end"},"bottom-right":{justifyContent:"flex-end",alignItems:"flex-end"}};function C(t,s){const e=Number.parseInt(t.slice(1),16),n=e>>16&255,r=e>>8&255,i=e&255;return`rgba(${n}, ${r}, ${i}, ${Math.round(s)/100})`}function j({look:t,open:s=!0,inline:e=!1,modal:n=!0,onClose:r,label:i,children:d}){const f=h(null),l=m(()=>r?.(),[r]),a=n&&!e;if(b({active:a&&s,onDismiss:l,focusRef:f}),!e&&!s)return null;const p=u=>{!a||!t.outsideClick||u.target===u.currentTarget&&l()},o=t.height==="full",x=g("div",{ref:f,tabIndex:-1,"data-popup-panel":"",className:"relative bg-bg text-fg outline-none",style:{width:t.fullWidth?"100%":`min(${t.width}px, 100%)`,height:o?"100%":void 0,maxHeight:"100%",overflow:"auto",borderRadius:t.fullWidth||o?0:"var(--sf-section-radius, 0px)",...n||e?null:{pointerEvents:"auto"}},children:[t.closeButton!=="none"?c("button",{type:"button","aria-label":"Close",onClick:e?void 0:l,"data-popup-close":t.closeButton,className:"absolute z-[5] flex h-[38px] w-[38px] items-center justify-center border border-line bg-bg font-mono text-[14px] text-fg-dim transition-colors hover:border-accent hover:text-fg",style:t.closeButton==="outside"?{top:-46,right:0}:{top:12,right:12},children:"×"}):null,d]});return c("div",{role:n||e?"dialog":"region","aria-modal":a?!0:void 0,"aria-label":i,"data-popup-frame":e?"inline":"live",onClick:p,className:e?"relative flex min-h-[100vh] w-full":"fixed inset-0 z-[90] flex",style:{...y[t.placement],background:C(t.tintColor,t.tintOpacity),padding:t.fullWidth||o?0:24,...n||e?null:{pointerEvents:"none"}},children:x})}export{j as default,C as tintOf};
1
+ "use client";import{jsx as f,jsxs as h}from"react/jsx-runtime";import{useCallback as y,useRef as j}from"react";import{useModalDismiss as v}from"./useModalDismiss.js";const C="color-mix(in oklab, var(--bg) 78%, transparent)",I={6:"backdrop-blur-[6px]",8:"backdrop-blur-[8px]"},R={popup:"z-[90]",consent:"z-[95]"},N={"top-left":{justifyContent:"flex-start",alignItems:"flex-start"},"top-center":{justifyContent:"center",alignItems:"flex-start"},"top-right":{justifyContent:"flex-end",alignItems:"flex-start"},left:{justifyContent:"flex-start",alignItems:"center"},center:{justifyContent:"center",alignItems:"center"},right:{justifyContent:"flex-end",alignItems:"center"},"bottom-left":{justifyContent:"flex-start",alignItems:"flex-end"},"bottom-center":{justifyContent:"center",alignItems:"flex-end"},"bottom-right":{justifyContent:"flex-end",alignItems:"flex-end"}};function T(t,e){const r=Number.parseInt(t.slice(1),16),n=r>>16&255,a=r>>8&255,s=r&255;return`rgba(${n}, ${a}, ${s}, ${Math.round(e)/100})`}function w({look:t,site:e,open:r=!0,inline:n=!1,modal:a=!0,onClose:s,label:c,labelledBy:m,children:p}){const d=j(null),o=y(()=>s?.(),[s]),i=a&&!n;if(v({active:i&&r,onDismiss:o,focusRef:e?e.focusRef:d,trapRef:e?.trapRef}),!n&&!r)return null;if(e){const l=["fixed inset-0",R[e.layer??"popup"],"flex items-center justify-center",e.scroll?"overflow-y-auto":"","p-6",I[e.blur],e.sheetOnPhone?"max-[880px]:items-end max-[880px]:p-0":""].filter(Boolean).join(" ");return f("div",{role:"dialog","aria-modal":"true","aria-label":c,"aria-labelledby":m,"data-popup-frame":"site",onClick:x=>{x.target===x.currentTarget&&o()},className:l,style:{background:C,animation:e.animation},children:p})}if(!t)return null;const g=l=>{!i||!t.outsideClick||l.target===l.currentTarget&&o()},u=t.height==="full",b=h("div",{ref:d,tabIndex:-1,"data-popup-panel":"",className:"relative bg-bg text-fg outline-none",style:{width:t.fullWidth?"100%":`min(${t.width}px, 100%)`,height:u?"100%":void 0,maxHeight:"100%",overflow:"auto",borderRadius:t.fullWidth||u?0:"var(--sf-section-radius, 0px)",...a||n?null:{pointerEvents:"auto"}},children:[t.closeButton!=="none"?f("button",{type:"button","aria-label":"Close",onClick:n?void 0:o,"data-popup-close":t.closeButton,className:"absolute z-[5] flex h-[38px] w-[38px] items-center justify-center border border-line bg-bg font-mono text-[14px] text-fg-dim transition-colors hover:border-accent hover:text-fg",style:t.closeButton==="outside"?{top:-46,right:0}:{top:12,right:12},children:"×"}):null,p]});return f("div",{role:a||n?"dialog":"region","aria-modal":i?!0:void 0,"aria-label":c,"data-popup-frame":n?"inline":"live",onClick:g,className:n?"relative flex min-h-[100vh] w-full":"fixed inset-0 z-[90] flex",style:{...N[t.placement],background:T(t.tintColor,t.tintOpacity),padding:t.fullWidth||u?0:24,...a||n?null:{pointerEvents:"none"}},children:b})}export{I as SITE_BLUR,C as SITE_TINT,w as default,T as tintOf};
@@ -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};
@@ -28,6 +28,7 @@ export declare const TITLE_SIZES: readonly [{
28
28
  export type TitleSize = (typeof TITLE_SIZES)[number]["value"];
29
29
  interface Props {
30
30
  gap?: number | string;
31
+ gapPhone?: unknown;
31
32
  num?: string;
32
33
  title?: string;
33
34
  titleSize?: TitleSize;
@@ -60,5 +61,5 @@ interface Props {
60
61
  showCardBuy?: boolean;
61
62
  showCardPage?: boolean;
62
63
  }
63
- export default function ProductGridSection({ num, catalog, kinds, title, titleSize, padTop, description, link, products: Products, wheels, source, columns, limit, editing, contentCapped, imageBackground, spinOnHover, coverIndex, indexBadge, outline, showBadge, fieldUsage, showCardPrice, showCardFinishes, showCardSizes, showCardBuy, showCardPage, cardImage, gap: gapProp, }: Props): import("react").JSX.Element | null;
64
+ export default function ProductGridSection({ num, catalog, kinds, title, titleSize, padTop, description, link, products: Products, wheels, source, columns, limit, editing, contentCapped, imageBackground, spinOnHover, coverIndex, indexBadge, outline, showBadge, fieldUsage, showCardPrice, showCardFinishes, showCardSizes, showCardBuy, showCardPage, cardImage, gap: gapProp, gapPhone, }: Props): import("react").JSX.Element | null;
64
65
  export {};
@@ -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 f,Fragment as Be}from"react/jsx-runtime";import{GRID_CARD_SHOW as D}from"../lib/sections/card-show-defaults.js";import{useScopeClass as He}from"../lib/use-scope-class.js";import{useEffect as _,useMemo as p,useState as ke}from"react";import{CARD_IMAGE_BG_OFF as De,resolveCardImageBackground as Ge}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as Ue}from"efficient-web-builder/format/lib/content/card-image-shape";import{containerGapProps 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,cardRowsGap as qe,cardRowsGridStyle as Ve}from"./WheelCardFrame.js";import{ProductCardChromeProvider as Ye}from"./ProductCardChrome.js";import{gridClassImageSizes as Je}from"../lib/sections/card-image-sizes.js";import{fillRowCss as Qe}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 er,summarySetBuild as rr}from"../lib/wheels/set-mode.js";import{answersForKind as se}from"../lib/content/field-usage.js";import{wheelCardEyebrowShows as tr}from"./ProductCardEyebrow.js";import nr from"./NoCurrencyNote.js";import{DEFAULT_CARD_OUTLINE as sr,cardIndexCss as ar,parseCardIndexFormat as or}from"efficient-web-builder/format/lib/sections/product-card-style";import{DEFAULT_COVER_INDEX as ir}from"../lib/wheels/cover-rendering.js";import{SITE_WIDTH_CAP as lr,centredCap as mr}from"efficient-web-builder/format/lib/content/page-width";import{ProductCatalogProvider as dr,SectionWheelsProvider as pr}from"./ProductRef.js";import{useCurrency as cr}from"./CurrencyContext.js";import{COLLECTION_ATTR as gr,useCatalogFilter as ur}from"./catalog/CatalogFilterContext.js";import{renderGold as G,renderHeadline as xr}from"efficient-web-builder/render/components/goldPhrases";import{applyCatalogFilters as hr}from"../lib/wheels/catalog-filters.js";import{normalizeCatalogRows as fr}from"../lib/wheels/wheel-summary-casing.js";import yr from"./TyreSummaryCard.js";import{itemKind as U,plpKindNoun as Cr}from"../lib/catalog/plp-item.js";import{filterBarCategoryOf as wr,gridKindsOf as br,gridRowsOf as vr}from"../lib/wheels/grid-source.js";import{useUnifiedProductCatalog as Sr}from"./useProductCatalog.js";import{STICKY_UNDERHEADER_CLASS as Mr}from"efficient-web-builder/render/lib/document/header-clearance";import{finishFamiliesOf as $r}from"../lib/wheels/finish-defaults.js";import{lugCountsOf as Nr}from"../lib/wheels/lug-count.js";import{diametersOf as _r}from"../lib/wheels/size-range.js";import{say as Er}from"efficient-web-builder/format/lib/editor-words";import{DEFAULT_TITLE_SIZE as Tr}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 zr(y){return(oe.find(c=>c.value===y)??oe.find(c=>c.value===Tr)).cls}function Lr({num:y,catalog:c,kinds:E,title:T,titleSize:ie,padTop:j,description:b,link:C,products:le,wheels:me,source:m,columns:de,limit:a,editing:w,contentCapped:pe=!1,imageBackground:ce,spinOnHover:ge,coverIndex:ue,indexBadge:xe,outline:he,showBadge:fe,fieldUsage:g,showCardPrice:ye,showCardFinishes:Ce,showCardSizes:we,showCardBuy:be,showCardPage:ve,cardImage:Se,gap:Me,gapPhone:$e}){const z=p(()=>g?se(g,"alloy-wheel"):void 0,[g]),Ne=p(()=>g?se(g,"tyre"):void 0,[g]),e=He("pg"),d=ae[Math.min(6,Math.max(1,de??4))]??ae[4],W=typeof a=="number"&&a>0,X=pe,K=Sr(w===!0&&!!m),i=p(()=>m?fr(vr(m,E,K??c??[])):null,[c,K,m,E]),u=wr(m),x=u!==null,{filters:v,reportCount:L,reportLugs:I,reportSizes:A,reportFinishes:P,reportCategories:R,vehicle:Z}=ur(),{currency:O}=cr(),F=x&&!!v.process&&v.process!==u,t=p(()=>i?x?hr(i,v,O,Z.fit):i:null,[i,x,v,O,Z.fit]);_(()=>(R(e,u===null?[]:[u]),()=>R(e,[])),[u,R,e]),_(()=>{if(x)return L(e,F?0:t?.length??0),()=>L(e,0)},[x,F,t,L,e]);const _e=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)||tr({kind:!1,brand:!1,process:o},z??[])},[t,z]),S=p(()=>({lugs:Nr(i??[]),sizes:_r(i??[]),finishes:$r(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 h=je("ProductGrid",Me,"both",$e),q=h.className.includes(We),B=`${e} grid${h.className} bg-[var(--catalog-grid-bg)] ${d}`,Ee=q?`${B} ${Ze}`:B,Te=q?{...h.style,...Ve(qe(h))}:h.style,ze=t?t.length>0?r("div",{className:Ee,style:Te,children:t.map((n,o)=>U(n)==="tyre"?r(yr,{item:n,currency:O,editing:w,fieldUsage:Ne},`tyre:${n.slug}-${o}`):r(Ke,{wheel:n,variant:"catalog"},`${n.slug}-${o}`))}):w?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:Er("No products in “{name}” yet",{name:m?.name??""})})}):null:r(le,{className:B,style:h.style,minEmptyHeight:320}),M=t?t.length:null,V=Cr(br(m,E)),Le=y||T||b||C?f("div",{className:`${Mr} 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:[f("div",{className:"flex min-w-0 items-end gap-6 max-[800px]:flex-col max-[800px]:items-stretch max-[800px]:gap-3",children:[y&&r("span",{className:`font-mono ${s.labelLarge} leading-none uppercase tracking-[0.22em] text-fg-dim`,children:G(y)}),T&&r("h2",{className:`${zr(ie)} leading-none text-fg max-[800px]:leading-[1] [&>span]:block`,children:xr(T,!1)})]}),(b||C||M!==null)&&f("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)}),C&&f(Xe,{href:C.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(C.text),r("span",{"aria-hidden":!0,children:"→"})]}),M!==null&&f("span",{className:`whitespace-nowrap font-mono ${s.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:[M," ",M===1?V.one:V.many]})]})]}):null,Ie=typeof j=="number"?j:120,Y=or(xe),$=p(()=>{if(!t)return null;const n=t.map(o=>U(o)!=="tyre"&&er(rr(o))?2:1);return ne(n,a)?re(d,n,a):null},[t,d,a]),[Ae,Pe]=ke("");_(()=>{if(t)return;const n=document.querySelector(`.${e}`);if(!n)return;const o=()=>{const l=[...n.children].map(Fe=>Fe.classList.contains("col-span-2")?2:1);Pe(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 Re=$?$[0].tracks:t?W?Math.min(t.length,a):t.length:void 0,N=$?te(e,$,t.length):Ae,J=N?"":Qe(e,d,{limit:a,cards:t?.length}),Q=ar(e,Y),ee=f(Be,{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,ze,r(nr,{editing:w})]});if(F)return null;const H=r("section",{...x?{[gr]: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":`${Ie}px`,...Ue(Se)},children:X?r("div",{style:mr(lr),children:ee}):ee}),Oe=i?H:w?r(dr,{children:H}):r(pr,{wheels:me,children:H});return r(Ye,{imageSizes:Je(d,Re),imageBackgroundFill:Ge(ce,De),spinOnHover:ge??!0,coverIndex:ue??ir,indexBadge:Y,outline:he??sr,showBadge:fe??!0,fieldUsage:z,reserveEyebrow:_e,showCardPrice:ye??!0,showCardFinishes:Ce??!0,showCardSizes:we??D.showCardSizes,showCardBuy:be??D.showCardBuy,showCardPage:ve??D.showCardPage,children:Oe})}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";import{Notice as fe}from"./Notice.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))]"},xe=50,b="font-[family-name:var(--pp-fieldlabel-font,var(--font-mono))] text-[length:var(--pp-fieldlabel-size,12px)]";function ue(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 be({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(),xe);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=ue(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(fe,{role:"alert",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 ge({content:e,form:i=null}){const{isOpen:p,mode:f,close:o,markSent:c,prefillEmail:g,signupSource:h}=ce();return r(be,{content:e??ne,open:p,onClose:o,onSent:c,prefillEmail:g,source:h,mode:f,form:i})}export{be as SubscribePopupView,ge as default};
@@ -1,7 +1,8 @@
1
1
  import { type TyreFitAnswer } from "../lib/tyres/tyre-vehicle-fitment.js";
2
2
  import type { TyreVariant } from "../lib/api/index.js";
3
- export default function TyreFitVerdicts({ variants, answer, loading, }: {
3
+ export default function TyreFitVerdicts({ variants, answer, loading, onRetry, }: {
4
4
  variants: TyreVariant[];
5
5
  answer: TyreFitAnswer | null;
6
6
  loading?: boolean;
7
+ onRetry?: () => void;
7
8
  }): import("react").JSX.Element | null;
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import{TYRE_FIT_LABEL as m,tyreFitHeadline as o}from"../lib/tyres/tyre-fit-copy.js";import{variantFitStatus as d}from"../lib/tyres/tyre-vehicle-fitment.js";const t={body:"text-[length:var(--size-body,18px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},g={fits:{className:"font-medium",style:{color:"var(--green)"}},doesNotFit:{className:"text-fg-dim"},unknown:{className:"text-fg-dim"}};function p({variants:n,answer:l,loading:c=!1}){return l?i("div",{className:"mt-10",children:[e("p",{className:`max-w-[68ch] font-serif ${t.body} italic leading-[1.55] text-fg-dim`,children:o(l)}),e("ul",{className:"mt-6 grid gap-[2px] border border-line bg-line",children:n.map(s=>{const a=d(l,s.sku),r=g[a];return i("li",{className:"flex items-baseline justify-between gap-6 bg-bg px-5 py-4",children:[e("span",{className:`font-mono ${t.labelLarge} uppercase tracking-[0.14em] text-fg`,children:s.size}),e("span",{className:`font-mono ${t.labelSmall} uppercase tracking-[0.24em] ${r.className}`,style:r.style,children:m[a]})]},s.sku)})})]}):c?e("p",{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.24em] text-fg-dim`,children:"Checking your car…"}):null}export{p as default};
1
+ "use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import{TYRE_FIT_LABEL as m,tyreFitHeadline as d}from"../lib/tyres/tyre-fit-copy.js";import{variantFitStatus as g}from"../lib/tyres/tyre-vehicle-fitment.js";const t={body:"text-[length:var(--size-body,18px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},p={fits:{className:"font-medium",style:{color:"var(--green)"}},doesNotFit:{className:"text-fg-dim"},unknown:{className:"text-fg-dim"}};function u({variants:c,answer:l,loading:o=!1,onRetry:s}){return l?i("div",{className:"mt-10",children:[e("p",{className:`max-w-[68ch] font-serif ${t.body} italic leading-[1.55] text-fg-dim`,children:d(l)}),l.failed&&s?e("button",{type:"button",onClick:s,className:`mt-4 cursor-pointer font-mono ${t.labelLarge} uppercase tracking-[0.18em] text-accent underline-offset-4 hover:underline`,children:"Try again"}):null,e("ul",{className:"mt-6 grid gap-[2px] border border-line bg-line",children:c.map(a=>{const r=g(l,a.sku),n=p[r];return i("li",{className:"flex items-baseline justify-between gap-6 bg-bg px-5 py-4",children:[e("span",{className:`font-mono ${t.labelLarge} uppercase tracking-[0.14em] text-fg`,children:a.size}),e("span",{className:`font-mono ${t.labelSmall} uppercase tracking-[0.24em] ${n.className}`,style:n.style,children:m[r]})]},a.sku)})})]}):o?e("p",{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.24em] text-fg-dim`,children:"Checking your car…"}):null}export{u 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 t,jsxs as l}from"react/jsx-runtime";import h from"./SectionBand.js";import{useEffect as y,useRef as T}from"react";import b from"efficient-web-builder/render/components/SectionHeader";import N from"./TyreFitVerdicts.js";import{useTyreFitAnswer as _}from"./useTyreFitAnswer.js";import E from"./fitment/FitmentPickerGrid.js";import{useVehicleFit as F}from"./fitment/useVehicleFit.js";import{tyreFitQuery as I}from"../lib/tyres/tyre-vehicle-fitment.js";const v="Will it fit *your car?*",w="Pick your vehicle and we’ll tell you which of these sizes matches what it came on.",g="border-b border-line py-[120px] max-[1100px]:py-20",j="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20";function k({num:a,title:p=v,description:m=w,escapeText:r,escapeHref:o,omitHead:i=!1,capped:u=!0,slug:d,variants:f,onAnswer:n}){const c=F({autoApply:!0}),{answer:e,loading:x}=_(d,I(c.applied?.vehicle)),s=T(n);return s.current=n,y(()=>{s.current?.(e)},[e]),l(h,{className:i?j:g,capped:u,children:[i?null:t(b,{num:a,title:p,description:m,accent:!0}),t(E,{cascade:c.cascade}),r&&o?l("a",{href:o,className:"mt-6 inline-block font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-accent underline-offset-4 hover:underline",children:[r," →"]}):null,t(N,{variants:f,answer:e,loading:x})]})}export{g as BAND_INLINE,j as BAND_OWN_BOX,w as TYRE_FITMENT_DESCRIPTION,v as TYRE_FITMENT_TITLE,k as default};
1
+ "use client";import{jsx as r,jsxs as l}from"react/jsx-runtime";import y from"./SectionBand.js";import{useEffect as T,useRef as b}from"react";import N from"efficient-web-builder/render/components/SectionHeader";import _ from"./TyreFitVerdicts.js";import{useTyreFitAnswer as E}from"./useTyreFitAnswer.js";import F from"./fitment/FitmentPickerGrid.js";import{useVehicleFit as I}from"./fitment/useVehicleFit.js";import{tyreFitQuery as v}from"../lib/tyres/tyre-vehicle-fitment.js";const w="Will it fit *your car?*",R="Pick your vehicle and we’ll tell you which of these sizes matches what it came on.",g="border-b border-line py-[120px] max-[1100px]:py-20",j="border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20";function k({num:a,title:p=w,description:m=R,escapeText:t,escapeHref:o,omitHead:i=!1,capped:u=!0,slug:d,variants:f,onAnswer:n}){const c=I({autoApply:!0}),{answer:e,loading:x,retry:h}=E(d,v(c.applied?.vehicle)),s=b(n);return s.current=n,T(()=>{s.current?.(e)},[e]),l(y,{className:i?j:g,capped:u,children:[i?null:r(N,{num:a,title:p,description:m,accent:!0}),r(F,{cascade:c.cascade}),t&&o?l("a",{href:o,className:"mt-6 inline-block font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-accent underline-offset-4 hover:underline",children:[t," →"]}):null,r(_,{variants:f,answer:e,loading:x,onRetry:h})]})}export{g as BAND_INLINE,j as BAND_OWN_BOX,R as TYRE_FITMENT_DESCRIPTION,w as TYRE_FITMENT_TITLE,k as default};
@@ -2,6 +2,9 @@ import type { ComponentProps, CSSProperties, ReactNode } from "react";
2
2
  import { type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
3
3
  export declare const CARD_ROWS_GRID_CLASS = "sf-card-rows";
4
4
  export declare const cardRowsGridStyle: (rowGap: string) => CSSProperties;
5
+ export declare const cardRowsGap: (zone: {
6
+ style: CSSProperties;
7
+ }) => string;
5
8
  export declare const setPlateWidthCss: (gap: number | string) => string;
6
9
  export declare const GRID_GAP_PX = 2;
7
10
  export declare const CARD_PAD_X_PX = 32;
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as a,Fragment as p}from"react/jsx-runtime";import N from"next/link";import{Fragment as z}from"react";import{CARD_TEXT_SIZE as d,CardLookContext as J,CardRow as n}from"./card-pieces/card-row.js";import{cardOutlineClass as Q}from"efficient-web-builder/format/lib/sections/product-card-style";import{CARD_IMAGE_BG_OFF as U,cardImageBackgroundPaints as V,THEME_CARD_IMAGE_BG as Y}from"efficient-web-builder/format/lib/content/card-image-background";const pe="sf-card-rows",fe=e=>({rowGap:0,"--sf-card-row-gap":e}),ee=e=>`calc((100% - ${typeof e=="number"?`${e}px`:e}) / 2)`,G=2,re=32,j=e=>G+2*re+(e?16:0),k=(e,t)=>t===void 0?`${j(e)}px`:`calc(${t} + ${j(e)-G}px)`,xe=252,ae=16,ge=800,te="whitespace-nowrap",se=e=>typeof e=="string"?e:e.text;function he(e,t="·"){return e.map((s,o)=>{const l=se(s),f=typeof s!="string"&&s.accent;return a(z,{children:[r("span",{className:`${te}${f?" text-accent":""}`,children:o<e.length-1?`${l} ${t}`:l}),o<e.length-1?" ":null]},l)})}function oe({variant:e="catalog",wide:t=!1,setGridGap:s,href:o,identityLink:l=!1,outline:f="none",imageBackgroundFill:x=U,containerProps:S,probes:g,indexBadge:h,badges:u,image:m,imageSecond:D,plate:A,eyebrow:$,reserveEyebrow:X=!1,name:F,spec:I,price:L,swatches:M,sizes:W,buy:q,wholeCardLink:O=!1}){const c=e==="catalog",i=V(x),E=i&&x===Y,y=E?"bg-[var(--wheel-stage)] p-2":i?"p-2":"",P=i&&!E?{backgroundColor:x}:{},R=C=>r("figure",{className:"m-0 aspect-square [flex:0_0_auto] max-w-full w-[var(--sf-set-plate-w)] max-[800px]:w-full",style:{"--sf-set-plate-w":ee(k(i,s))},children:C}),B=c?a("div",{className:t?`relative mt-2 mb-5 flex items-center justify-center [&_img]:object-top max-[800px]:flex-col ${y}`:`relative mt-2 mb-5 flex aspect-square items-center justify-center overflow-hidden [&_img]:object-top ${y}`,style:t?{...P,borderRadius:10,columnGap:k(i,s),rowGap:ae}:{...P,borderRadius:"var(--sf-card-image-radius, 10px)"},children:[t?a(p,{children:[R(m),R(D??m)]}):m,A]}):a("div",{className:"relative mb-5 aspect-square overflow-hidden bg-bg p-8 [&_img]:object-top",style:{borderRadius:"var(--sf-card-image-radius, 10px)"},children:[m,A]}),T=`font-mono ${d.label} uppercase text-accent ${c?"tracking-[0.3em]":"tracking-[0.25em]"}`,K=$?r("div",{className:T,children:$}):c&&X?r("div",{"aria-hidden":!0,className:T,children:" "}):null,Z=r("div",{className:c?`mt-2 h-[60px] overflow-hidden break-words [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[60px] font-heading3 ${d.headingSmall2} font-medium uppercase leading-none tracking-[-0.02em]`:`mt-2 font-heading3 ${d.headingSmall1} font-medium tracking-[-0.02em]`,children:F}),H=r("div",{className:c?`mt-2 h-[38px] overflow-hidden [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[76px] font-mono ${d.labelLarge} leading-[19px] tracking-[0.14em] text-fg-dim`:`mt-[4px] font-mono ${d.labelLarge} tracking-[0.1em] text-fg-dim`,children:I}),_=[c?"sf-card sf-card-fill group relative flex min-h-[460px] flex-col bg-[var(--card-bg)] px-8 pt-8 pb-8 transition-colors duration-200 hover:bg-[var(--card-bg-hover)] [.sf-card-rows>&]:row-span-9 [.sf-card-rows>&]:mb-[var(--sf-card-row-gap)] [.sf-card-rows>&]:grid [.sf-card-rows>&]:grid-rows-subgrid [.sf-card-rows>&]:gap-y-0":"sf-card sf-card-fill group relative block bg-[var(--card-bg)] p-5 transition-colors duration-300 hover:bg-[var(--card-bg-hover)]",Q(f),t?"col-span-2 max-[800px]:col-span-1 @max-[720px]:col-span-1":""].filter(Boolean).join(" "),w=a(p,{children:[B,r(n,{children:K}),Z]}),b=a(p,{children:[H,L??a(p,{children:[r(n,{}),r(n,{})]}),M??r(n,{}),W??r(n,{}),q??r(n,{})]}),v=C=>r(J.Provider,{value:e,children:C});return v(o?l?a("article",{...S,className:_,children:[g,h,u,r(N,{href:o,className:`flex flex-col ${O?"after:absolute after:inset-0 after:content-['']":""} [.sf-card-rows>*>&]:row-span-3 [.sf-card-rows>*>&]:grid [.sf-card-rows>*>&]:grid-rows-subgrid [.sf-card-rows>*>&]:gap-y-0`,children:w}),b]}):a(N,{href:o,className:_,children:[g,h,u,w,b]}):a("article",{...S,className:_,children:[g,h,u,w,b]}))}export{re as CARD_PAD_X_PX,pe as CARD_ROWS_GRID_CLASS,te as CARD_SPEC_FIELD_CLASS,G as GRID_GAP_PX,xe as SET_PLATE_PX,ae as SET_STACK_GAP_PX,ge as SET_STACK_MAX_PX,fe as cardRowsGridStyle,he as cardSpecFields,oe as default,k as setBandGapCss,j as setBandGapPx,ee as setPlateWidthCss};
1
+ "use client";import{jsx as e,jsxs as a,Fragment as m}from"react/jsx-runtime";import{GAP_LENGTH_VAR as Z,GAP_PHONE_LENGTH_VAR as z}from"efficient-web-builder/format/lib/content/container-gap";import N from"next/link";import{Fragment as J}from"react";import{CARD_TEXT_SIZE as d,CardLookContext as Q,CardRow as n}from"./card-pieces/card-row.js";import{cardOutlineClass as U}from"efficient-web-builder/format/lib/sections/product-card-style";import{CARD_IMAGE_BG_OFF as Y,cardImageBackgroundPaints as rr,THEME_CARD_IMAGE_BG as er}from"efficient-web-builder/format/lib/content/card-image-background";const gr="sf-card-rows",ur=r=>({rowGap:0,"--sf-card-row-gap":r}),hr=r=>z in r.style?"var(--sf-card-row-gap-auto)":`var(${Z})`,ar=r=>`calc((100% - ${typeof r=="number"?`${r}px`:r}) / 2)`,T=2,tr=32,j=r=>T+2*tr+(r?16:0),k=(r,t)=>t===void 0?`${j(r)}px`:`calc(${t} + ${j(r)-T}px)`,_r=252,sr=16,wr=800,or="whitespace-nowrap",cr=r=>typeof r=="string"?r:r.text;function vr(r,t="·"){return r.map((s,o)=>{const l=cr(s),f=typeof s!="string"&&s.accent;return a(J,{children:[e("span",{className:`${or}${f?" text-accent":""}`,children:o<r.length-1?`${l} ${t}`:l}),o<r.length-1?" ":null]},l)})}function nr({variant:r="catalog",wide:t=!1,setGridGap:s,href:o,identityLink:l=!1,outline:f="none",imageBackgroundFill:x=Y,containerProps:A,probes:g,indexBadge:u,badges:h,image:p,imageSecond:D,plate:E,eyebrow:S,reserveEyebrow:L=!1,name:X,spec:F,price:I,swatches:H,sizes:M,buy:O,wholeCardLink:W=!1}){const c=r==="catalog",i=rr(x),$=i&&x===er,P=$?"bg-[var(--wheel-stage)] p-2":i?"p-2":"",R=i&&!$?{backgroundColor:x}:{},G=C=>e("figure",{className:"m-0 aspect-square [flex:0_0_auto] max-w-full w-[var(--sf-set-plate-w)] max-[800px]:w-full",style:{"--sf-set-plate-w":ar(k(i,s))},children:C}),q=c?a("div",{className:t?`relative mt-2 mb-5 flex items-center justify-center [&_img]:object-top max-[800px]:flex-col ${P}`:`relative mt-2 mb-5 flex aspect-square items-center justify-center overflow-hidden [&_img]:object-top ${P}`,style:t?{...R,borderRadius:10,columnGap:k(i,s),rowGap:sr}:{...R,borderRadius:"var(--sf-card-image-radius, 10px)"},children:[t?a(m,{children:[G(p),G(D??p)]}):p,E]}):a("div",{className:"relative mb-5 aspect-square overflow-hidden bg-bg p-8 [&_img]:object-top",style:{borderRadius:"var(--sf-card-image-radius, 10px)"},children:[p,E]}),y=`font-mono ${d.label} uppercase text-accent ${c?"tracking-[0.3em]":"tracking-[0.25em]"}`,B=S?e("div",{className:y,children:S}):c&&L?e("div",{"aria-hidden":!0,className:y,children:" "}):null,K=e("div",{className:c?`mt-2 h-[60px] overflow-hidden break-words [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[60px] font-heading3 ${d.headingSmall2} font-medium uppercase leading-none tracking-[-0.02em]`:`mt-2 font-heading3 ${d.headingSmall1} font-medium tracking-[-0.02em]`,children:X}),V=e("div",{className:c?`mt-2 h-[38px] overflow-hidden [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[76px] font-mono ${d.labelLarge} leading-[19px] tracking-[0.14em] text-fg-dim`:`mt-[4px] font-mono ${d.labelLarge} tracking-[0.1em] text-fg-dim`,children:F}),_=[c?"sf-card sf-card-fill group relative flex min-h-[460px] flex-col bg-[var(--card-bg)] px-8 pt-8 pb-8 transition-colors duration-200 hover:bg-[var(--card-bg-hover)] [.sf-card-rows>&]:row-span-9 [.sf-card-rows>&]:mb-[var(--sf-card-row-gap)] [.sf-card-rows>&]:grid [.sf-card-rows>&]:grid-rows-subgrid [.sf-card-rows>&]:gap-y-0":"sf-card sf-card-fill group relative block bg-[var(--card-bg)] p-5 transition-colors duration-300 hover:bg-[var(--card-bg-hover)]",U(f),t?"col-span-2 max-[800px]:col-span-1 @max-[720px]:col-span-1":""].filter(Boolean).join(" "),w=a(m,{children:[q,e(n,{children:B}),K]}),v=a(m,{children:[V,I??a(m,{children:[e(n,{}),e(n,{})]}),H??e(n,{}),M??e(n,{}),O??e(n,{})]}),b=C=>e(Q.Provider,{value:r,children:C});return b(o?l?a("article",{...A,className:_,children:[g,u,h,e(N,{href:o,className:`flex flex-col ${W?"after:absolute after:inset-0 after:content-['']":""} [.sf-card-rows>*>&]:row-span-3 [.sf-card-rows>*>&]:grid [.sf-card-rows>*>&]:grid-rows-subgrid [.sf-card-rows>*>&]:gap-y-0`,children:w}),v]}):a(N,{href:o,className:_,children:[g,u,h,w,v]}):a("article",{...A,className:_,children:[g,u,h,w,v]}))}export{tr as CARD_PAD_X_PX,gr as CARD_ROWS_GRID_CLASS,or as CARD_SPEC_FIELD_CLASS,T as GRID_GAP_PX,_r as SET_PLATE_PX,sr as SET_STACK_GAP_PX,wr as SET_STACK_MAX_PX,hr as cardRowsGap,ur as cardRowsGridStyle,vr as cardSpecFields,nr as default,k as setBandGapCss,j as setBandGapPx,ar as setPlateWidthCss};