efficient-storefront-blocks 0.92.0 → 0.94.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 (85) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/chunks/{EditorPreviewCheckout-VHPWPS3N.js → EditorPreviewCheckout-OPDSFBJH.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-C4HT4BT4.js → SiteEditorProvider-ZP6NAWYT.js} +1 -1
  4. package/dist/chunks/{chunk-RAOSZKA3.js → chunk-ATCBSW73.js} +1 -1
  5. package/dist/chunks/{chunk-7L5DVQZ4.js → chunk-CEFKTE5A.js} +1 -1
  6. package/dist/chunks/chunk-JKJ76CRT.js +388 -0
  7. package/dist/chunks/chunk-JTDOMQMQ.js +1 -0
  8. package/dist/chunks/{fitment-data-URJZ24LU.js → fitment-data-IPAMN5IH.js} +1 -1
  9. package/dist/editor/components/GalleryPicturesSource.d.ts +4 -16
  10. package/dist/editor/components/GalleryPicturesSource.js +1 -1
  11. package/dist/editor/components/GalleryProductBinding.js +1 -1
  12. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  13. package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -1
  14. package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.js +1 -1
  15. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  16. package/dist/editor/lib/storefront-document.js +1 -1
  17. package/dist/editor/lib/storefront-editor-words-kept.js +1 -1
  18. package/dist/editor/lib/storefront-editor-words.d.ts +4 -7
  19. package/dist/editor/lib/storefront-editor-words.js +1 -1
  20. package/dist/index.js +74 -80
  21. package/dist/links.js +1 -1
  22. package/dist/render/app/globals.css +42 -3
  23. package/dist/render/built-with.json +1 -1
  24. package/dist/render/components/DefaultProductHero.d.ts +12 -0
  25. package/dist/render/components/DefaultProductHero.js +1 -0
  26. package/dist/render/components/GridCardTemplate.d.ts +10 -6
  27. package/dist/render/components/GridCardTemplate.js +1 -1
  28. package/dist/render/components/ProductGridSection.js +1 -1
  29. package/dist/render/components/ProductHeroPanel.d.ts +2 -1
  30. package/dist/render/components/ProductHeroPanel.js +1 -1
  31. package/dist/render/components/PublishedFooter.js +1 -1
  32. package/dist/render/components/PublishedHeader.js +1 -1
  33. package/dist/render/components/card-pieces/CardBuyButton.js +1 -1
  34. package/dist/render/components/card-pieces/CardName.js +1 -1
  35. package/dist/render/components/card-pieces/CardProductPicture.d.ts +3 -0
  36. package/dist/render/components/card-pieces/CardProductPicture.js +1 -1
  37. package/dist/render/components/card-pieces/CardSizes.d.ts +10 -2
  38. package/dist/render/components/card-pieces/CardSizes.js +1 -1
  39. package/dist/render/components/card-pieces/CardSpecs.d.ts +2 -0
  40. package/dist/render/components/card-pieces/CardSpecs.js +1 -1
  41. package/dist/render/components/card-pieces/ProductCardState.d.ts +14 -4
  42. package/dist/render/components/card-pieces/ProductCardState.js +1 -1
  43. package/dist/render/components/catalog/ShopperChips.js +1 -1
  44. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
  45. package/dist/render/components/useProductCatalog.d.ts +1 -0
  46. package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +1 -1
  47. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  48. package/dist/render/lib/api/types.d.ts +1 -0
  49. package/dist/render/lib/content/hero-option-seed.d.ts +28 -0
  50. package/dist/render/lib/content/hero-option-seed.js +1 -0
  51. package/dist/render/lib/content/product-card-seed.d.ts +12 -0
  52. package/dist/render/lib/content/product-card-seed.js +1 -1
  53. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.js +1 -1
  54. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.d.ts +4 -0
  55. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.js +1 -1
  56. package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
  57. package/dist/render/lib/document/blocks/commerce/ProductPicture/render.js +1 -1
  58. package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.js +1 -1
  59. package/dist/render/lib/document/blocks/service/SiteHeader/render.js +1 -1
  60. package/dist/render/lib/document/card-templates.js +1 -1
  61. package/dist/render/lib/document/published-header-bar.d.ts +10 -0
  62. package/dist/render/lib/document/published-header-bar.js +1 -0
  63. package/dist/render/lib/document/section-to-box-rows-service.js +1 -1
  64. package/dist/render/lib/logo/surface-is-light.js +1 -1
  65. package/dist/render/lib/sections/card-tone.d.ts +9 -0
  66. package/dist/render/lib/sections/card-tone.js +1 -0
  67. package/dist/render/lib/sections/filter-option-rows.d.ts +14 -0
  68. package/dist/render/lib/sections/filter-option-rows.js +1 -1
  69. package/dist/render/lib/sections/product-pictures.d.ts +3 -0
  70. package/dist/render/lib/sections/product-pictures.js +1 -1
  71. package/dist/render/lib/wheels/plp-hydrate.d.ts +4 -1
  72. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  73. package/dist/words.d.ts +19 -7
  74. package/dist/words.js +5 -5
  75. package/package.json +4 -4
  76. package/dist/chunks/chunk-PW7BA4ZJ.js +0 -1
  77. package/dist/chunks/chunk-S2WLJ6H2.js +0 -388
  78. package/dist/render/components/TyrePlpCard.d.ts +0 -20
  79. package/dist/render/components/TyrePlpCard.js +0 -1
  80. package/dist/render/components/TyreSummaryCard.d.ts +0 -12
  81. package/dist/render/components/TyreSummaryCard.js +0 -1
  82. package/dist/render/lib/document/published-chrome-data.d.ts +0 -2
  83. package/dist/render/lib/document/published-chrome-data.js +0 -1
  84. /package/dist/chunks/{chunk-S2WLJ6H2.js.LEGAL.txt → chunk-JKJ76CRT.js.LEGAL.txt} +0 -0
  85. /package/dist/chunks/{chunk-JB6ISWYA.js → chunk-LRLOANKA.js} +0 -0
@@ -34,4 +34,18 @@ export declare function filterOptionSelected(state: PlpFilterState, key: FilterG
34
34
  export declare function filterGroupItems(groups: readonly FacetLike[], state: PlpFilterState, inStock: number | null): FilterGroupItem[];
35
35
  export declare function filterChipItems(state: PlpFilterState, currency: Parameters<typeof plpActiveChips>[1], formatMoney: Parameters<typeof plpActiveChips>[2]): FilterChipItem[];
36
36
  export declare function filterStateWithoutChip(state: PlpFilterState, chip: Pick<FilterChipItem, "key" | "value">): PlpFilterState;
37
+ export interface OptionCardRows<I> {
38
+ items: I[];
39
+ states: {
40
+ selected: boolean;
41
+ }[];
42
+ actions: {
43
+ press: () => void;
44
+ }[];
45
+ }
46
+ export declare function optionCardRows<T, I>(options: readonly T[], { item, selected, press }: {
47
+ item: (option: T, index: number) => I;
48
+ selected: (option: T, index: number) => boolean;
49
+ press: (option: T, index: number) => () => void;
50
+ }): OptionCardRows<I>;
37
51
  export {};
@@ -1 +1 @@
1
- import{plpActiveChips as a}from"../wheels/plp-filters.js";import{STOCK_WORDS as s}from"../content/stock-words.js";const i="inStock",c="Availability",p="price";function o(n,e,t){if(e===i)return n.inStockOnly===!0;if(e===p)return!1;if(e==="lugs")return(n.lugs??[]).map(String).includes(t);const r=n[e];return Array.isArray(r)&&r.map(String).includes(t)}function k(n,e,t){const r=n.map(l=>({key:l.key,label:l.label,options:l.options.map(u=>({value:u.value,label:u.label,count:String(u.count),state:{selected:o(e,l.key,u.value)}}))}));return t!==null&&r.push({key:i,label:c,options:[{value:i,label:s.inStock,count:String(t),state:{selected:o(e,i,i)}}]}),r}function m(n,e,t){return a(n,e,t).map(r=>({key:r.key,value:String(r.value),label:r.label}))}function y(n,e){const t={...n,page:1};switch(e.key){case"price":return{...t,priceMax:null};case"priceMin":return{...t,priceMin:null};case"inStock":return{...t,inStockOnly:!1};case"kind":return{...t,kind:null};case"lugs":return{...t,lugs:(n.lugs??[]).filter(r=>String(r)!==e.value)};default:{const r=n[e.key].filter(l=>String(l)!==e.value);return{...t,[e.key]:r}}}}export{i as FILTER_IN_STOCK_KEY,c as FILTER_IN_STOCK_LABEL,p as FILTER_PRICE_KEY,m as filterChipItems,k as filterGroupItems,o as filterOptionSelected,y as filterStateWithoutChip};
1
+ import{plpActiveChips as o}from"../wheels/plp-filters.js";import{STOCK_WORDS as s}from"../content/stock-words.js";const u="inStock",c="Availability",p="price";function a(r,e,t){if(e===u)return r.inStockOnly===!0;if(e===p)return!1;if(e==="lugs")return(r.lugs??[]).map(String).includes(t);const n=r[e];return Array.isArray(n)&&n.map(String).includes(t)}function m(r,e,t){const n=r.map(l=>({key:l.key,label:l.label,options:l.options.map(i=>({value:i.value,label:i.label,count:String(i.count),state:{selected:a(e,l.key,i.value)}}))}));return t!==null&&n.push({key:u,label:c,options:[{value:u,label:s.inStock,count:String(t),state:{selected:a(e,u,u)}}]}),n}function k(r,e,t){return o(r,e,t).map(n=>({key:n.key,value:String(n.value),label:n.label}))}function y(r,e){const t={...r,page:1};switch(e.key){case"price":return{...t,priceMax:null};case"priceMin":return{...t,priceMin:null};case"inStock":return{...t,inStockOnly:!1};case"kind":return{...t,kind:null};case"lugs":return{...t,lugs:(r.lugs??[]).filter(n=>String(n)!==e.value)};default:{const n=r[e.key].filter(l=>String(l)!==e.value);return{...t,[e.key]:n}}}}function d(r,{item:e,selected:t,press:n}){return{items:r.map(e),states:r.map((l,i)=>({selected:t(l,i)})),actions:r.map((l,i)=>({press:n(l,i)}))}}export{u as FILTER_IN_STOCK_KEY,c as FILTER_IN_STOCK_LABEL,p as FILTER_PRICE_KEY,k as filterChipItems,m as filterGroupItems,a as filterOptionSelected,y as filterStateWithoutChip,d as optionCardRows};
@@ -1,7 +1,10 @@
1
1
  import { type GalleryLayoutKey } from "efficient-web-builder/format/lib/content/gallery-layout";
2
+ import { type MediaZone } from "efficient-easel/screen/lib/content/media-zones";
2
3
  import type { ProductSourceOptions } from "./product-source.js";
3
4
  export declare const PRODUCT_PICTURES_SOURCE = "product-pictures";
4
5
  export declare const EVERY_IMAGE_ZONE = "all";
6
+ export type ImageZone = Exclude<MediaZone, "rendering" | "videos">;
7
+ export declare const IMAGE_ZONES: readonly ImageZone[];
5
8
  export interface ProductPicturesOptions extends ProductSourceOptions {
6
9
  mediaZone?: string;
7
10
  }
@@ -1 +1 @@
1
- import{sourcedRows as E}from"efficient-web-builder/format/lib/content/block-sources";import{say as r}from"efficient-web-builder/format/lib/editor-words";import{resolveGalleryLayout as P}from"efficient-web-builder/format/lib/content/gallery-layout";import{servedListOf as T,servedRowLists as R,servedWords as _}from"../content/served-lists.js";const A="product-pictures",b="all",O="twoThenThreesPhoto";function I(t){const o=typeof t.layout=="string"&&t.layout?t.layout:void 0;return o&&P(o)||t.columns!=null&&t.columns!==""?o:O}const L=12,S=4,v=t=>Array.from({length:t},(o,n)=>({key:`sample-${n+1}`,process:r("Category"),eyebrow:r("Vehicle"),name:r("Product name"),meta:r("Finish")}));function M(t,o,n){const c=typeof n=="number"&&n>0?Math.floor(n):void 0,{rows:p,sample:f}=E(t,o,v(c??S)),y=f?null:R(t,e=>_(e.photos,L)),l=new Set,u=[];return p.forEach((e,m)=>{const s=e.cover??"";if(!f&&!s)return;const a=e.key||`row-${m+1}`;if(l.has(a))return;l.add(a);const i=T(y,e,m)??[],h=i[0]===s?i.slice(1):i.filter(d=>d!==s);u.push({image:s,photos:h.map(d=>({src:d})),href:e.href||void 0,process:e.process||void 0,eyebrow:e.eyebrow||void 0,name:e.name||void 0,meta:e.meta||void 0,tile:{id:a,tag:e.process??"",name:e.name??""}})}),c?u.slice(0,c):u}export{b as EVERY_IMAGE_ZONE,O as PRODUCT_PICTURES_LAYOUT,A as PRODUCT_PICTURES_SOURCE,M as productPictureTiles,I as productPicturesLayout};
1
+ import{sourcedRows as E}from"efficient-web-builder/format/lib/content/block-sources";import{say as s}from"efficient-web-builder/format/lib/editor-words";import{resolveGalleryLayout as _}from"efficient-web-builder/format/lib/content/gallery-layout";import{MEDIA_ZONES as O}from"efficient-easel/screen/lib/content/media-zones";import{servedListOf as P,servedRowLists as T,servedWords as R}from"../content/served-lists.js";const U="product-pictures",b="all",D=O.filter(e=>e!=="rendering"&&e!=="videos"),S="twoThenThreesPhoto";function G(e){const o=typeof e.layout=="string"&&e.layout?e.layout:void 0;return o&&_(o)||e.columns!=null&&e.columns!==""?o:S}const v=12,x=4,A=e=>Array.from({length:e},(o,n)=>({key:`sample-${n+1}`,process:s("Category"),eyebrow:s("Vehicle"),name:s("Product name"),meta:s("Finish")}));function N(e,o,n){const c=typeof n=="number"&&n>0?Math.floor(n):void 0,{rows:p,sample:f}=E(e,o,A(c??x)),y=f?null:T(e,t=>R(t.photos,v)),l=new Set,u=[];return p.forEach((t,m)=>{const r=t.cover??"";if(!f&&!r)return;const i=t.key||`row-${m+1}`;if(l.has(i))return;l.add(i);const a=P(y,t,m)??[],h=a[0]===r?a.slice(1):a.filter(d=>d!==r);u.push({image:r,photos:h.map(d=>({src:d})),href:t.href||void 0,process:t.process||void 0,eyebrow:t.eyebrow||void 0,name:t.name||void 0,meta:t.meta||void 0,tile:{id:i,tag:t.process??"",name:t.name??""}})}),c?u.slice(0,c):u}export{b as EVERY_IMAGE_ZONE,D as IMAGE_ZONES,S as PRODUCT_PICTURES_LAYOUT,U as PRODUCT_PICTURES_SOURCE,N as productPictureTiles,G as productPicturesLayout};
@@ -22,7 +22,10 @@ export declare function hydrateFieldUsage(data: Data, answers: readonly FieldUsa
22
22
  export declare function listingCatalogKinds(data: Data | null | undefined): ProductKind[];
23
23
  export declare function listingCatalogBound(data: Data | null | undefined): number | undefined;
24
24
  export declare function listingWantsWheelsOnly(kinds: readonly ProductKind[]): boolean;
25
- export declare function hydrateWheelsListing(data: Data, products: ProductSummary[] | WheelSummary[]): Data;
25
+ export declare function hydrateWheelsListing(data: Data, products: ProductSummary[] | WheelSummary[], { everyHoverPhoto }?: HydrateOptions): Data;
26
+ export interface HydrateOptions {
27
+ everyHoverPhoto?: boolean;
28
+ }
26
29
  export declare function stampListingQuery(data: Data, query: string): Data;
27
30
  export declare function dehydrateWheelsListing(data: Data): Data;
28
31
  export declare function dehydrateWheelsListingNode<T extends ContentNode>(stamped: T): T;
@@ -1 +1 @@
1
- import{resolvePlpKinds as E}from"../catalog/plp-item.js";import{gridPagingOf as I}from"../sections/product-grid-pages.js";import{gridKindsOf as L,gridRowsOf as W,isAllProductsSource as C,isLinkedSource as N}from"./grid-source.js";import{FILTER_BLOCK_TYPE as O,PRODUCT_GRID_TYPE as R,documentNodes as U,mapDocumentNodes as k}from"../document/document-nodes.js";import{selectedRangesOf as D,stripSelectedRanges as h}from"./selected-ranges.js";import{withShopperFirstPaint as Y,withoutShopperFirstPaint as B,withoutShopperFirstPaintNode as T}from"./shopper-first-paint.js";const p="AlloyWheelsListing",_="catalog",w="catalogTotal",K=12,H="CatalogFilterBar",c="fieldUsage",S="requestQuery";function f(t){return t.props?.source}function o(t){return t?.type===R&&N(f(t))}function l(t){return t?.type===H||t?.type===O}function A(t,e){if(e)return;const{limit:r,cap:n}=I(t.props??{});return n?Math.ceil(r)+K:void 0}function m(t){return t?.type===p||o(t)||l(t)}const u=t=>U(t);function Q(t){return t?u(t).some(e=>e?.type===p||o(e)):!1}function Z(t){return t?Q(t)||u(t).some(e=>T(e)!==e)||h(t)!==t:!1}function $(t){return t?u(t).some(m):!1}function tt(t,e){return e.length===0?t:g(t,m,r=>({...r,props:{...r.props??{},[c]:e}}))}function q(t){if(!t)return[];const e=new Set;for(const r of u(t)){if(r?.type!==p&&!o(r))continue;const n=r.props?.kinds;for(const s of o(r)?L(f(r),n):E(n))e.add(s)}return[...e]}function et(t){if(!t)return;const e=u(t);if(e.some(l))return;const r=q(t).length;let n;for(const s of e){if(s?.type===p)return;if(!o(s))continue;const i=A(s,!1),a=s.props??{},d=new Set(L(f(s),a.kinds)),G=["num","title","description","linkText"].some(x=>typeof a[x]=="string"&&a[x]!=="");if(i===void 0||!C(f(s))||d.size!==r||G)return;n=Math.max(n??0,i)}return n}function rt(t){return t.length===1&&t[0]==="alloy-wheel"}function nt(t,e){const r=D(t.root?.props),n=u(t).some(l);return Y(M(t,s=>o(s)?v(s,e,A(s,n)):{...s,props:{...y(s).props,products:e}}),r)}function v(t,e,r){const n=W(f(t),t.props?.kinds,e),s={...P(t).props};return r!==void 0&&n.length>r?(s[_]=n.slice(0,r),s[w]=n.length):s[_]=n,{...t,props:s}}function st(t,e){const r=e.replace(/^\?/,"");return r?g(t,n=>n?.type===p,n=>({...n,props:{...n.props??{},[S]:r}})):t}function ot(t){return B(g(h(t),m,e=>l(e)?F(e):o(e)?P(e):y(e)))}function F(t){if(!t.props||!(c in t.props))return t;const{[c]:e,...r}=t.props;return{...t,props:r}}function P(t){const{[_]:e,[w]:r,[c]:n,...s}=t.props??{},i=s.source;if(i&&"wheels"in i){const{wheels:a,...d}=i;s.source=d}return{...t,props:s}}function it(t){const e=h({content:[t]}).content[0],r=T(e);return o(r)?P(r):l(r)?F(r):r?.type===p?y(r):r}function y(t){const{wheels:e,products:r,[c]:n,[S]:s,...i}=t.props??{};return{...t,props:i}}function M(t,e){return g(t,r=>r?.type===p||o(r),e)}function g(t,e,r){return k(t,n=>e(n)?r(n):n)}export{p as ALLOY_WHEELS_LISTING_TYPE,H as CATALOG_FILTER_BAR_TYPE,c as FIELD_USAGE_PROP,O as FILTER_BLOCK_TYPE,_ as GRID_CATALOG_PROP,w as GRID_CATALOG_TOTAL_PROP,K as GRID_TOP_UP_SPARE,S as LISTING_QUERY_PROP,R as PRODUCT_GRID_TYPE,ot as dehydrateWheelsListing,it as dehydrateWheelsListingNode,tt as hydrateFieldUsage,nt as hydrateWheelsListing,et as listingCatalogBound,q as listingCatalogKinds,rt as listingWantsWheelsOnly,Z as pageHasHydratedValues,Q as pageHasWheelsListing,$ as pageReadsFieldUsage,st as stampListingQuery};
1
+ import{cardHoverOf as G}from"efficient-web-builder/format/lib/animation/hover";import{resolvePlpKinds as k}from"../catalog/plp-item.js";import{gridPagingOf as I}from"../sections/product-grid-pages.js";import{gridKindsOf as L,gridRowsOf as W,isAllProductsSource as v,isLinkedSource as C}from"./grid-source.js";import{FILTER_BLOCK_TYPE as O,PRODUCT_GRID_TYPE as R,documentNodes as N,mapDocumentNodes as U}from"../document/document-nodes.js";import{selectedRangesOf as D,stripSelectedRanges as h}from"./selected-ranges.js";import{withShopperFirstPaint as H,withoutShopperFirstPaint as Y,withoutShopperFirstPaintNode as T}from"./shopper-first-paint.js";const u="AlloyWheelsListing",m="catalog",w="catalogTotal",B=12,K="CatalogFilterBar",f="fieldUsage",S="requestQuery";function l(e){return e.props?.source}function p(e){return e?.type===R&&C(l(e))}function a(e){return e?.type===K||e?.type===O}function A(e,r){if(r)return;const{limit:t,cap:n}=I(e.props??{});return n?Math.ceil(t)+B:void 0}function _(e){return e?.type===u||p(e)||a(e)}const c=e=>N(e);function M(e){return e?c(e).some(r=>r?.type===u||p(r)):!1}function re(e){return e?M(e)||c(e).some(r=>T(r)!==r)||h(e)!==e:!1}function ne(e){return e?c(e).some(_):!1}function oe(e,r){return r.length===0?e:d(e,_,t=>({...t,props:{...t.props??{},[f]:r}}))}function Q(e){if(!e)return[];const r=new Set;for(const t of c(e)){if(t?.type!==u&&!p(t))continue;const n=t.props?.kinds;for(const o of p(t)?L(l(t),n):k(n))r.add(o)}return[...r]}function se(e){if(!e)return;const r=c(e);if(r.some(a))return;const t=Q(e).length;let n;for(const o of r){if(o?.type===u)return;if(!p(o))continue;const s=A(o,!1),i=o.props??{},g=new Set(L(l(o),i.kinds)),F=["num","title","description","linkText"].some(x=>typeof i[x]=="string"&&i[x]!=="");if(s===void 0||!v(l(o))||g.size!==t||F)return;n=Math.max(n??0,s)}return n}function ie(e){return e.length===1&&e[0]==="alloy-wheel"}function pe(e,r,{everyHoverPhoto:t=!1}={}){const n=D(e.root?.props),o=c(e).some(a),s=t?q:z;return H(V(e,i=>p(i)?b(i,r,A(i,o),s):{...i,props:{...y(i).props,products:s(i,r)}}),n)}const q=(e,r)=>[...r];function z(e,r){const t=G(e.props??{},e.type??""),n=t.kind==="nextImage"&&t.media&&t.media.kind!=="renderings"?t.media.kind:null;return r.map(o=>{const{hoverMedia:s,...i}=o;return s===void 0?o:n&&s?.[n]?{...i,hoverMedia:{[n]:s[n]}}:i})}function b(e,r,t,n){const o=n(e,W(l(e),e.props?.kinds,r)),s={...P(e).props};return t!==void 0&&o.length>t?(s[m]=o.slice(0,t),s[w]=o.length):s[m]=o,{...e,props:s}}function ue(e,r){const t=r.replace(/^\?/,"");return t?d(e,n=>n?.type===u,n=>({...n,props:{...n.props??{},[S]:t}})):e}function ce(e){return Y(d(h(e),_,r=>a(r)?E(r):p(r)?P(r):y(r)))}function E(e){if(!e.props||!(f in e.props))return e;const{[f]:r,...t}=e.props;return{...e,props:t}}function P(e){const{[m]:r,[w]:t,[f]:n,...o}=e.props??{},s=o.source;if(s&&"wheels"in s){const{wheels:i,...g}=s;o.source=g}return{...e,props:o}}function fe(e){const r=h({content:[e]}).content[0],t=T(r);return p(t)?P(t):a(t)?E(t):t?.type===u?y(t):t}function y(e){const{wheels:r,products:t,[f]:n,[S]:o,...s}=e.props??{};return{...e,props:s}}function V(e,r){return d(e,t=>t?.type===u||p(t),r)}function d(e,r,t){return U(e,n=>r(n)?t(n):n)}export{u as ALLOY_WHEELS_LISTING_TYPE,K as CATALOG_FILTER_BAR_TYPE,f as FIELD_USAGE_PROP,O as FILTER_BLOCK_TYPE,m as GRID_CATALOG_PROP,w as GRID_CATALOG_TOTAL_PROP,B as GRID_TOP_UP_SPARE,S as LISTING_QUERY_PROP,R as PRODUCT_GRID_TYPE,ce as dehydrateWheelsListing,fe as dehydrateWheelsListingNode,oe as hydrateFieldUsage,pe as hydrateWheelsListing,se as listingCatalogBound,Q as listingCatalogKinds,ie as listingWantsWheelsOnly,re as pageHasHydratedValues,M as pageHasWheelsListing,ne as pageReadsFieldUsage,ue as stampListingQuery};
package/dist/words.d.ts CHANGED
@@ -105,6 +105,7 @@ export type WebBuilderPhrase =
105
105
  | "A world map of your locations with a legend — designed here, sold worldwide."
106
106
  | "A write-a-review form — submissions wait for your approval before they show."
107
107
  | "About & brand story"
108
+ | "Accessories"
108
109
  | "Accordion"
109
110
  | "Account"
110
111
  | "Active tab"
@@ -360,6 +361,7 @@ export type WebBuilderPhrase =
360
361
  | "Country Switch"
361
362
  | "Cover"
362
363
  | "Cover image"
364
+ | "Covers"
363
365
  | "Cross ✕"
364
366
  | "Crumbs"
365
367
  | "Current page"
@@ -512,6 +514,7 @@ export type WebBuilderPhrase =
512
514
  | "Finish steps"
513
515
  | "Finish swatches"
514
516
  | "Finish · Size · ×1"
517
+ | "First group"
515
518
  | "First item"
516
519
  | "First section"
517
520
  | "Fit content"
@@ -701,6 +704,7 @@ export type WebBuilderPhrase =
701
704
  | "Legal Line"
702
705
  | "Length"
703
706
  | "Level"
707
+ | "Lifestyle photos"
704
708
  | "Lift"
705
709
  | "Lifted"
706
710
  | "Light"
@@ -865,6 +869,7 @@ export type WebBuilderPhrase =
865
869
  | "Order Table"
866
870
  | "Order content"
867
871
  | "Order summary"
872
+ | "Others"
868
873
  | "Outline"
869
874
  | "Outlined"
870
875
  | "Overlay"
@@ -905,6 +910,7 @@ export type WebBuilderPhrase =
905
910
  | "Pick a color to see how it reads."
906
911
  | "Pick a post from {place} to auto-fill this section, or keep “None (manual)” to author it yourself below."
907
912
  | "Pick who to reach, then a form that routes the message."
913
+ | "Picture"
908
914
  | "Picture first"
909
915
  | "Pinterest"
910
916
  | "Place"
@@ -938,6 +944,7 @@ export type WebBuilderPhrase =
938
944
  | "Product collections in a tidy grid."
939
945
  | "Product name"
940
946
  | "Product page"
947
+ | "Product photos"
941
948
  | "Product record"
942
949
  | "Product record (spec tiles)"
943
950
  | "Product tiles"
@@ -971,6 +978,7 @@ export type WebBuilderPhrase =
971
978
  | "Region · country"
972
979
  | "Related Products"
973
980
  | "Remove section"
981
+ | "Renderings"
974
982
  | "Repeating full-width rows — eyebrow, title and copy beside a numbered close-up image, alternating sides each row."
975
983
  | "Reset color"
976
984
  | "Reset {name} to the preset"
@@ -1004,6 +1012,8 @@ export type WebBuilderPhrase =
1004
1012
  | "Rows"
1005
1013
  | "Rows, first image on the left"
1006
1014
  | "Rows, first image on the right"
1015
+ | "Same finish"
1016
+ | "Same finish shows the photos of the finish the card shows, else the first group."
1007
1017
  | "Sans"
1008
1018
  | "Save"
1009
1019
  | "Save as Template"
@@ -1356,10 +1366,12 @@ export type WebBuilderPhrase =
1356
1366
  | "We accept"
1357
1367
  | "WeChat"
1358
1368
  | "What each card does when a shopper points at it, or taps it on a phone. Rotate turns the wheel picture."
1369
+ | "What each card does when a shopper points at it. Show next image covers the card with this product's photos, with arrows; a phone shows the card as it is. Rotate turns the wheel picture."
1359
1370
  | "What people *say.*"
1360
1371
  | "What this card does when a shopper points at it, or taps it on a phone. Highlight fills it with the surface color and turns its text the main color."
1361
1372
  | "What this does when a shopper points at it, or taps it on a phone."
1362
1373
  | "What this picture does when a shopper points at it. Black and white shows it in grey until then. A phone shows its colour."
1374
+ | "What this picture does when a shopper points at the card. Show next image covers the card or the picture with this product's photos, with arrows; a phone shows the picture as it is. Black and white shows it in grey until then."
1363
1375
  | "What this picture does when a shopper points at the card. Show next image fades to the card's next photo. Black and white shows it in grey until then. A phone shows the first photo in colour."
1364
1376
  | "What we count."
1365
1377
  | "WhatsApp"
@@ -1367,6 +1379,9 @@ export type WebBuilderPhrase =
1367
1379
  | "When the text does not fit"
1368
1380
  | "Where this content is edited."
1369
1381
  | "Whether this page sits on the site's content column, or runs edge to edge."
1382
+ | "Which of the product's pictures the card shows."
1383
+ | "Whole card"
1384
+ | "Whole card hides the words under the photo. Picture keeps the words and swatches in view."
1370
1385
  | "Whole number Theme Color"
1371
1386
  | "Wide (2:1)"
1372
1387
  | "Wide 2:1"
@@ -1492,11 +1507,11 @@ export type StorefrontBlocksPhrase =
1492
1507
  | "A line about it appears here."
1493
1508
  | "A number, @name or an ID"
1494
1509
  | "A sample. On the live page each size shows its own verdict for the shopper's car."
1510
+ | "A shadow under the wheel. Needs a picture with a clear background. None keeps the card as it is."
1495
1511
  | "A short description of your newsletter or publication."
1496
1512
  | "A short summary of the post appears here."
1497
1513
  | "A subhead."
1498
1514
  | "A third"
1499
- | "Accessories"
1500
1515
  | "Account and cart"
1501
1516
  | "Add a line of footer text."
1502
1517
  | "Add a second, shorter line if you need one."
@@ -1733,6 +1748,7 @@ export type StorefrontBlocksPhrase =
1733
1748
  | "Frequency options"
1734
1749
  | "From our *customers.*"
1735
1750
  | "Gallery A"
1751
+ | "Gallery A comes from the product’s Lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: the car set on the group is the eyebrow (a card keeps its caption when the group has no car), its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours."
1736
1752
  | "Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: its name is the eyebrow, its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours."
1737
1753
  | "Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: the car set on the group is the eyebrow (a card keeps its caption when the group has no car), its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours."
1738
1754
  | "Gallery B"
@@ -1805,8 +1821,6 @@ export type StorefrontBlocksPhrase =
1805
1821
  | "Left items"
1806
1822
  | "Left panel"
1807
1823
  | "Letters"
1808
- | "Lifestyle"
1809
- | "Lifestyle photos"
1810
1824
  | "Link a menu in the inspector →"
1811
1825
  | "Link alignment"
1812
1826
  | "Link to group"
@@ -1917,8 +1931,8 @@ export type StorefrontBlocksPhrase =
1917
1931
  | "Open now badge"
1918
1932
  | "Opening sort"
1919
1933
  | "Option label"
1934
+ | "Option template"
1920
1935
  | "Options"
1921
- | "Others"
1922
1936
  | "Others gallery"
1923
1937
  | "Outside"
1924
1938
  | "Outside click"
@@ -1935,7 +1949,6 @@ export type StorefrontBlocksPhrase =
1935
1949
  | "PNG · JPG · WEBP"
1936
1950
  | "Pair"
1937
1951
  | "Photo cards"
1938
- | "Photos"
1939
1952
  | "Pick a category from {place} to fill this card’s name, description and image. That content is edited in the category."
1940
1953
  | "Pick a form to show here, or build a new one. Forms are made once in {place} and can be shown on any number of pages."
1941
1954
  | "Pick a menu to drive the header links, or keep the built-in default links."
@@ -1945,10 +1958,10 @@ export type StorefrontBlocksPhrase =
1945
1958
  | "Pick a product…"
1946
1959
  | "Pick the products yourself below, or choose “All products” or a category from {place}."
1947
1960
  | "Pickup"
1948
- | "Picture"
1949
1961
  | "Picture fit"
1950
1962
  | "Pills"
1951
1963
  | "Pinning one overrides the section’s Cover image."
1964
+ | "Pools every product’s grouped media: each one’s Lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."
1952
1965
  | "Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."
1953
1966
  | "Popup's own"
1954
1967
  | "Popups"
@@ -1968,7 +1981,6 @@ export type StorefrontBlocksPhrase =
1968
1981
  | "Product content"
1969
1982
  | "Product link"
1970
1983
  | "Product page link"
1971
- | "Product photos"
1972
1984
  | "Product story"
1973
1985
  | "Product type"
1974
1986
  | "Product types"