efficient-storefront-blocks 0.84.0 → 0.86.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 (146) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/chunks/{EditorPreviewCheckout-3NVDTH56.js → EditorPreviewCheckout-4LNXFNN7.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-77K7CGYZ.js → SiteEditorProvider-A2HMVDKS.js} +1 -1
  4. package/dist/chunks/{chunk-F3MB7QCR.js → chunk-ALMIS7CK.js} +1 -1
  5. package/dist/chunks/{chunk-VYOK2XBF.js → chunk-EUKK2IN6.js} +1 -1
  6. package/dist/chunks/chunk-FJRKNPNN.js +340 -0
  7. package/dist/chunks/chunk-SLRULFYY.js +1 -0
  8. package/dist/chunks/{chunk-VJLQXB7I.js → chunk-TGBNREUJ.js} +1 -1
  9. package/dist/chunks/{fitment-data-PWXEDMOA.js → fitment-data-TSYW6AFA.js} +1 -1
  10. package/dist/contract.js +2 -2
  11. package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -1
  12. package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.d.ts +2 -0
  13. package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.js +1 -0
  14. package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -1
  15. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
  16. package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
  17. package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.d.ts +2 -0
  18. package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.js +1 -0
  19. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  20. package/dist/editor/lib/document/blocks/commerce/index.js +1 -1
  21. package/dist/editor/lib/document/blocks/commerce/page-rules.d.ts +5 -0
  22. package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -1
  23. package/dist/editor/lib/document/blocks/service/ArticleBody/fields.d.ts +2 -0
  24. package/dist/editor/lib/document/blocks/service/ArticleBody/fields.js +1 -0
  25. package/dist/editor/lib/document/blocks/service/SiteFooter/fields.js +1 -1
  26. package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -1
  27. package/dist/editor/lib/document/blocks/service/index.d.ts +1 -1
  28. package/dist/editor/lib/document/blocks/service/index.js +1 -1
  29. package/dist/editor/lib/document/box-header.d.ts +1 -1
  30. package/dist/editor/lib/document/box-header.js +1 -1
  31. package/dist/editor/lib/document/config.d.ts +1 -0
  32. package/dist/editor/lib/document/config.js +1 -1
  33. package/dist/editor/lib/document/popup-look-fields.d.ts +4 -0
  34. package/dist/editor/lib/document/popup-look-fields.js +1 -0
  35. package/dist/editor/lib/efficient-backend.js +1 -1
  36. package/dist/editor/lib/efficient-block-sources.js +1 -1
  37. package/dist/editor/lib/storefront-editor-words.d.ts +21 -1
  38. package/dist/editor/lib/storefront-editor-words.js +1 -1
  39. package/dist/editor.css +1 -1
  40. package/dist/index.js +134 -58
  41. package/dist/render/app/globals.css +156 -0
  42. package/dist/render/built-with.json +1 -1
  43. package/dist/render/components/ArticleBody.d.ts +7 -0
  44. package/dist/render/components/ArticleBody.js +1 -0
  45. package/dist/render/components/BoxHeaderBar.d.ts +2 -1
  46. package/dist/render/components/BoxHeaderBar.js +1 -1
  47. package/dist/render/components/CartContext.d.ts +1 -0
  48. package/dist/render/components/CartContext.js +1 -1
  49. package/dist/render/components/CartDrawer.d.ts +4 -3
  50. package/dist/render/components/CartDrawer.js +1 -4
  51. package/dist/render/components/DetailRows.d.ts +6 -1
  52. package/dist/render/components/DetailRows.js +1 -1
  53. package/dist/render/components/PopupFrame.d.ts +10 -1
  54. package/dist/render/components/PopupFrame.js +5 -1
  55. package/dist/render/components/ProductGridSection.d.ts +2 -1
  56. package/dist/render/components/ProductGridSection.js +1 -1
  57. package/dist/render/components/PublishedHeader.js +1 -1
  58. package/dist/render/components/Reviews.d.ts +1 -0
  59. package/dist/render/components/Reviews.js +1 -1
  60. package/dist/render/components/SectionBand.d.ts +2 -1
  61. package/dist/render/components/SectionBand.js +1 -1
  62. package/dist/render/components/SectionBandChoice.d.ts +2 -1
  63. package/dist/render/components/SectionBandChoice.js +1 -1
  64. package/dist/render/components/SectionGroupBody.d.ts +2 -2
  65. package/dist/render/components/SectionGroupBody.js +1 -1
  66. package/dist/render/components/SpecTable.d.ts +3 -1
  67. package/dist/render/components/SpecTable.js +1 -1
  68. package/dist/render/components/TyreSizeGrid.d.ts +17 -0
  69. package/dist/render/components/TyreSizeGrid.js +1 -0
  70. package/dist/render/components/fitment/FitmentPickerGrid.d.ts +5 -1
  71. package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
  72. package/dist/render/components/fitment/FitmentPickerPart.d.ts +8 -0
  73. package/dist/render/components/fitment/FitmentPickerPart.js +1 -0
  74. package/dist/render/components/fitment/StockFitmentPart.d.ts +4 -0
  75. package/dist/render/components/fitment/StockFitmentPart.js +1 -0
  76. package/dist/render/components/fitment/useVehicleFit.d.ts +2 -1
  77. package/dist/render/components/fitment/useVehicleFit.js +1 -1
  78. package/dist/render/components/pdp-dynamic/DynamicDetailRows.d.ts +2 -0
  79. package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
  80. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.d.ts +5 -0
  81. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -1
  82. package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +1 -0
  83. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  84. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
  85. package/dist/render/components/pdp-dynamic/FitmentTableBlock.d.ts +3 -1
  86. package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -1
  87. package/dist/render/lib/content/article-body-seed.d.ts +9 -0
  88. package/dist/render/lib/content/article-body-seed.js +1 -0
  89. package/dist/render/lib/content/article-body.d.ts +8 -0
  90. package/dist/render/lib/content/article-body.js +5 -0
  91. package/dist/render/lib/content/article-page-seed.d.ts +12 -0
  92. package/dist/render/lib/content/article-page-seed.js +1 -0
  93. package/dist/render/lib/document/blocks/commerce/DetailRows/meta.d.ts +6 -0
  94. package/dist/render/lib/document/blocks/commerce/DetailRows/meta.js +1 -1
  95. package/dist/render/lib/document/blocks/commerce/DetailRows/render.js +1 -1
  96. package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.d.ts +2 -0
  97. package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.js +1 -0
  98. package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.d.ts +2 -0
  99. package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.js +1 -0
  100. package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -1
  101. package/dist/render/lib/document/blocks/commerce/FitmentTable/render.js +1 -1
  102. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
  103. package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
  104. package/dist/render/lib/document/blocks/commerce/StockFitment/meta.d.ts +2 -0
  105. package/dist/render/lib/document/blocks/commerce/StockFitment/meta.js +1 -0
  106. package/dist/render/lib/document/blocks/commerce/StockFitment/render.d.ts +2 -0
  107. package/dist/render/lib/document/blocks/commerce/StockFitment/render.js +1 -0
  108. package/dist/render/lib/document/blocks/commerce/metas.d.ts +2 -0
  109. package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
  110. package/dist/render/lib/document/blocks/commerce/renders.d.ts +2 -0
  111. package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
  112. package/dist/render/lib/document/blocks/service/ArticleBody/meta.d.ts +8 -0
  113. package/dist/render/lib/document/blocks/service/ArticleBody/meta.js +1 -0
  114. package/dist/render/lib/document/blocks/service/ArticleBody/render.d.ts +2 -0
  115. package/dist/render/lib/document/blocks/service/ArticleBody/render.js +1 -0
  116. package/dist/render/lib/document/blocks/service/SiteFooter/render.js +1 -1
  117. package/dist/render/lib/document/blocks/service/SiteHeader/render.js +1 -1
  118. package/dist/render/lib/document/blocks/service/metas.d.ts +1 -0
  119. package/dist/render/lib/document/blocks/service/metas.js +1 -1
  120. package/dist/render/lib/document/blocks/service/renders.d.ts +1 -0
  121. package/dist/render/lib/document/blocks/service/renders.js +1 -1
  122. package/dist/render/lib/document/card-templates.js +1 -1
  123. package/dist/render/lib/document/current-record.d.ts +4 -15
  124. package/dist/render/lib/document/current-record.js +1 -1
  125. package/dist/render/lib/document/lazy-draws.js +1 -1
  126. package/dist/render/lib/document/render-config.d.ts +1 -0
  127. package/dist/render/lib/document/render-config.js +1 -1
  128. package/dist/render/lib/document/section-to-box-rows-detail.d.ts +2 -0
  129. package/dist/render/lib/document/section-to-box-rows-detail.js +1 -0
  130. package/dist/render/lib/document/section-to-box-rows-reviews.js +1 -1
  131. package/dist/render/lib/document/section-to-box-rows-spec.js +1 -1
  132. package/dist/render/lib/document/storefront-root.js +1 -1
  133. package/dist/render/lib/sections/product-grid-columns.d.ts +5 -0
  134. package/dist/render/lib/sections/product-grid-columns.js +1 -0
  135. package/dist/render/lib/sections/section-band.d.ts +6 -0
  136. package/dist/render/lib/sections/section-band.js +1 -1
  137. package/dist/render/lib/sections/spec-table-band.d.ts +4 -0
  138. package/dist/render/lib/sections/spec-table-band.js +1 -0
  139. package/dist/render/lib/wheels/vehicle-memory.d.ts +13 -0
  140. package/dist/render/lib/wheels/vehicle-memory.js +1 -1
  141. package/dist/words.d.ts +58 -12
  142. package/dist/words.js +5 -5
  143. package/package.json +5 -4
  144. package/dist/chunks/chunk-5EQD5D3L.js +0 -340
  145. package/dist/chunks/chunk-DQFD2BJD.js +0 -1
  146. /package/dist/chunks/{chunk-5EQD5D3L.js.LEGAL.txt → chunk-FJRKNPNN.js.LEGAL.txt} +0 -0
@@ -10,6 +10,7 @@ export declare const SERVICE_RENDERS: {
10
10
  FooterGroup: BlockRender;
11
11
  FooterLogo: BlockRender;
12
12
  FooterMenu: BlockRender;
13
+ ArticleBody: BlockRender;
13
14
  FooterSocial: BlockRender;
14
15
  FooterPayment: BlockRender;
15
16
  FooterText: BlockRender;
@@ -1 +1 @@
1
- import{SITE_FOOTER_TYPE as o,SITE_HEADER_TYPE as r}from"efficient-web-builder/format/lib/document/section-groups";import{AppointmentBookingRender as e}from"./AppointmentBooking/render.js";import{BookingBoxRender as t}from"./BookingBox/render.js";import{ContactRoutingRender as i}from"./ContactRouting/render.js";import{EventsRender as m}from"./Events/render.js";import{FooterRender as n}from"./Footer/render.js";import{FooterDividerRender as R}from"./FooterDivider/render.js";import{FooterEmailSignupRender as p}from"./FooterEmailSignup/render.js";import{FooterGroupRender as d}from"./FooterGroup/render.js";import{FooterLogoRender as f}from"./FooterLogo/render.js";import{FooterMenuRender as a}from"./FooterMenu/render.js";import{FooterSocialRender as g}from"./FooterSocial/render.js";import{FooterPaymentRender as F}from"./FooterPayment/render.js";import{FooterTextRender as s}from"./FooterText/render.js";import{FormRender as u}from"./Form/render.js";import{LegalLineBlockRender as l}from"./LegalLineBlock/render.js";import{MenuLinkBlockRender as B}from"./MenuLinkBlock/render.js";import{OpeningHoursRender as S}from"./OpeningHours/render.js";import{RateTableRender as c}from"./RateTable/render.js";import{MessagingCardsRender as E}from"./MessagingCards/render.js";import{FooterMessagingRender as b}from"./FooterMessaging/render.js";import{ContactCardsRender as k}from"./ContactCards/render.js";import{RatingBlockRender as C}from"./RatingBlock/render.js";import{ReviewFormRender as T}from"./ReviewForm/render.js";import{ReviewsRender as v}from"./Reviews/render.js";import{SiteFooterRender as L}from"./SiteFooter/render.js";import{SiteHeaderRender as M}from"./SiteHeader/render.js";import{SubmitBoxRender as x}from"./SubmitBox/render.js";import{SubmitBuildRender as _}from"./SubmitBuild/render.js";import{SubscribeRender as w}from"./Subscribe/render.js";import{SubscribeBlogsRender as D}from"./SubscribeBlogs/render.js";const fo={AppointmentBooking:e,BookingBox:t,ContactRouting:i,Events:m,Footer:n,FooterDivider:R,FooterEmailSignup:p,FooterGroup:d,FooterLogo:f,FooterMenu:a,FooterSocial:g,FooterPayment:F,FooterText:s,Form:u,LegalLineBlock:l,MenuLinkBlock:B,OpeningHours:S,RateTable:c,MessagingCards:E,FooterMessaging:b,ContactCards:k,RatingBlock:C,ReviewForm:T,Reviews:v,[o]:L,[r]:M,SubmitBox:x,SubmitBuild:_,Subscribe:w,SubscribeBlogs:D};export{fo as SERVICE_RENDERS};
1
+ import{SITE_FOOTER_TYPE as o,SITE_HEADER_TYPE as r}from"efficient-web-builder/format/lib/document/section-groups";import{AppointmentBookingRender as e}from"./AppointmentBooking/render.js";import{ArticleBodyRender as t}from"./ArticleBody/render.js";import{BookingBoxRender as i}from"./BookingBox/render.js";import{ContactRoutingRender as m}from"./ContactRouting/render.js";import{EventsRender as n}from"./Events/render.js";import{FooterRender as R}from"./Footer/render.js";import{FooterDividerRender as p}from"./FooterDivider/render.js";import{FooterEmailSignupRender as d}from"./FooterEmailSignup/render.js";import{FooterGroupRender as f}from"./FooterGroup/render.js";import{FooterLogoRender as a}from"./FooterLogo/render.js";import{FooterMenuRender as g}from"./FooterMenu/render.js";import{FooterSocialRender as F}from"./FooterSocial/render.js";import{FooterPaymentRender as s}from"./FooterPayment/render.js";import{FooterTextRender as u}from"./FooterText/render.js";import{FormRender as l}from"./Form/render.js";import{LegalLineBlockRender as B}from"./LegalLineBlock/render.js";import{MenuLinkBlockRender as c}from"./MenuLinkBlock/render.js";import{OpeningHoursRender as S}from"./OpeningHours/render.js";import{RateTableRender as E}from"./RateTable/render.js";import{MessagingCardsRender as b}from"./MessagingCards/render.js";import{FooterMessagingRender as k}from"./FooterMessaging/render.js";import{ContactCardsRender as C}from"./ContactCards/render.js";import{RatingBlockRender as T}from"./RatingBlock/render.js";import{ReviewFormRender as v}from"./ReviewForm/render.js";import{ReviewsRender as L}from"./Reviews/render.js";import{SiteFooterRender as M}from"./SiteFooter/render.js";import{SiteHeaderRender as x}from"./SiteHeader/render.js";import{SubmitBoxRender as A}from"./SubmitBox/render.js";import{SubmitBuildRender as _}from"./SubmitBuild/render.js";import{SubscribeRender as w}from"./Subscribe/render.js";import{SubscribeBlogsRender as y}from"./SubscribeBlogs/render.js";const go={AppointmentBooking:e,BookingBox:i,ContactRouting:m,Events:n,Footer:R,FooterDivider:p,FooterEmailSignup:d,FooterGroup:f,FooterLogo:a,FooterMenu:g,ArticleBody:t,FooterSocial:F,FooterPayment:s,FooterText:u,Form:l,LegalLineBlock:B,MenuLinkBlock:c,OpeningHours:S,RateTable:E,MessagingCards:b,FooterMessaging:k,ContactCards:C,RatingBlock:T,ReviewForm:v,Reviews:L,[o]:M,[r]:x,SubmitBox:A,SubmitBuild:_,Subscribe:w,SubscribeBlogs:y};export{go as SERVICE_RENDERS};
@@ -1 +1 @@
1
- import{registerCardTemplates as l}from"efficient-web-builder/format/lib/content/card-template";import{HERO_PRICE_BLOCK as a,withHeroPriceTemplate as o}from"../content/hero-price-seed.js";import{MENU_LINK_BLOCK as t,withMenuTemplate as b}from"../content/menu-card-seed.js";const e={fields:[{key:"label",label:"Label"},{key:"href",label:"Link",kind:"link"}],blocks:[{type:t,label:"Menu link"}],seed:b},i=[{block:"Reviews",fields:[{key:"quote",label:"Quote"},{key:"title",label:"Title"},{key:"name",label:"Name"},{key:"role",label:"Role · location"},{key:"rating",label:"Rating"},{key:"dateLabel",label:"Date"}]},{block:"SpecTable",fields:[{key:"label",label:"Label"},{key:"value",label:"Value"}]},{block:"FooterMenu",...e},{block:"MenuBlock",...e},{block:"ProductHero",fields:[],blocks:[{type:a,label:"Price"}],seed:o}];l(i);export{i as STOREFRONT_CARD_TEMPLATES};
1
+ import{registerCardTemplates as l}from"efficient-web-builder/format/lib/content/card-template";import{HERO_PRICE_BLOCK as a,withHeroPriceTemplate as t}from"../content/hero-price-seed.js";import{MENU_LINK_BLOCK as i,withMenuTemplate as o}from"../content/menu-card-seed.js";import{ARTICLE_BODY_BLOCK as b,withArticleBodyTemplate as k}from"../content/article-body-seed.js";const e={fields:[{key:"label",label:"Label"},{key:"href",label:"Link",kind:"link"}],blocks:[{type:i,label:"Menu link"}],seed:o},r=[{block:"Reviews",fields:[{key:"quote",label:"Quote"},{key:"title",label:"Title"},{key:"name",label:"Name"},{key:"role",label:"Role · location"},{key:"rating",label:"Rating"},{key:"dateLabel",label:"Date"}]},{block:"SpecTable",fields:[{key:"label",label:"Label"},{key:"value",label:"Value"}]},{block:"DetailRows",fields:[{key:"eyebrow",label:"Eyebrow"},{key:"title",label:"Title"},{key:"copy",label:"Body",multiline:!0},{key:"image",label:"Image",kind:"image",alt:"title"},{key:"tag",label:"Image tag"}]},{block:"FooterMenu",...e},{block:"MenuBlock",...e},{block:"ProductHero",fields:[],blocks:[{type:a,label:"Price"}],seed:t},{block:b,fields:[{key:"heading",label:"Subhead"},{key:"paragraph",label:"Paragraph",multiline:!0}],seed:k}];l(r);export{r as STOREFRONT_CARD_TEMPLATES};
@@ -1,17 +1,8 @@
1
1
  import { type ReactNode } from "react";
2
- export interface CurrentRecord<TValue = unknown> {
3
- type: string;
4
- key: string;
5
- title: string;
6
- fields: Readonly<Record<string, unknown>>;
7
- value: TValue;
8
- schema?: readonly RecordFieldSpec[];
9
- }
10
- export interface RecordFieldSpec {
11
- key: string;
12
- label: string;
13
- kind: string;
14
- }
2
+ import { useCurrentRecord, useCurrentRecordOf, type CurrentRecord, type RecordSchemaField } from "efficient-web-builder/render/components/CurrentRecord";
3
+ export type { CurrentRecord };
4
+ export { useCurrentRecord, useCurrentRecordOf };
5
+ export type RecordFieldSpec = RecordSchemaField;
15
6
  export interface RecordPicture {
16
7
  url: string;
17
8
  alt: string;
@@ -39,5 +30,3 @@ export declare function CurrentRecordProvider({ record, children, }: {
39
30
  record: CurrentRecord;
40
31
  children: ReactNode;
41
32
  }): import("react").JSX.Element;
42
- export declare function useCurrentRecord(): CurrentRecord | null;
43
- export declare function useCurrentRecordOf<TValue = unknown>(type: string): CurrentRecord<TValue> | null;
@@ -1 +1 @@
1
- "use client";import{jsx as y}from"react/jsx-runtime";import{createContext as m,useContext as i}from"react";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{declaredRecordType as R,PRODUCT_RECORD_TYPE as s}from"efficient-web-builder/format/lib/content/record-types";function h(t){const e=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return e?e[0].toUpperCase()+e.slice(1):t}const C=/^\d{4}-\d{2}-\d{2}$/;function x(t){return t?t.schema?.length?t.schema.filter(e=>typeof e?.key=="string"&&e.key in t.fields):Object.entries(t.fields).flatMap(([e,r])=>{const n=Array.isArray(r)?g(r[0])?"rows":"images":typeof r=="string"?C.test(r)?"date":"text":null;return n?[{key:e,label:h(e),kind:n}]:[]}):[]}function P(t,{firstField:e=!1}={}){if(!t)return[];const r=x(t).filter(n=>n.kind==="images");return(e?r.slice(0,1):r).flatMap(n=>{const a=t.fields[n.key];return Array.isArray(a)?a.flatMap(l=>{const c=l?.url;if(typeof c!="string"||!c)return[];const p=l.alt,d=l.video;return[{url:c,alt:typeof p=="string"?p:"",...typeof d=="string"&&d?{video:d}:{}}]}):[]})}function k(t){const e=new Date(`${t}T00:00:00Z`);return Number.isNaN(e.getTime())?t:e.toLocaleDateString("en-GB",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"})}function g(t){const e=t;return typeof e?.label=="string"&&!!e.label.trim()&&typeof e.value=="string"&&!!e.value.trim()}function b(t){return t?x(t).flatMap(e=>{const r=t.fields[e.key];return e.kind==="rows"?Array.isArray(r)?r.filter(g).map(({label:n,value:a})=>({label:n,value:a})):[]:e.kind!=="text"&&e.kind!=="date"?[]:typeof r!="string"||!r.trim()?[]:[{label:e.label,value:e.kind==="date"?k(r):r}]}):[]}const u=m(null);function O(t){const e=t?.appState?.data?.root;return R(e?.props)!==s}const f=m(s);function _({type:t,children:e}){return y(f.Provider,{value:t,children:e})}function w(){return i(f)}function S(t){const e=i(u),r=i(f);return e?e.type!==s:t&&r!==s}const E={type:"sample",key:"sample",get title(){return o("Record title")},get fields(){return{first:o("A detail of this record"),second:o("Another detail"),third:o("A third")}},value:void 0,get schema(){return[{key:"first",label:o("First detail"),kind:"text"},{key:"second",label:o("Second detail"),kind:"text"},{key:"third",label:o("Third detail"),kind:"text"}]}},M=4;function U({record:t,children:e}){return y(u.Provider,{value:t,children:e})}function F(){return i(u)}function L(t){const e=i(u);return e!==null&&e.type===t?e:null}export{U as CurrentRecordProvider,_ as DeclaredRecordTypeProvider,M as SAMPLE_PICTURE_COUNT,E as SAMPLE_RECORD,O as editorPageDrawsOtherRecord,b as recordFacts,x as recordFieldSpecs,P as recordPictures,F as useCurrentRecord,L as useCurrentRecordOf,w as useDeclaredRecordType,S as useDrawsOtherRecord};
1
+ "use client";import{jsx as f}from"react/jsx-runtime";import{createContext as R,useContext as p}from"react";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{declaredRecordType as h,PRODUCT_RECORD_TYPE as a}from"efficient-web-builder/format/lib/content/record-types";import{CurrentRecordProvider as k,useCurrentRecord as y,useCurrentRecordOf as C}from"efficient-web-builder/render/components/CurrentRecord";function A(t){const e=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return e?e[0].toUpperCase()+e.slice(1):t}const v=/^\d{4}-\d{2}-\d{2}$/;function m(t){return t?t.schema?.length?t.schema.filter(e=>typeof e?.key=="string"&&e.key in t.fields):Object.entries(t.fields).flatMap(([e,r])=>{const n=Array.isArray(r)?g(r[0])?"rows":"images":typeof r=="string"?v.test(r)?"date":"text":null;return n?[{key:e,label:A(e),kind:n}]:[]}):[]}function _(t,{firstField:e=!1}={}){if(!t)return[];const r=m(t).filter(n=>n.kind==="images");return(e?r.slice(0,1):r).flatMap(n=>{const i=t.fields[n.key];return Array.isArray(i)?i.flatMap(s=>{const d=s?.url;if(typeof d!="string"||!d)return[];const u=s.alt,c=s.video;return[{url:d,alt:typeof u=="string"?u:"",...typeof c=="string"&&c?{video:c}:{}}]}):[]})}function x(t){const e=new Date(`${t}T00:00:00Z`);return Number.isNaN(e.getTime())?t:e.toLocaleDateString("en-GB",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"})}function g(t){const e=t;return typeof e?.label=="string"&&!!e.label.trim()&&typeof e.value=="string"&&!!e.value.trim()}function w(t){return t?m(t).flatMap(e=>{const r=t.fields[e.key];return e.kind==="rows"?Array.isArray(r)?r.filter(g).map(({label:n,value:i})=>({label:n,value:i})):[]:e.kind!=="text"&&e.kind!=="date"?[]:typeof r!="string"||!r.trim()?[]:[{label:e.label,value:e.kind==="date"?x(r):r}]}):[]}function S(t){const e=t?.appState?.data?.root;return h(e?.props)!==a}const l=R(a);function E({type:t,children:e}){return f(l.Provider,{value:t,children:e})}function M(){return p(l)}function U(t){const e=y(),r=p(l);return e?e.type!==a:t&&r!==a}const B={type:"sample",key:"sample",get title(){return o("Record title")},get fields(){return{first:o("A detail of this record"),second:o("Another detail"),third:o("A third")}},value:void 0,get schema(){return[{key:"first",label:o("First detail"),kind:"text"},{key:"second",label:o("Second detail"),kind:"text"},{key:"third",label:o("Third detail"),kind:"text"}]}},F=4;function L({record:t,children:e}){return f(k,{record:t,dateWords:x,children:e})}export{L as CurrentRecordProvider,E as DeclaredRecordTypeProvider,F as SAMPLE_PICTURE_COUNT,B as SAMPLE_RECORD,S as editorPageDrawsOtherRecord,w as recordFacts,m as recordFieldSpecs,_ as recordPictures,y as useCurrentRecord,C as useCurrentRecordOf,M as useDeclaredRecordType,U as useDrawsOtherRecord};
@@ -1 +1 @@
1
- import{jsx as i}from"react/jsx-runtime";import t from"next/dynamic";import{SITE_FOOTER_TYPE as d,SITE_HEADER_TYPE as m}from"efficient-web-builder/format/lib/document/section-groups";function r(e){return function(o){return e.render(o)}}const p={Banner:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Banner/render").then(e=>r(e.BannerRender))),Breadcrumb:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Breadcrumb/render").then(e=>r(e.BreadcrumbRender))),ButtonBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ButtonBlock/render").then(e=>r(e.ButtonBlockRender))),Cards:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Cards/render").then(e=>r(e.CardsRender))),CategoryBar:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/CategoryBar/render").then(e=>r(e.CategoryBarRender))),Chart:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Chart/render").then(e=>r(e.ChartRender))),Contents:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Contents/render").then(e=>r(e.ContentsRender))),ContactLocations:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ContactLocations/render").then(e=>r(e.ContactLocationsRender))),LocationMap:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LocationMap/render").then(e=>r(e.LocationMapRender))),CustomHTML:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/CustomHTML/render").then(e=>r(e.CustomHTMLRender))),Divider:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Divider/render").then(e=>r(e.DividerRender))),DocBody:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocBody/render").then(e=>r(e.DocBodyRender))),DocMasthead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocMasthead/render").then(e=>r(e.DocMastheadRender))),DocMetaCards:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocMetaCards/render").then(e=>r(e.DocMetaCardsRender))),DocTabs:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocTabs/render").then(e=>r(e.DocTabsRender))),Eyebrow:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Eyebrow/render").then(e=>r(e.EyebrowRender))),FAQ:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/FAQ/render").then(e=>r(e.FAQRender))),FeaturedCover:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/FeaturedCover/render").then(e=>r(e.FeaturedCoverRender))),Flex:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Flex/render").then(e=>r(e.FlexRender))),Footprint:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Footprint/render").then(e=>r(e.FootprintRender))),Grid:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Grid/render").then(e=>r(e.GridRender))),Heading:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Heading/render").then(e=>r(e.HeadingRender))),Hero:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Hero/render").then(e=>r(e.HeroRender))),HeroGroup:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroGroup/render").then(e=>r(e.HeroGroupRender))),HeroSingle:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroSingle/render").then(e=>r(e.HeroSingleRender))),HeroSlide:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroSlide/render").then(e=>r(e.HeroSlideRender))),ImageBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ImageBlock/render").then(e=>r(e.ImageBlockRender))),Integrations:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Integrations/render").then(e=>r(e.IntegrationsRender))),IntroBleed:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/IntroBleed/render").then(e=>r(e.IntroBleedRender))),Countdown:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Countdown/render").then(e=>r(e.CountdownRender))),KeyFeatures:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/KeyFeatures/render").then(e=>r(e.KeyFeaturesRender))),LogoBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LogoBlock/render").then(e=>r(e.LogoBlockRender))),Logos:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Logos/render").then(e=>r(e.LogosRender))),LongRead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LongRead/render").then(e=>r(e.LongReadRender))),Manifesto:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Manifesto/render").then(e=>r(e.ManifestoRender))),Masthead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Masthead/render").then(e=>r(e.MastheadRender))),Mockup:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Mockup/render").then(e=>r(e.MockupRender))),OrderSummary:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/OrderSummary/render").then(e=>r(e.OrderSummaryRender))),ParagraphsA:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ParagraphsA/render").then(e=>r(e.ParagraphsARender))),PaymentBadges:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/PaymentBadges/render").then(e=>r(e.PaymentBadgesRender))),PostCard:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/PostCard/render").then(e=>r(e.PostCardRender))),ProcessSteps:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ProcessSteps/render").then(e=>r(e.ProcessStepsRender))),Prose:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Prose/render").then(e=>r(e.ProseRender))),SectionHeader:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/SectionHeader/render").then(e=>r(e.SectionHeaderRender))),Series:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Series/render").then(e=>r(e.SeriesRender))),Spacer:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Spacer/render").then(e=>r(e.SpacerRender))),SpecStrip:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/SpecStrip/render").then(e=>r(e.SpecStripRender))),Split:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Split/render").then(e=>r(e.SplitRender))),Stats:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Stats/render").then(e=>r(e.StatsRender))),StatsParagraph:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/StatsParagraph/render").then(e=>r(e.StatsParagraphRender))),Testimonials:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Testimonials/render").then(e=>r(e.TestimonialsRender))),Text:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Text/render").then(e=>r(e.TextRender))),Ticker:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Ticker/render").then(e=>r(e.TickerRender))),Timeline:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Timeline/render").then(e=>r(e.TimelineRender))),TimelineTrack:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/TimelineTrack/render").then(e=>r(e.TimelineTrackRender))),TitleWithButtons:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/TitleWithButtons/render").then(e=>r(e.TitleWithButtonsRender))),AccountBlock:t(()=>import("./blocks/commerce/AccountBlock/render.js").then(e=>r(e.AccountBlockRender))),AlloyWheelsListing:t(()=>import("./blocks/commerce/AlloyWheelsListing/render.js").then(e=>r(e.AlloyWheelsListingRender))),BundleOffer:t(()=>import("./blocks/commerce/BundleOffer/render.js").then(e=>r(e.BundleOfferRender))),CartBlock:t(()=>import("./blocks/commerce/CartBlock/render.js").then(e=>r(e.CartBlockRender))),CatalogFilterBar:t(()=>import("./blocks/commerce/CatalogFilterBar/render.js").then(e=>r(e.CatalogFilterBarRender))),CheckoutCTA:t(()=>import("./blocks/commerce/CheckoutCTA/render.js").then(e=>r(e.CheckoutCTARender))),CollectionCard:t(()=>import("./blocks/commerce/CollectionCard/render.js").then(e=>r(e.CollectionCardRender))),Collections:t(()=>import("./blocks/commerce/Collections/render.js").then(e=>r(e.CollectionsRender))),CompatibleTyres:t(()=>import("./blocks/commerce/CompatibleTyres/render.js").then(e=>r(e.CompatibleTyresRender))),CountrySwitchBlock:t(()=>import("./blocks/commerce/CountrySwitchBlock/render.js").then(e=>r(e.CountrySwitchBlockRender))),DeliveryOptions:t(()=>import("./blocks/commerce/DeliveryOptions/render.js").then(e=>r(e.DeliveryOptionsRender))),DetailRows:t(()=>import("./blocks/commerce/DetailRows/render.js").then(e=>r(e.DetailRowsRender))),EuTyreLabel:t(()=>import("./blocks/commerce/EuTyreLabel/render.js").then(e=>r(e.EuTyreLabelRender))),EuTyreLabelBlock:t(()=>import("./blocks/commerce/EuTyreLabelBlock/render.js").then(e=>r(e.EuTyreLabelBlockRender))),FitmentFinder:t(()=>import("./blocks/commerce/FitmentFinder/render.js").then(e=>r(e.FitmentFinderRender))),FitmentTable:t(()=>import("./blocks/commerce/FitmentTable/render.js").then(e=>r(e.FitmentTableRender))),Gallery:t(()=>import("./blocks/commerce/Gallery/render.js").then(e=>r(e.GalleryRender))),GalleryB:t(()=>import("./blocks/commerce/GalleryB/render.js").then(e=>r(e.GalleryBRender))),GalleryItem:t(()=>import("./blocks/commerce/GalleryItem/render.js").then(e=>r(e.GalleryItemRender))),Header:t(()=>import("./blocks/commerce/Header/render.js").then(e=>r(e.HeaderRender))),ProductGrid:t(()=>import("./blocks/commerce/ProductGrid/render.js").then(e=>r(e.ProductGridRender))),ProductGallery:t(()=>import("./blocks/commerce/ProductGallery/render.js").then(e=>r(e.ProductGalleryRender))),ProductHero:t(()=>import("./blocks/commerce/ProductHero/render.js").then(e=>r(e.ProductHeroRender))),ProductRef:t(()=>import("./blocks/commerce/ProductRef/render.js").then(e=>r(e.ProductRefRender))),RelatedProducts:t(()=>import("./blocks/commerce/RelatedProducts/render.js").then(e=>r(e.RelatedProductsRender))),SearchBlock:t(()=>import("./blocks/commerce/SearchBlock/render.js").then(e=>r(e.SearchBlockRender))),SpecTable:t(()=>import("./blocks/commerce/SpecTable/render.js").then(e=>r(e.SpecTableRender))),ThemeSwitchBlock:t(()=>import("./blocks/commerce/ThemeSwitchBlock/render.js").then(e=>r(e.ThemeSwitchBlockRender))),TyreFitment:t(()=>import("./blocks/commerce/TyreFitment/render.js").then(e=>r(e.TyreFitmentRender))),TyreSizes:t(()=>import("./blocks/commerce/TyreSizes/render.js").then(e=>r(e.TyreSizesRender))),ProductPrice:t(()=>import("./blocks/commerce/ProductPrice/render.js").then(e=>r(e.ProductPriceRender))),ProductColour:t(()=>import("./blocks/commerce/ProductColour/render.js").then(e=>r(e.ProductColourRender))),ProductSize:t(()=>import("./blocks/commerce/ProductSize/render.js").then(e=>r(e.ProductSizeRender))),AppointmentBooking:t(()=>import("./blocks/service/AppointmentBooking/render.js").then(e=>r(e.AppointmentBookingRender))),BookingBox:t(()=>import("./blocks/service/BookingBox/render.js").then(e=>r(e.BookingBoxRender))),ContactRouting:t(()=>import("./blocks/service/ContactRouting/render.js").then(e=>r(e.ContactRoutingRender))),Events:t(()=>import("./blocks/service/Events/render.js").then(e=>r(e.EventsRender))),Footer:t(()=>import("./blocks/service/Footer/render.js").then(e=>r(e.FooterRender))),FooterDivider:t(()=>import("./blocks/service/FooterDivider/render.js").then(e=>r(e.FooterDividerRender))),FooterEmailSignup:t(()=>import("./blocks/service/FooterEmailSignup/render.js").then(e=>r(e.FooterEmailSignupRender))),FooterGroup:t(()=>import("./blocks/service/FooterGroup/render.js").then(e=>r(e.FooterGroupRender))),FooterLogo:t(()=>import("./blocks/service/FooterLogo/render.js").then(e=>r(e.FooterLogoRender))),FooterMenu:t(()=>import("./blocks/service/FooterMenu/render.js").then(e=>r(e.FooterMenuRender))),FooterSocial:t(()=>import("./blocks/service/FooterSocial/render.js").then(e=>r(e.FooterSocialRender))),FooterPayment:t(()=>import("./blocks/service/FooterPayment/render.js").then(e=>r(e.FooterPaymentRender))),FooterText:t(()=>import("./blocks/service/FooterText/render.js").then(e=>r(e.FooterTextRender))),Form:t(()=>import("./blocks/service/Form/render.js").then(e=>r(e.FormRender))),LegalLineBlock:t(()=>import("./blocks/service/LegalLineBlock/render.js").then(e=>r(e.LegalLineBlockRender))),MenuLinkBlock:t(()=>import("./blocks/service/MenuLinkBlock/render.js").then(e=>r(e.MenuLinkBlockRender))),OpeningHours:t(()=>import("./blocks/service/OpeningHours/render.js").then(e=>r(e.OpeningHoursRender))),RateTable:t(()=>import("./blocks/service/RateTable/render.js").then(e=>r(e.RateTableRender))),MessagingCards:t(()=>import("./blocks/service/MessagingCards/render.js").then(e=>r(e.MessagingCardsRender))),FooterMessaging:t(()=>import("./blocks/service/FooterMessaging/render.js").then(e=>r(e.FooterMessagingRender))),ContactCards:t(()=>import("./blocks/service/ContactCards/render.js").then(e=>r(e.ContactCardsRender))),RatingBlock:t(()=>import("./blocks/service/RatingBlock/render.js").then(e=>r(e.RatingBlockRender))),ReviewForm:t(()=>import("./blocks/service/ReviewForm/render.js").then(e=>r(e.ReviewFormRender))),Reviews:t(()=>import("./blocks/service/Reviews/render.js").then(e=>r(e.ReviewsRender))),[d]:t(()=>import("./blocks/service/SiteFooter/render.js").then(e=>r(e.SiteFooterRender))),[m]:t(()=>import("./blocks/service/SiteHeader/render.js").then(e=>r(e.SiteHeaderRender))),SubmitBox:t(()=>import("./blocks/service/SubmitBox/render.js").then(e=>r(e.SubmitBoxRender))),SubmitBuild:t(()=>import("./blocks/service/SubmitBuild/render.js").then(e=>r(e.SubmitBuildRender))),Subscribe:t(()=>import("./blocks/service/Subscribe/render.js").then(e=>r(e.SubscribeRender))),SubscribeBlogs:t(()=>import("./blocks/service/SubscribeBlogs/render.js").then(e=>r(e.SubscribeBlogsRender)))},l=Object.fromEntries(Object.entries(p).map(([e,n])=>[e,o=>i(n,{...o})]));export{l as LAZY_DRAWS};
1
+ import{jsx as i}from"react/jsx-runtime";import t from"next/dynamic";import{SITE_FOOTER_TYPE as d,SITE_HEADER_TYPE as m}from"efficient-web-builder/format/lib/document/section-groups";function r(e){return function(n){return e.render(n)}}const p={Banner:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Banner/render").then(e=>r(e.BannerRender))),Breadcrumb:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Breadcrumb/render").then(e=>r(e.BreadcrumbRender))),ButtonBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ButtonBlock/render").then(e=>r(e.ButtonBlockRender))),Cards:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Cards/render").then(e=>r(e.CardsRender))),CategoryBar:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/CategoryBar/render").then(e=>r(e.CategoryBarRender))),Chart:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Chart/render").then(e=>r(e.ChartRender))),Contents:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Contents/render").then(e=>r(e.ContentsRender))),ContactLocations:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ContactLocations/render").then(e=>r(e.ContactLocationsRender))),LocationMap:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LocationMap/render").then(e=>r(e.LocationMapRender))),CustomHTML:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/CustomHTML/render").then(e=>r(e.CustomHTMLRender))),Divider:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Divider/render").then(e=>r(e.DividerRender))),DocBody:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocBody/render").then(e=>r(e.DocBodyRender))),DocMasthead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocMasthead/render").then(e=>r(e.DocMastheadRender))),DocMetaCards:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocMetaCards/render").then(e=>r(e.DocMetaCardsRender))),DocTabs:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/DocTabs/render").then(e=>r(e.DocTabsRender))),Eyebrow:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Eyebrow/render").then(e=>r(e.EyebrowRender))),FAQ:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/FAQ/render").then(e=>r(e.FAQRender))),FeaturedCover:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/FeaturedCover/render").then(e=>r(e.FeaturedCoverRender))),Flex:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Flex/render").then(e=>r(e.FlexRender))),Footprint:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Footprint/render").then(e=>r(e.FootprintRender))),Grid:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Grid/render").then(e=>r(e.GridRender))),Heading:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Heading/render").then(e=>r(e.HeadingRender))),Hero:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Hero/render").then(e=>r(e.HeroRender))),HeroGroup:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroGroup/render").then(e=>r(e.HeroGroupRender))),HeroSingle:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroSingle/render").then(e=>r(e.HeroSingleRender))),HeroSlide:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/HeroSlide/render").then(e=>r(e.HeroSlideRender))),ImageBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ImageBlock/render").then(e=>r(e.ImageBlockRender))),Integrations:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Integrations/render").then(e=>r(e.IntegrationsRender))),IntroBleed:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/IntroBleed/render").then(e=>r(e.IntroBleedRender))),Countdown:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Countdown/render").then(e=>r(e.CountdownRender))),KeyFeatures:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/KeyFeatures/render").then(e=>r(e.KeyFeaturesRender))),LogoBlock:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LogoBlock/render").then(e=>r(e.LogoBlockRender))),Logos:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Logos/render").then(e=>r(e.LogosRender))),LongRead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/LongRead/render").then(e=>r(e.LongReadRender))),Manifesto:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Manifesto/render").then(e=>r(e.ManifestoRender))),Masthead:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Masthead/render").then(e=>r(e.MastheadRender))),Mockup:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Mockup/render").then(e=>r(e.MockupRender))),OrderSummary:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/OrderSummary/render").then(e=>r(e.OrderSummaryRender))),ParagraphsA:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ParagraphsA/render").then(e=>r(e.ParagraphsARender))),PaymentBadges:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/PaymentBadges/render").then(e=>r(e.PaymentBadgesRender))),PostCard:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/PostCard/render").then(e=>r(e.PostCardRender))),ProcessSteps:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/ProcessSteps/render").then(e=>r(e.ProcessStepsRender))),Prose:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Prose/render").then(e=>r(e.ProseRender))),SectionHeader:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/SectionHeader/render").then(e=>r(e.SectionHeaderRender))),Series:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Series/render").then(e=>r(e.SeriesRender))),Spacer:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Spacer/render").then(e=>r(e.SpacerRender))),SpecStrip:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/SpecStrip/render").then(e=>r(e.SpecStripRender))),Split:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Split/render").then(e=>r(e.SplitRender))),Stats:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Stats/render").then(e=>r(e.StatsRender))),StatsParagraph:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/StatsParagraph/render").then(e=>r(e.StatsParagraphRender))),Testimonials:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Testimonials/render").then(e=>r(e.TestimonialsRender))),Text:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Text/render").then(e=>r(e.TextRender))),Ticker:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Ticker/render").then(e=>r(e.TickerRender))),Timeline:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/Timeline/render").then(e=>r(e.TimelineRender))),TimelineTrack:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/TimelineTrack/render").then(e=>r(e.TimelineTrackRender))),TitleWithButtons:t(()=>import("efficient-web-builder/render/lib/document/blocks/general/TitleWithButtons/render").then(e=>r(e.TitleWithButtonsRender))),AccountBlock:t(()=>import("./blocks/commerce/AccountBlock/render.js").then(e=>r(e.AccountBlockRender))),AlloyWheelsListing:t(()=>import("./blocks/commerce/AlloyWheelsListing/render.js").then(e=>r(e.AlloyWheelsListingRender))),BundleOffer:t(()=>import("./blocks/commerce/BundleOffer/render.js").then(e=>r(e.BundleOfferRender))),CartBlock:t(()=>import("./blocks/commerce/CartBlock/render.js").then(e=>r(e.CartBlockRender))),CatalogFilterBar:t(()=>import("./blocks/commerce/CatalogFilterBar/render.js").then(e=>r(e.CatalogFilterBarRender))),CheckoutCTA:t(()=>import("./blocks/commerce/CheckoutCTA/render.js").then(e=>r(e.CheckoutCTARender))),CollectionCard:t(()=>import("./blocks/commerce/CollectionCard/render.js").then(e=>r(e.CollectionCardRender))),Collections:t(()=>import("./blocks/commerce/Collections/render.js").then(e=>r(e.CollectionsRender))),CompatibleTyres:t(()=>import("./blocks/commerce/CompatibleTyres/render.js").then(e=>r(e.CompatibleTyresRender))),CountrySwitchBlock:t(()=>import("./blocks/commerce/CountrySwitchBlock/render.js").then(e=>r(e.CountrySwitchBlockRender))),DeliveryOptions:t(()=>import("./blocks/commerce/DeliveryOptions/render.js").then(e=>r(e.DeliveryOptionsRender))),DetailRows:t(()=>import("./blocks/commerce/DetailRows/render.js").then(e=>r(e.DetailRowsRender))),EuTyreLabel:t(()=>import("./blocks/commerce/EuTyreLabel/render.js").then(e=>r(e.EuTyreLabelRender))),EuTyreLabelBlock:t(()=>import("./blocks/commerce/EuTyreLabelBlock/render.js").then(e=>r(e.EuTyreLabelBlockRender))),FitmentFinder:t(()=>import("./blocks/commerce/FitmentFinder/render.js").then(e=>r(e.FitmentFinderRender))),FitmentTable:t(()=>import("./blocks/commerce/FitmentTable/render.js").then(e=>r(e.FitmentTableRender))),Gallery:t(()=>import("./blocks/commerce/Gallery/render.js").then(e=>r(e.GalleryRender))),GalleryB:t(()=>import("./blocks/commerce/GalleryB/render.js").then(e=>r(e.GalleryBRender))),GalleryItem:t(()=>import("./blocks/commerce/GalleryItem/render.js").then(e=>r(e.GalleryItemRender))),Header:t(()=>import("./blocks/commerce/Header/render.js").then(e=>r(e.HeaderRender))),ProductGrid:t(()=>import("./blocks/commerce/ProductGrid/render.js").then(e=>r(e.ProductGridRender))),ProductGallery:t(()=>import("./blocks/commerce/ProductGallery/render.js").then(e=>r(e.ProductGalleryRender))),ProductHero:t(()=>import("./blocks/commerce/ProductHero/render.js").then(e=>r(e.ProductHeroRender))),ProductRef:t(()=>import("./blocks/commerce/ProductRef/render.js").then(e=>r(e.ProductRefRender))),RelatedProducts:t(()=>import("./blocks/commerce/RelatedProducts/render.js").then(e=>r(e.RelatedProductsRender))),SearchBlock:t(()=>import("./blocks/commerce/SearchBlock/render.js").then(e=>r(e.SearchBlockRender))),SpecTable:t(()=>import("./blocks/commerce/SpecTable/render.js").then(e=>r(e.SpecTableRender))),ThemeSwitchBlock:t(()=>import("./blocks/commerce/ThemeSwitchBlock/render.js").then(e=>r(e.ThemeSwitchBlockRender))),TyreFitment:t(()=>import("./blocks/commerce/TyreFitment/render.js").then(e=>r(e.TyreFitmentRender))),TyreSizes:t(()=>import("./blocks/commerce/TyreSizes/render.js").then(e=>r(e.TyreSizesRender))),ProductPrice:t(()=>import("./blocks/commerce/ProductPrice/render.js").then(e=>r(e.ProductPriceRender))),ProductColour:t(()=>import("./blocks/commerce/ProductColour/render.js").then(e=>r(e.ProductColourRender))),ProductSize:t(()=>import("./blocks/commerce/ProductSize/render.js").then(e=>r(e.ProductSizeRender))),FitmentPicker:t(()=>import("./blocks/commerce/FitmentPicker/render.js").then(e=>r(e.FitmentPickerRender))),StockFitment:t(()=>import("./blocks/commerce/StockFitment/render.js").then(e=>r(e.StockFitmentRender))),AppointmentBooking:t(()=>import("./blocks/service/AppointmentBooking/render.js").then(e=>r(e.AppointmentBookingRender))),BookingBox:t(()=>import("./blocks/service/BookingBox/render.js").then(e=>r(e.BookingBoxRender))),ContactRouting:t(()=>import("./blocks/service/ContactRouting/render.js").then(e=>r(e.ContactRoutingRender))),Events:t(()=>import("./blocks/service/Events/render.js").then(e=>r(e.EventsRender))),Footer:t(()=>import("./blocks/service/Footer/render.js").then(e=>r(e.FooterRender))),FooterDivider:t(()=>import("./blocks/service/FooterDivider/render.js").then(e=>r(e.FooterDividerRender))),FooterEmailSignup:t(()=>import("./blocks/service/FooterEmailSignup/render.js").then(e=>r(e.FooterEmailSignupRender))),FooterGroup:t(()=>import("./blocks/service/FooterGroup/render.js").then(e=>r(e.FooterGroupRender))),FooterLogo:t(()=>import("./blocks/service/FooterLogo/render.js").then(e=>r(e.FooterLogoRender))),FooterMenu:t(()=>import("./blocks/service/FooterMenu/render.js").then(e=>r(e.FooterMenuRender))),ArticleBody:t(()=>import("./blocks/service/ArticleBody/render.js").then(e=>r(e.ArticleBodyRender))),FooterSocial:t(()=>import("./blocks/service/FooterSocial/render.js").then(e=>r(e.FooterSocialRender))),FooterPayment:t(()=>import("./blocks/service/FooterPayment/render.js").then(e=>r(e.FooterPaymentRender))),FooterText:t(()=>import("./blocks/service/FooterText/render.js").then(e=>r(e.FooterTextRender))),Form:t(()=>import("./blocks/service/Form/render.js").then(e=>r(e.FormRender))),LegalLineBlock:t(()=>import("./blocks/service/LegalLineBlock/render.js").then(e=>r(e.LegalLineBlockRender))),MenuLinkBlock:t(()=>import("./blocks/service/MenuLinkBlock/render.js").then(e=>r(e.MenuLinkBlockRender))),OpeningHours:t(()=>import("./blocks/service/OpeningHours/render.js").then(e=>r(e.OpeningHoursRender))),RateTable:t(()=>import("./blocks/service/RateTable/render.js").then(e=>r(e.RateTableRender))),MessagingCards:t(()=>import("./blocks/service/MessagingCards/render.js").then(e=>r(e.MessagingCardsRender))),FooterMessaging:t(()=>import("./blocks/service/FooterMessaging/render.js").then(e=>r(e.FooterMessagingRender))),ContactCards:t(()=>import("./blocks/service/ContactCards/render.js").then(e=>r(e.ContactCardsRender))),RatingBlock:t(()=>import("./blocks/service/RatingBlock/render.js").then(e=>r(e.RatingBlockRender))),ReviewForm:t(()=>import("./blocks/service/ReviewForm/render.js").then(e=>r(e.ReviewFormRender))),Reviews:t(()=>import("./blocks/service/Reviews/render.js").then(e=>r(e.ReviewsRender))),[d]:t(()=>import("./blocks/service/SiteFooter/render.js").then(e=>r(e.SiteFooterRender))),[m]:t(()=>import("./blocks/service/SiteHeader/render.js").then(e=>r(e.SiteHeaderRender))),SubmitBox:t(()=>import("./blocks/service/SubmitBox/render.js").then(e=>r(e.SubmitBoxRender))),SubmitBuild:t(()=>import("./blocks/service/SubmitBuild/render.js").then(e=>r(e.SubmitBuildRender))),Subscribe:t(()=>import("./blocks/service/Subscribe/render.js").then(e=>r(e.SubscribeRender))),SubscribeBlogs:t(()=>import("./blocks/service/SubscribeBlogs/render.js").then(e=>r(e.SubscribeBlogsRender)))},c=Object.fromEntries(Object.entries(p).map(([e,o])=>[e,n=>i(o,{...n})]));export{c as LAZY_DRAWS};
@@ -3,5 +3,6 @@ import "./slot-seeds.js";
3
3
  import "./card-templates.js";
4
4
  import "./section-to-box-rows-reviews.js";
5
5
  import "./section-to-box-rows-spec.js";
6
+ import "./section-to-box-rows-detail.js";
6
7
  export declare function renderConfig(): Config;
7
8
  export declare function headerRenderConfig(): Config;
@@ -1 +1 @@
1
- import{Fragment as u,jsx as g}from"react/jsx-runtime";import{generalRenderMetas as E}from"efficient-web-builder/format/lib/document/blocks/general/metas";import{finishRenderRegistry as h}from"efficient-web-builder/render/lib/document/render-registry";import{buildBlockCategories as R}from"efficient-web-builder/format/lib/document/section-catalog";import{SITE_HEADER_TYPE as m}from"efficient-web-builder/format/lib/document/section-groups";import"./slot-seeds.js";import"./card-templates.js";import"./section-to-box-rows-reviews.js";import"./section-to-box-rows-spec.js";import{COMMERCE_METAS as y}from"./blocks/commerce/metas.js";import{SERVICE_METAS as S}from"./blocks/service/metas.js";import _ from"./blocks/text-part-shapes.json";import{addPageBlocksFromFooter as b}from"./footer-page-blocks.js";import{LAZY_DRAWS as p}from"./lazy-draws.js";import{drawPublishedStorefrontRoot as T}from"./storefront-root.js";const j=_,k=(o,r)=>{const t=j[o];return{...r,...t?{textParts:t}:null}};let f=null;function l(){if(f)return f;const o={},r=E();for(const e of Object.keys(r))o[e]={...r[e],render:p[e]};const t={...y,...S};for(const e of Object.keys(t))o[e]=k(e,{...t[e],render:p[e]});b(o);const n={root:{render:T},categories:R(),components:o};return h(n),f=n,n}function x(o=l()){const r=o.components,t=Object.keys(r),n=new Set([m]),e=[m];for(;e.length;){const a=e.shift();for(const c of Object.values(r[a]?.fields??{})){if(c?.type!=="slot")continue;const d=c.allow??t.filter(s=>!c.disallow?.includes(s));for(const s of d)n.has(s)||!(s in r)||(n.add(s),e.push(s))}}return[...n]}let i=null;function V(){if(i)return i;const o=l(),r=o.components;return i={...o,root:{render:({children:t})=>g(u,{children:t})},components:Object.fromEntries(x(o).map(t=>[t,r[t]]))},i}export{V as headerRenderConfig,l as renderConfig};
1
+ import{Fragment as u,jsx as g}from"react/jsx-runtime";import{generalRenderMetas as E}from"efficient-web-builder/format/lib/document/blocks/general/metas";import{finishRenderRegistry as h}from"efficient-web-builder/render/lib/document/render-registry";import{buildBlockCategories as R}from"efficient-web-builder/format/lib/document/section-catalog";import{SITE_HEADER_TYPE as f}from"efficient-web-builder/format/lib/document/section-groups";import"./slot-seeds.js";import"./card-templates.js";import"./section-to-box-rows-reviews.js";import"./section-to-box-rows-spec.js";import"./section-to-box-rows-detail.js";import{COMMERCE_METAS as y}from"./blocks/commerce/metas.js";import{SERVICE_METAS as S}from"./blocks/service/metas.js";import _ from"./blocks/text-part-shapes.json";import{addPageBlocksFromFooter as b}from"./footer-page-blocks.js";import{LAZY_DRAWS as p}from"./lazy-draws.js";import{drawPublishedStorefrontRoot as T}from"./storefront-root.js";const j=_,k=(o,r)=>{const t=j[o];return{...r,...t?{textParts:t}:null}};let m=null;function l(){if(m)return m;const o={},r=E();for(const e of Object.keys(r))o[e]={...r[e],render:p[e]};const t={...y,...S};for(const e of Object.keys(t))o[e]=k(e,{...t[e],render:p[e]});b(o);const n={root:{render:T},categories:R(),components:o};return h(n),m=n,n}function x(o=l()){const r=o.components,t=Object.keys(r),n=new Set([f]),e=[f];for(;e.length;){const a=e.shift();for(const c of Object.values(r[a]?.fields??{})){if(c?.type!=="slot")continue;const d=c.allow??t.filter(s=>!c.disallow?.includes(s));for(const s of d)n.has(s)||!(s in r)||(n.add(s),e.push(s))}}return[...n]}let i=null;function W(){if(i)return i;const o=l(),r=o.components;return i={...o,root:{render:({children:t})=>g(u,{children:t})},components:Object.fromEntries(x(o).map(t=>[t,r[t]]))},i}export{W as headerRenderConfig,l as renderConfig};
@@ -0,0 +1,2 @@
1
+ import { type BlockSeed } from "efficient-web-builder/render/lib/sections/section-to-box";
2
+ export declare const detailRowSeed: (startLeft: boolean) => BlockSeed;
@@ -0,0 +1 @@
1
+ import{SECTION_BOX_SLOT as o,SECTION_BOX_TYPE as i,registerSectionToBox as g}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,INNER_BOX as r,NO_PAD as m,SAME_KEYS as y,SECTION_BOX as S,TEXT as p}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{token as n}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as s}from"efficient-web-builder/format/lib/content/card-template";const c=e=>({textStyle:"body-5",...n("label",e),letterSpacing:.2,case:"upper"}),t=(e,l,d)=>({type:"Text",props:{...l,[s]:e,_partStyles:{text:d}}}),P=e=>({type:i,props:{...r,name:"Row",mirrorCards:e?"odd":"even",direction:"row",share:"equal",align:"center",gap:48,sectionPaddingTop:60,sectionPaddingBottom:60,sectionPaddingTopPhone:60,sectionPaddingBottomPhone:60},slots:{[o]:[{type:i,props:{...r,name:"Words",direction:"column",gap:16},slots:{[o]:[t("eyebrow",p,{...c(13),color:"accent"}),t("title",p,{textStyle:"heading-2",...n("headingMedium",42,28),lineHeight:1.1,letterSpacing:-.02}),t("copy",a,{textStyle:"body-1",...n("body",15),lineHeight:1.6})]}},{type:i,props:{...r,name:"Picture",direction:"column",gap:12},slots:{[o]:[{type:"ImageBlock",props:{[s]:"image",aspect:"1/1",fit:"contain"}},t("tag",{...a,align:"right"},{...c(11),align:"right"})]}}]}}),_={name:"Feature Rows",boxProps:{...S,...m,direction:"column",gap:0},box:y,parts:[{kind:"core",keep:"rest",slots:e=>({template:[P(e.startLeft===!0)]})}]};g({DetailRows:_});export{P as detailRowSeed};
@@ -1 +1 @@
1
- import{SECTION_BOX_SLOT as i,SECTION_BOX_TYPE as n,headParts as l,registerSectionToBox as c}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,DROP_COMMON as g,DROP_SIDE_PADDING as h,INNER_BOX as o,SAME_KEYS as P,SECTION_BOX as m,TEXT as e,headingCaseOf as T,wrapperPad as y,wrapperPadKeys as S}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{CARD_ROW_FIELD_PROP as O}from"efficient-web-builder/format/lib/content/card-template";const p={top:84,bottom:0,topPhone:84,bottomPhone:0},[x,_]=l("Testimonials"),s=(t,r,d)=>({type:"Text",props:{...r,[O]:t,_partStyles:{text:d}}}),b={type:n,props:{...o,name:"Card",gap:20,sectionPaddingTop:36,sectionPaddingBottom:36,sectionPaddingLeft:36,sectionPaddingRight:36,sectionPaddingTopPhone:28,sectionPaddingBottomPhone:28,sectionPaddingLeftPhone:28,sectionPaddingRightPhone:28,sectionAccent:0},slots:{[i]:[{type:"Text",props:{...e,text:"“",_partStyles:{text:{textStyle:"heading-2",color:"accent",lineHeight:1}}}},s("quote",a,{size:16,lineHeight:1.6}),{type:n,props:{...o,name:"Name",gap:4,sectionPaddingTop:20,sectionBorder:{top:1}},slots:{[i]:[s("name",e,{textStyle:"body-5",weight:500,case:"upper",letterSpacing:.04}),s("role",a,{textStyle:"body-5"})]}}]}},w={name:"Testimonials",boxProps:t=>({...m,direction:"column",gap:44,sectionBorder:{top:1},...y(t,p)}),box:[...P,...S(p)],parts:[{kind:"group",name:"Heading",props:{...o,gap:16},parts:[{...x,props:e},{..._,props:e,style:{textStyle:"heading-2",lineHeight:1,letterSpacing:-.02}}]},{kind:"core",as:"Reviews",keep:["items","columns"],slots:{template:[b]}}],site:T("title"),drop:{...g,...h,eyebrowLook:"the eyebrow Text wears the plain eyebrow's start look (Testimonials' default); a stored `filled` look needs a filled Text look",headPlacement:"the head is the Text blocks above the Reviews block, which is always own-box here"}};c({Testimonials:w});
1
+ import{SECTION_BOX_SLOT as s,SECTION_BOX_TYPE as n,headParts as c,registerSectionToBox as m}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,DROP_COMMON as h,DROP_SIDE_PADDING as g,INNER_BOX as o,SAME_KEYS as P,SECTION_BOX as T,TEXT as e,headingCaseOf as O,wrapperPad as y,wrapperPadKeys as S}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{CARD_ROW_FIELD_PROP as _}from"efficient-web-builder/format/lib/content/card-template";import{FRAME_OWN_BOX as b}from"../../components/Reviews.js";import{bandRoomBelow as x}from"../sections/section-band.js";const p=x(b),r={top:84,bottom:p.bottom,topPhone:84,bottomPhone:p.bottomPhone},[w,E]=c("Testimonials"),i=(t,d,l)=>({type:"Text",props:{...d,[_]:t,_partStyles:{text:l}}}),R={type:n,props:{...o,name:"Card",gap:20,sectionPaddingTop:36,sectionPaddingBottom:36,sectionPaddingLeft:36,sectionPaddingRight:36,sectionPaddingTopPhone:28,sectionPaddingBottomPhone:28,sectionPaddingLeftPhone:28,sectionPaddingRightPhone:28,sectionAccent:0},slots:{[s]:[{type:"Text",props:{...e,text:"“",_partStyles:{text:{textStyle:"heading-2",color:"accent",lineHeight:1}}}},i("quote",a,{size:16,lineHeight:1.6}),{type:n,props:{...o,name:"Name",gap:4,sectionPaddingTop:20,sectionBorder:{top:1}},slots:{[s]:[i("name",e,{textStyle:"body-5",weight:500,case:"upper",letterSpacing:.04}),i("role",a,{textStyle:"body-5"})]}}]}},B={name:"Testimonials",boxProps:t=>({...T,direction:"column",gap:44,sectionBorder:{top:1},...y(t,r)}),box:[...P,...S(r)],parts:[{kind:"group",name:"Heading",props:{...o,gap:16},parts:[{...w,props:e},{...E,props:e,style:{textStyle:"heading-2",lineHeight:1,letterSpacing:-.02}}]},{kind:"core",as:"Reviews",keep:["items","columns"],slots:{template:[R]}}],site:O("title"),drop:{...h,...g,eyebrowLook:"the eyebrow Text wears the plain eyebrow's start look (Testimonials' default); a stored `filled` look needs a filled Text look",headPlacement:"the head is the Text blocks above the Reviews block, which is always own-box here"}};m({Testimonials:B});
@@ -1 +1 @@
1
- import{SECTION_BOX_SLOT as p,SECTION_BOX_TYPE as a,registerSectionToBox as s}from"efficient-web-builder/render/lib/sections/section-to-box";import{headOnlyRow as l}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-rows-head";import{DIM as c,INNER_BOX as m,TEXT as g}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{token as T}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as S}from"efficient-web-builder/format/lib/content/card-template";import{phoneKey as t}from"efficient-easel/draw";const o={textStyle:"body-5",...T("label",14),letterSpacing:.05,lineHeight:1.5},e=(n,i,r)=>({type:"Text",props:{...i,[S]:n,_partStyles:{text:r}}}),_={type:a,props:{...m,name:"Row",direction:"row",justify:"between",align:"start",share:"content",phoneRow:2,[t("share")]:"content",[t("wrap")]:!1,gap:24,sectionPaddingTop:16,sectionPaddingBottom:16,sectionPaddingTopPhone:16,sectionPaddingBottomPhone:16},slots:{[p]:[e("label",c,{...o,case:"upper"}),e("value",{...g,align:"right"},{...o,align:"right"})]}},d=l("SpecTable",{slots:{template:[_]}});s({SpecTable:d});
1
+ import{SECTION_BOX_SLOT as a,SECTION_BOX_TYPE as m,registerSectionToBox as c}from"efficient-web-builder/render/lib/sections/section-to-box";import{headOnlyRow as l}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-rows-head";import{DIM as P,INNER_BOX as d,TEXT as g,lineSides as B}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{bandRoomBelow as E}from"../sections/section-band.js";import{SPEC_TABLE_BAND as _}from"../sections/spec-table-band.js";import{token as b}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as S}from"efficient-web-builder/format/lib/content/card-template";import{phoneKey as i}from"efficient-easel/draw";const r={textStyle:"body-5",...b("label",14),letterSpacing:.05,lineHeight:1.5},s=(t,e,p)=>({type:"Text",props:{...e,[S]:t,_partStyles:{text:p}}}),T={type:m,props:{...d,name:"Row",direction:"row",justify:"between",align:"start",share:"content",phoneRow:2,[i("share")]:"content",[i("wrap")]:!1,gap:24,sectionPaddingTop:16,sectionPaddingBottom:16,sectionPaddingTopPhone:16,sectionPaddingBottomPhone:16},slots:{[a]:[s("label",P,{...r,case:"upper"}),s("value",{...g,align:"right"},{...r,align:"right"})]}},o=l("SpecTable",{slots:{template:[T]}}),n=E(_.ownBox),h={...o,boxProps:(t,e)=>({...typeof o.boxProps=="function"?o.boxProps(t,e):o.boxProps,sectionPaddingBottom:n.bottom,sectionPaddingBottomPhone:n.bottomPhone,...n.line?{sectionBorder:B({bottom:1})}:{}})};c({SpecTable:h});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as l}from"react/jsx-runtime";import{CatalogFilterProvider as u}from"../../components/catalog/CatalogFilterContext.js";import a from"../../components/CartDrawer.js";import{CartProvider as p}from"../../components/CartContext.js";import{CurrencyProvider as f}from"../../components/CurrencyContext.js";import{SubscribePopupView as s}from"../../components/SubscribePopup.js";import{ConsentBannerPreview as g}from"../../components/ConsentBanner.js";import{CART_DRAWER_KIND as h,resolveCartDrawerContent as v}from"efficient-web-builder/format/lib/content/cart-drawer";import{CONSENT_BANNER_KIND as P,resolveConsentBannerContent as b}from"efficient-web-builder/format/lib/content/consent-banner";import{SITE_FOOTER_KIND as k}from"efficient-web-builder/format/lib/content/footer";import{isPageBackgroundAuthored as y}from"efficient-web-builder/format/lib/content/page-background";import{templateProductKind as C}from"efficient-web-builder/format/lib/content/product-page";import{resolveSubscribeContent as _,SUBSCRIBE_POPUP_KIND as w}from"efficient-web-builder/format/lib/content/subscribe";import{DeclaredRecordTypeProvider as B}from"./current-record.js";import{declaredRecordType as D}from"efficient-web-builder/format/lib/content/record-types";import{PublishedPageFrame as N}from"efficient-web-builder/render/lib/document/page-frame";import{POPUP_PAGE_KIND as R,resolvePopupLook as S}from"efficient-web-builder/format/lib/popup/look";import x from"../../components/PopupFrame.js";import{PreviewProductProvider as E}from"./preview-product.js";import{TemplateProductKindProvider as K}from"./template-product-kind.js";function I(r,n){const{kind:t}=r;if(t===w){const i=_(r);return l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(s,{inline:!0,content:i})]})}if(t===h){const i=v(r);return l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(f,{children:e(p,{preview:!0,children:e(a,{content:i})})})]})}return t===P?l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(g,{layout:b(r).layout})]}):null}function T(r,n){if(r.kind!==R)return null;const t=e(c,{rootProps:r,children:r.children});if(!n)return t;const i=typeof r.title=="string"&&r.title.trim()?r.title:"Popup";return e(x,{inline:!0,look:S(r),label:i,children:t})}function c({rootProps:r,children:n}){const{kind:t,editor:i,previewProduct:o}=r,d=!!i?.isEditing,m=C(typeof t=="string"?t:"",r);return e(B,{type:D(r),children:e(K,{kind:m,children:e(E,{slug:d?o:null,children:e(u,{children:n})})})})}function er(r){const n=T(r,!1);if(n)return n;const t=I(r);if(t)return t;const{children:i,pageBackground:o,kind:d}=r;return e(N,{pageBackground:o,inheritBackground:d===k&&!y(o),children:e(c,{rootProps:r,children:i})})}export{c as StorefrontPageProviders,T as drawPopupPage,er as drawPublishedStorefrontRoot,I as drawSystemPage};
1
+ import{jsx as e,jsxs as l}from"react/jsx-runtime";import{CatalogFilterProvider as u}from"../../components/catalog/CatalogFilterContext.js";import a from"../../components/CartDrawer.js";import{CartProvider as f}from"../../components/CartContext.js";import{CurrencyProvider as p}from"../../components/CurrencyContext.js";import{SubscribePopupView as s}from"../../components/SubscribePopup.js";import{ConsentBannerPreview as g}from"../../components/ConsentBanner.js";import{CART_DRAWER_KIND as h,resolveCartDrawerContent as v,resolveCartDrawerLook as P}from"efficient-web-builder/format/lib/content/cart-drawer";import{CONSENT_BANNER_KIND as k,resolveConsentBannerContent as b}from"efficient-web-builder/format/lib/content/consent-banner";import{SITE_FOOTER_KIND as y}from"efficient-web-builder/format/lib/content/footer";import{isPageBackgroundAuthored as C}from"efficient-web-builder/format/lib/content/page-background";import{templateProductKind as _}from"efficient-web-builder/format/lib/content/product-page";import{resolveSubscribeContent as w,SUBSCRIBE_POPUP_KIND as D}from"efficient-web-builder/format/lib/content/subscribe";import{DeclaredRecordTypeProvider as B}from"./current-record.js";import{declaredRecordType as N}from"efficient-web-builder/format/lib/content/record-types";import{PublishedPageFrame as R}from"efficient-web-builder/render/lib/document/page-frame";import{POPUP_PAGE_KIND as S,resolvePopupLook as x}from"efficient-web-builder/format/lib/popup/look";import E from"../../components/PopupFrame.js";import{PreviewProductProvider as K}from"./preview-product.js";import{TemplateProductKindProvider as I}from"./template-product-kind.js";function T(r,n){const{kind:t}=r;if(t===D){const i=w(r);return l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(s,{inline:!0,content:i})]})}if(t===h){const i=v(r);return l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(p,{children:e(f,{preview:!0,children:e(a,{content:i,look:P(r)})})})]})}return t===k?l("div",{style:{background:"var(--bg)",minHeight:"100%"},children:[n??null,e(g,{layout:b(r).layout})]}):null}function A(r,n){if(r.kind!==S)return null;const t=e(c,{rootProps:r,children:r.children});if(!n)return t;const i=typeof r.title=="string"&&r.title.trim()?r.title:"Popup";return e(E,{inline:!0,look:x(r),label:i,children:t})}function c({rootProps:r,children:n}){const{kind:t,editor:i,previewProduct:o}=r,d=!!i?.isEditing,m=_(typeof t=="string"?t:"",r);return e(B,{type:N(r),children:e(I,{kind:m,children:e(K,{slug:d?o:null,children:e(u,{children:n})})})})}function tr(r){const n=A(r,!1);if(n)return n;const t=T(r);if(t)return t;const{children:i,pageBackground:o,kind:d}=r;return e(R,{pageBackground:o,inheritBackground:d===y&&!C(o),children:e(c,{rootProps:r,children:i})})}export{c as StorefrontPageProviders,A as drawPopupPage,tr as drawPublishedStorefrontRoot,T as drawSystemPage};
@@ -0,0 +1,5 @@
1
+ export declare const PRODUCT_GRID_PHONE_COLUMNS: {
2
+ readonly min: 1;
3
+ readonly max: 3;
4
+ };
5
+ export declare function productGridColumnsClass(columns: unknown, columnsPhone: unknown): string;
@@ -0,0 +1 @@
1
+ const s={1:"grid-cols-1",2:"grid-cols-2 max-view-wide:grid-cols-1",3:"grid-cols-3 max-view-wide:grid-cols-1",4:"grid-cols-4 max-view-desktop:grid-cols-2 max-view-wide:grid-cols-1",5:"grid-cols-5 max-view-desktop:grid-cols-2 max-view-wide:grid-cols-1",6:"grid-cols-6 max-view-desktop:grid-cols-3 max-view-wide:grid-cols-1"},c={1:"max-view-wide:grid-cols-1",2:"max-view-wide:grid-cols-2",3:"max-view-wide:grid-cols-3"},d={min:1,max:3};function w(i,e){const t=typeof i=="number"&&Number.isFinite(i)?Math.round(i):4,r=s[Math.min(6,Math.max(1,t))]??s[4];if(typeof e!="number"||!Number.isFinite(e))return r;const o=Math.min(d.max,Math.max(d.min,Math.round(e)));return`${r.split(" ").filter(a=>!a.startsWith("max-view-wide:")).join(" ")} ${c[o]}`}export{d as PRODUCT_GRID_PHONE_COLUMNS,w as productGridColumnsClass};
@@ -1,2 +1,8 @@
1
1
  export declare const BAND_CAP = "mx-auto max-w-[var(--sf-site-width,1600px)]";
2
2
  export declare function bandClassesInBox(classes: string): string;
3
+ export type BandRoomBelow = {
4
+ bottom: number;
5
+ bottomPhone: number;
6
+ line: boolean;
7
+ };
8
+ export declare function bandRoomBelow(classes: string): BandRoomBelow;
@@ -1 +1 @@
1
- const i="mx-auto max-w-[var(--sf-site-width,1600px)]",e=[/^border(-[tblrxy])?$/,/^border-line$/,/^bg-/,/^mx-auto$/,/^max-w-\[var\(--sf-site-width/,/--sf-site-gutter/,/^p[xytblr]?-(\d+(\.\d+)?|px|\[\d+(\.\d+)?px\])$/];function x(t){const s=t.lastIndexOf(":");return s<0?t:t.slice(s+1)}function a(t){return t.split(/\s+/).filter(s=>s&&!e.some(r=>r.test(x(s)))).join(" ")}export{i as BAND_CAP,a as bandClassesInBox};
1
+ const b="mx-auto max-w-[var(--sf-site-width,1600px)]",l=[/^border(-[tblrxy])?$/,/^border-line$/,/^bg-/,/^mx-auto$/,/^max-w-\[var\(--sf-site-width/,/--sf-site-gutter/,/^p[xytblr]?-(\d+(\.\d+)?|px|\[\d+(\.\d+)?px\])$/];function c(t){const e=t.lastIndexOf(":");return e<0?t:t.slice(e+1)}function p(t){return t.split(/\s+/).filter(e=>e&&!l.some(n=>n.test(c(e)))).join(" ")}const u=new Set(["max-view-desktop","max-view-wide"]);function a(t){const e=/^\[(\d+(?:\.\d+)?)px\]$/.exec(t);return e?Number(e[1]):t==="px"?1:/^\d+(\.\d+)?$/.test(t)?Number(t)*4:void 0}function m(t){let e=0,n,i=!1;for(const o of t.split(/\s+/)){if(!o)continue;const d=o.lastIndexOf(":"),s=d<0?"":o.slice(0,d),f=c(o);!s&&/^border-[by]$/.test(f)&&(i=!0);const x=/^p[by]-(.+)$/.exec(f),r=x?a(x[1]):void 0;r!==void 0&&(s?u.has(s)&&(n=r):e=r)}return{bottom:e,bottomPhone:n??e,line:i}}export{b as BAND_CAP,p as bandClassesInBox,m as bandRoomBelow};
@@ -0,0 +1,4 @@
1
+ export declare const SPEC_TABLE_BAND: {
2
+ readonly inline: "border-b border-line py-[120px] max-view-desktop:py-20";
3
+ readonly ownBox: "border-b border-line pt-0 pb-[120px] max-view-desktop:pt-0 max-view-desktop:pb-20";
4
+ };
@@ -0,0 +1 @@
1
+ const e={inline:"border-b border-line py-[120px] max-view-desktop:py-20",ownBox:"border-b border-line pt-0 pb-[120px] max-view-desktop:pt-0 max-view-desktop:pb-20"};export{e as SPEC_TABLE_BAND};
@@ -1,4 +1,5 @@
1
1
  import { type StorageLike } from "efficient-web-builder/format/lib/safe-storage";
2
+ import type { StockFitment } from "../api/index.js";
2
3
  import { type VehicleSelection } from "./fitment-options.js";
3
4
  export declare const VEHICLE_STORAGE_KEY = "storefront-vehicle";
4
5
  export interface RememberedVehicleLabels {
@@ -10,16 +11,28 @@ export interface RememberedVehicle {
10
11
  vehicle: VehicleSelection;
11
12
  labels: RememberedVehicleLabels;
12
13
  }
14
+ export interface SharedStockFitment {
15
+ vehicle: VehicleSelection;
16
+ stock: StockFitment | null;
17
+ loading: boolean;
18
+ error: string | null;
19
+ }
13
20
  export type VehicleStorage = StorageLike;
14
21
  export declare function createVehicleMemory(getStorage: () => VehicleStorage | null): {
15
22
  read: () => RememberedVehicle | null;
16
23
  write: (value: RememberedVehicle) => void;
17
24
  clear: () => void;
18
25
  subscribe: (listener: () => void) => () => void;
26
+ readStock: () => SharedStockFitment | null;
27
+ writeStock: (value: SharedStockFitment | null) => void;
28
+ subscribeStock: (listener: () => void) => () => void;
19
29
  };
20
30
  export declare const storefrontVehicleMemory: {
21
31
  read: () => RememberedVehicle | null;
22
32
  write: (value: RememberedVehicle) => void;
23
33
  clear: () => void;
24
34
  subscribe: (listener: () => void) => () => void;
35
+ readStock: () => SharedStockFitment | null;
36
+ writeStock: (value: SharedStockFitment | null) => void;
37
+ subscribeStock: (listener: () => void) => () => void;
25
38
  };
@@ -1 +1 @@
1
- import{safeLocalStorage as l}from"efficient-web-builder/format/lib/safe-storage";import{DEFAULT_VEHICLE as c}from"./fitment-options.js";import{isCompleteVehicle as s}from"./plp-vehicle-params.js";const n="storefront-vehicle";function m(r){if(!r||typeof r!="object")return null;const e=r,o={...c,...e.vehicle??{}};return s(o)?{vehicle:o,labels:{make:e.labels?.make??o.make,model:e.labels?.model??o.model,modification:e.labels?.modification??o.modification}}:null}function a(r){let e;const o=new Set,i=()=>{for(const t of[...o])t()};return{read(){if(e!==void 0)return e;try{const t=r()?.getItem(n);e=t?m(JSON.parse(t)):null}catch{e=null}return e},write(t){e=t;try{r()?.setItem(n,JSON.stringify(t))}catch{}i()},clear(){e=null;try{r()?.removeItem(n)}catch{}i()},subscribe(t){return o.add(t),()=>{o.delete(t)}}}}const p=a(()=>l);export{n as VEHICLE_STORAGE_KEY,a as createVehicleMemory,p as storefrontVehicleMemory};
1
+ import{safeLocalStorage as a}from"efficient-web-builder/format/lib/safe-storage";import{DEFAULT_VEHICLE as f}from"./fitment-options.js";import{isCompleteVehicle as m}from"./plp-vehicle-params.js";const l="storefront-vehicle";function u(n){if(!n||typeof n!="object")return null;const t=n,o={...f,...t.vehicle??{}};return m(o)?{vehicle:o,labels:{make:t.labels?.make??o.make,model:t.labels?.model??o.model,modification:t.labels?.modification??o.modification}}:null}function d(n){let t;const o=new Set;let r=null;const c=new Set,i=()=>{for(const e of[...c])e()},s=()=>{for(const e of[...o])e()};return{read(){if(t!==void 0)return t;try{const e=n()?.getItem(l);t=e?u(JSON.parse(e)):null}catch{t=null}return t},write(e){t=e;try{n()?.setItem(l,JSON.stringify(e))}catch{}s()},clear(){t=null;try{n()?.removeItem(l)}catch{}s(),r!==null&&(r=null,i())},subscribe(e){return o.add(e),()=>{o.delete(e)}},readStock(){return r},writeStock(e){e!==r&&(r=e,i())},subscribeStock(e){return c.add(e),()=>{c.delete(e)}}}}const k=d(()=>a);export{l as VEHICLE_STORAGE_KEY,d as createVehicleMemory,k as storefrontVehicleMemory};