efficient-storefront-blocks 0.42.1 → 0.44.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.
package/dist/links.js CHANGED
@@ -1 +1 @@
1
- var g={bold:{open:"**",close:"**",placeholder:"bold text"},italic:{open:"_",close:"_",placeholder:"italic text"},strike:{open:"~~",close:"~~",placeholder:"struck out"},code:{open:"`",close:"`",placeholder:"code"},highlight:{open:"==",close:"==",placeholder:"highlighted text"},quiet:{open:"^^",close:"^^",placeholder:"quiet text"},underline:{open:"[",close:"]{underline}",placeholder:"underlined text"},sup:{open:"[",close:"]{sup}",placeholder:"superscript"},sub:{open:"[",close:"]{sub}",placeholder:"subscript"}};var Oe={bold:g.bold.placeholder,italic:g.italic.placeholder,strike:g.strike.placeholder,code:g.code.placeholder,highlight:g.highlight.placeholder,quiet:g.quiet.placeholder,link:"link text",underline:g.underline.placeholder,sup:g.sup.placeholder,sub:g.sub.placeholder,color:"colored text"};var V=[{style:"bold",label:"B",name:"Strong",title:"Strong \xB7 **words** \xB7 \u2318B",shortcut:"b"},{style:"italic",label:"I",name:"Italic",title:"Italic \xB7 _words_ \xB7 \u2318I",shortcut:"i"},{style:"strike",label:"S",name:"Strikethrough",title:"Strikethrough \xB7 ~~words~~"},{style:"highlight",label:"\u25C6",name:"Emphasis",title:"Emphasis \xB7 ==words=="},{style:"quiet",label:"a",name:"Quiet",title:"Quiet \xB7 ^^words^^"},{style:"code",label:"\u2039\u203A",name:"Code",title:"Code"},{style:"link",label:"\u{1F517}",name:"Link",title:"Link \xB7 [words](https://\u2026) \xB7 \u2318K",shortcut:"k"},{style:"bullet",label:"\u2022",name:"Bulleted list",title:"Bulleted list"},{style:"number",label:"1.",name:"Numbered list",title:"Numbered list"},{style:"quote",label:"\u275D",name:"Quote",title:"Quote"},{style:"clear",label:"T\xD7",name:"Clear marks",title:"Clear marks \xB7 \u2318\u21E7X",shortcut:"shift+x"}];var x=[{open:"**",close:"**",kind:"bold"},{open:"==",close:"==",kind:"highlight"},{open:"~~",close:"~~",kind:"strike"},{open:"_",close:"_",kind:"italic",wordBoundary:!0},{open:"^^",close:"^^",kind:"quiet"},{open:"@@",close:"@@",kind:"highlight"},{open:"++",close:"++",kind:"bold",wordStart:!0}],Q=["highlight","quiet"],Ne=V.map(e=>e.style).filter(e=>x.some(n=>n.kind===e)).filter(e=>!Q.includes(e)),ve=[...x,{open:"*",close:"*",kind:"accent"}],Me=[...x,{open:"*",close:"*",kind:"accent"},{open:"#",close:"#",kind:"bold",notBefore:"0123456789"},{open:"[",close:"]",kind:"italic",notBefore:"(",notBeforeBlock:!0}];var ze=["http","https","mailto","tel"];function v(e){if(e===""||/[\s\u0000-\u001f\u007f]/.test(e))return!1;let n=/^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(e);return!n||ze.includes(n[1].toLowerCase())}var X=["width","profile","rim"];var Ue=/^\s*(\d{2,3})\s*\/\s*(\d{2,3})\s*[A-Za-z]*\s*(\d{2}(?:\.\d+)?)\s*$/,De={width:[100,500],profile:[20,100],rim:[10,30]};function M(e){let n=Ue.exec(e??"");if(!n)return null;let t={width:Number(n[1]),profile:Number(n[2]),rim:Number(n[3])};return X.every(i=>{let[a,u]=De[i];return t[i]>=a&&t[i]<=u})?t:null}function L(e){if(e.width==null)return"";if(e.profile==null)return String(e.width);let n=`${e.width}/${e.profile}`;return e.rim==null?n:`${n} R${e.rim}`}function J(e){return[L({width:e.width}),L({width:e.width,profile:e.profile}),L(e)]}var k=["alloy-wheel","tyre"],ee=["alloy-wheel"],w={"alloy-wheel":"Alloy wheels",tyre:"Tyres"};var Wn=k.map(e=>({value:e,label:w[e]}));function z(e){return e==null?[...ee]:Array.isArray(e)?k.filter(n=>e.includes(n)):[...ee]}var m=e=>e;function f(e){return m(e).kind==="tyre"?"tyre":"alloy-wheel"}function U(e){return m(e).brand??""}function ne(e){return m(e).prices??void 0}function te(e){return m(e).inStock!==!1}function re(e){let n=m(e),t=f(e)==="tyre"?n.rimDiameters:n.sizes;return Array.isArray(t)?t.filter(r=>typeof r=="number"&&Number.isFinite(r)):[]}function D(e){return f(e)==="tyre"?[]:(m(e).finishes??[]).filter(n=>typeof n?.family=="string").map(n=>({family:n.family,color:n.color??null}))}function ie(e){return D(e).map(n=>n.family)}function le(e){if(f(e)==="tyre")return[];let n=m(e),t=n.categories;return t&&t.length>0?t:n.process?[n.process]:[]}function oe(e){return f(e)==="tyre"?[]:m(e).spec?.pcds??[]}function se(e){return f(e)!=="tyre"?[]:m(e).tyreTypes??[]}function ae(e){return f(e)!=="tyre"?[]:m(e).speedRatings??[]}function ue(e){if(f(e)!=="tyre")return[];let n=m(e).sizes;return Array.isArray(n)?n.map(t=>M(typeof t=="string"?t:null)).filter(t=>t!==null):[]}var ce=null;function pe(e,n){return n?e.replace(/\{([A-Za-z][A-Za-z0-9_]*)\}/g,(t,r)=>Object.prototype.hasOwnProperty.call(n,r)?String(n[r]):t):e}function P(e,n){let t=ce?ce[e]:void 0;if(typeof t=="function"){try{let r=t(n??{});if(typeof r=="string"&&r)return r}catch{}return pe(e,n)}return pe(typeof t=="string"&&t?t:e,n)}var de="homepage";function fe(e){return(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}var F=[{value:"page",label:"Page"},{value:"anchor",label:"Anchor"},{value:"blog",label:"Blog post",needs:"service"},{value:"product",label:"Product",needs:"commerce"},{value:"custom",label:"Custom URL"}];function T(e){return e.offersCommerce&&e.offersService?F:F.filter(n=>!n.needs||(n.needs==="commerce"?e.offersCommerce:e.offersService))}function y(e){return e===de?"/":`/${e}`}function _(e){return`/journal/${e}`}function A(e){return`/wheels/${e}`}function E(e,n){return`${y(e)}#${n}`}function $(e){return fe(e)}function $e(e){return typeof e=="string"?e.trim():e&&typeof e=="object"&&typeof e.text=="string"?e.text.trim():""}function R(...e){let n=new Set,t=[];for(let r of e)for(let i of r?.content??[]){let a=$e(i?.props?.anchor);if(!a)continue;let u=$(a);!u||n.has(u)||(n.add(u),t.push({slug:u,name:a}))}return t}var Be=()=>({choosePage:P("Choose a page"),chooseSection:P("Choose a section"),noSections:P("No section anchors yet"),sectionHint:P("Jumps to a section on that page."),choosePost:P("Choose a post"),chooseProduct:P("Choose a product")});function I(e,n,t){if(!e)return"page";if(e.startsWith("/journal/"))return"blog";if(e.startsWith("/wheels/"))return"product";if(e.includes("#")){let r=e.slice(0,e.indexOf("#"));if(r===""||r==="/"||n.includes(r))return"anchor"}return e==="/"||n.includes(e)||t&&t.listingPaths.includes(t.targetOf(e))?"page":"custom"}function me(e,n){let t=Be(),r=e.pages.map(o=>({value:y(o.slug),label:o.title})),i=n?.pageOptions?n.pageOptions(r):r,a=i.map(o=>o.value),u=e.pages.map(o=>({label:o.title,options:R(...o.docs).map(p=>({value:E(o.slug,p.slug),label:p.name}))})).filter(o=>o.options.length>0),c=o=>{switch(o){case"page":return{type:"select",options:i,placeholder:t.choosePage};case"anchor":return{type:"groups",groups:u,placeholder:u.length?t.chooseSection:t.noSections};case"blog":return{type:"select",options:e.posts.map(p=>({value:_(p.slug),label:p.title||p.slug})),placeholder:t.choosePost};case"product":return{type:"select",options:e.products.map(p=>({value:p.href,label:p.name||p.href})),placeholder:t.chooseProduct};case"custom":return{type:"text"}}},s=T(e.offers).map(o=>({value:o.value,label:P(o.label),target:c(o.value),...o.value==="anchor"?{hint:t.sectionHint}:{},...o.value==="blog"||o.value==="product"?{hideWhenEmpty:!0}:{}}));if(!n)return{kinds:s,rules:{kindOf:o=>I(o,a),targetOf:o=>o,readFilter:()=>null,withFilter:o=>o}};let l=o=>{let p=n.withFilter(o,null);return n.listingPaths.includes(p)?p:o};return{kinds:s,rules:{kindOf:o=>I(o,a,{listingPaths:n.listingPaths,targetOf:l}),targetOf:l,readFilter:n.readFilter,withFilter:n.withFilter},filtersFor:o=>n.listingPaths.includes(o)?n.filtersFor(o):null}}function B(e,n){return e.length===0?e:e.filter(t=>t.kind===void 0||t.kind===n)}function he(e,n){let t=n==="filter"?"filterOrder":"cardOrder",r=new Map;for(let i of e){let a=i[t];if(typeof a!="number"||!Number.isFinite(a))continue;let u=r.get(i.fieldKey);(u===void 0||a<u)&&r.set(i.fieldKey,a)}return i=>i?r.get(i):void 0}function ge(e,n,t,r){let i=new Map;for(let s of t){let l=s[r];typeof l=="number"&&i.set(s.fieldKey,l)}if(i.size===0)return e;let a=[],u=[];e.forEach((s,l)=>{let o=n(s);o&&(a.push(l),u.push({item:s,index:l,order:i.get(o)}))}),u.sort((s,l)=>s.order!==void 0&&l.order!==void 0?s.order-l.order||s.index-l.index:s.order!==void 0?-1:l.order!==void 0?1:s.index-l.index);let c=[...e];return a.forEach((s,l)=>{c[s]=u[l].item}),c.every((s,l)=>s===e[l])?e:c}function ye(e){return Ye(e,"filter")}var We="collection";function W(e,n){return{tyreSizes:{},brands:{"alloy-wheel":"brand",tyre:"brand"},finishes:{"alloy-wheel":"wheel_finish_ref"},diameters:{"alloy-wheel":"diameter",tyre:"rim_diameter"},collections:{"alloy-wheel":We},pcds:{"alloy-wheel":"pcd"},tyreTypes:{tyre:"tire_type"},speedRatings:{tyre:"speed_rating"}}[e]?.[n]}function Ye(e,n){let t=new Set(e.filter(r=>r[n]===!1).map(r=>r.fieldKey));return r=>!r||!t.has(r)}function Ge(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Pe(e,n){let t=e?.[n];return Ge(t)?t:null}function be(e,n,t,r){if(t==null&&r==null)return!0;let i=Pe(e,n);return!(i===null||t!=null&&i<t||r!=null&&i>r)}var qe={recommended:"Recommended","price-asc":"Price \xB7 low to high","price-desc":"Price \xB7 high to low",new:"Newest",name:"Name A\u2013Z"},Lt=Object.keys(qe);var ke=["tyreSizes","brands","finishes","diameters","collections","pcds","tyreTypes","speedRatings"],He={tyreSizes:["tyre"],brands:["alloy-wheel","tyre"],finishes:["alloy-wheel"],diameters:["alloy-wheel","tyre"],collections:["alloy-wheel"],pcds:["alloy-wheel"],tyreTypes:["tyre"],speedRatings:["tyre"]},je={diameters:"tyreSizes"};function Ze(e){if(e.length===0)return[];let n=ke.filter(t=>e.every(r=>He[t].includes(r)));return n.filter(t=>{let r=je[t];return!r||!n.includes(r)})}function Ve(e){let n=new Set;for(let t of e)n.add(f(t));return[...n]}var Se={tyreSizes:[],brands:[],finishes:[],diameters:[],collections:[],pcds:[],tyreTypes:[],speedRatings:[],priceMax:null,inStockOnly:!1,kind:null,sort:"recommended",page:1};function Qe(e,n,t,r=null){if(r!=="kind"&&n.kind&&f(e)!==n.kind)return!1;for(let i of ke){if(r===i)continue;let a=n[i];if(a.length===0)continue;let u=a.map(String);if(!xe(e,i).some(c=>u.includes(c)))return!1}return!(r!=="price"&&!be(ne(e),t,null,n.priceMax)||r!=="inStock"&&n.inStockOnly&&!te(e))}var Xe={tyreSizes:"Size",brands:"Brand",finishes:"Colour",diameters:"Size \xB7 diameter",collections:"Collection",pcds:"PCD \xB7 fitment",tyreTypes:"Tyre type",speedRatings:"Speed rating"};function xe(e,n){switch(n){case"tyreSizes":return[...new Set(ue(e).flatMap(J))];case"brands":return U(e)?[U(e)]:[];case"finishes":return ie(e);case"diameters":return re(e).map(String);case"collections":return le(e);case"pcds":return oe(e);case"tyreTypes":return se(e);case"speedRatings":return ae(e)}}function Je(e){let n=new Map;for(let t of e)for(let r of D(t))r.color&&!n.has(r.family)&&n.set(r.family,r.color);return n}function Le(e,n,t,r=Ve(e),i=[]){let a=l=>nn(l,r,i),u=Je(e),c=Ze(r).filter(l=>l!=="tyreSizes").filter(a).map(l=>{let o=n[l].map(String),p=new Set,N=new Map,S=new Map;for(let d of e){let b=xe(d,l);for(let h of b)p.add(h);for(let h of new Set(b))S.set(h,(S.get(h)??0)+1);if(Qe(d,n,t,l))for(let h of new Set(b))N.set(h,(N.get(h)??0)+1)}let Ce=[...p].map(d=>({value:d,label:l==="diameters"?`${d}\u2033`:d,count:N.get(d)??0,checked:o.includes(d),swatch:l==="finishes"?u.get(d)??null:null})).sort((d,b)=>{if(l==="diameters")return Number(d.value)-Number(b.value);let h=(S.get(b.value)??0)-(S.get(d.value)??0);return h!==0?h:d.value.localeCompare(b.value)});return{key:l,label:Xe[l],options:Ce}}).filter(l=>l.options.length>en),s=[];for(let l of c){let o=tn(l.key,r,i);o!==void 0&&s.push({fieldKey:l.key,filterOrder:o})}return[...ge(c,l=>l.key,s,"filterOrder")]}var en=1;function we(e){return e.showCollection===!1?["collections"]:[]}function nn(e,n,t){return n.length===0||t.length===0?!0:n.some(r=>ye(B(t,r))(W(e,r)))}function tn(e,n,t){if(t.length===0)return;let r;for(let i of n){let a=he(B(t,i),"filter")(W(e,i));a!==void 0&&(r===void 0||a<r)&&(r=a)}return r}var Y={tyreSizes:"tyreSize",brands:"brand",finishes:"colour",diameters:"size",collections:"collection",pcds:"pcd",tyreTypes:"tyreType",speedRatings:"speed"},G="type";var Fe="AlloyWheelsListing";function Te(e){return v(e.trim())}var K="/wheels",C="Products";function _e(e,n){return n>1?`${C} \xB7 ${e}`:C}function q(...e){for(let n of e){let t=(n?.content??[]).find(r=>r?.type===Fe);if(t)return t.props??{}}return null}function O(...e){return q(...e)!==null}function Ae(e,n){let t=e.filter(r=>O(...r.docs)).map(r=>y(r.slug));return t.length===0&&n.fallback?[K]:t}var H=[G,...Object.entries(Y).filter(([e])=>e!=="tyreSizes").map(([,e])=>e)];function Ee(e){let n=e.indexOf("#"),t=n===-1?"":e.slice(n),r=n===-1?e:e.slice(0,n),i=r.indexOf("?");return{path:i===-1?r:r.slice(0,i),query:i===-1?"":r.slice(i+1),hash:t}}function rn(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return e}}function Re(e){let n=new URLSearchParams(Ee(e).query);for(let t of H){let r=n.get(t);if(r)return{param:t,value:r}}return null}function j(e,n){let{path:t,query:r,hash:i}=Ee(e),a=r.split("&").filter(u=>u&&!H.includes(rn(u.split("=")[0])));return n?.value&&a.push(`${encodeURIComponent(n.param)}=${encodeURIComponent(n.value)}`),`${t}${a.length?`?${a.join("&")}`:""}${i}`}function Ie(e,n){let t=j(e,null);return n.includes(t)?t:e}function ln(e,n,t=[]){return I(e,n,{listingPaths:t,targetOf:r=>Ie(r,t)})}function on(e){return Array.isArray(e)?e.filter(n=>typeof n?.kind=="string"&&typeof n.field_key=="string").map(n=>({kind:n.kind,fieldKey:n.field_key,...typeof n.filter=="boolean"?{filter:n.filter}:{},filterOrder:n.filter_order??null})):[]}var Ke="Product type",sn="AUD";function Z(e,n){let t=n.listing??{},r=z(t.kinds),i=e.filter(s=>r.includes(f(s))),a=we(t),u=Le(i,Se,sn,r,n.fieldUsage).filter(s=>!a.includes(s.key)).map(s=>({param:Y[s.key],label:s.label,values:s.options.filter(l=>!l.value.includes(",")).map(l=>({value:l.value,label:l.label}))})).filter(s=>s.values.length>0),c=k.filter(s=>r.includes(s)&&i.some(l=>f(l)===s));return c.length>1&&u.unshift({param:G,label:Ke,values:c.map(s=>({value:s,label:w[s]}))}),u}function an(e){return n=>{let t=Ae(n,{fallback:e.offersCommerce}),r=n.filter(i=>O(...i.docs)).length;return{listingPaths:t,pageOptions:i=>{let a=i.map(u=>{let c=n.find(s=>y(s.slug)===u.value);return c&&O(...c.docs)?{...u,label:_e(c.title,r)}:u});return r===0&&e.offersCommerce&&!a.some(u=>u.value===K)&&a.push({value:K,label:C}),a},filtersFor:i=>{if(!t.includes(i))return null;let a=n.find(u=>y(u.slug)===i);return Z(e.catalogue,{listing:a?q(...a.docs):null,fieldUsage:e.fieldUsage})},readFilter:Re,withFilter:j}}}function un(e){let n=an({catalogue:e.catalogue,fieldUsage:e.fieldUsage,offersCommerce:e.offers.offersCommerce})(e.pages),t=me({pages:e.pages,posts:e.posts,products:e.products.map(r=>({href:A(r.slug),name:r.name||r.slug})),offers:e.offers},n);return{...t,rules:{...t.rules,isSafe:Te},filtersFor:t.filtersFor??(()=>null)}}function Dt(e,n){return Z(e,n)}export{K as BUILT_IN_LISTING_PATH,F as LINK_KINDS,H as LISTING_FILTER_PARAMS,C as LISTING_PAGE_LABEL,Ke as PRODUCT_TYPE_FILTER_LABEL,E as anchorPath,on as fieldUsageFromAdminRows,ln as inferLinkKind,O as isProductListingPage,Te as isSafeLink,T as linkKindsFor,un as linkPickerSetup,Dt as listingFilterFields,q as listingNode,_e as listingPageLabel,Ie as listingTarget,R as pageAnchors,y as pagePath,_ as postPath,Ae as productListingPaths,Re as readListingFilter,$ as slugifyAnchor,A as wheelPath,j as withListingFilter};
1
+ var h={bold:{open:"**",close:"**",placeholder:"bold text"},italic:{open:"_",close:"_",placeholder:"italic text"},strike:{open:"~~",close:"~~",placeholder:"struck out"},code:{open:"`",close:"`",placeholder:"code"},highlight:{open:"==",close:"==",placeholder:"highlighted text"},quiet:{open:"^^",close:"^^",placeholder:"quiet text"},underline:{open:"[",close:"]{underline}",placeholder:"underlined text"},sup:{open:"[",close:"]{sup}",placeholder:"superscript"},sub:{open:"[",close:"]{sub}",placeholder:"subscript"}};var Oe={bold:h.bold.placeholder,italic:h.italic.placeholder,strike:h.strike.placeholder,code:h.code.placeholder,highlight:h.highlight.placeholder,quiet:h.quiet.placeholder,link:"link text",underline:h.underline.placeholder,sup:h.sup.placeholder,sub:h.sub.placeholder,color:"colored text"};var V=[{style:"bold",label:"B",name:"Strong",title:"Strong \xB7 **words** \xB7 \u2318B",shortcut:"b"},{style:"italic",label:"I",name:"Italic",title:"Italic \xB7 _words_ \xB7 \u2318I",shortcut:"i"},{style:"strike",label:"S",name:"Strikethrough",title:"Strikethrough \xB7 ~~words~~"},{style:"highlight",label:"\u25C6",name:"Emphasis",title:"Emphasis \xB7 ==words=="},{style:"quiet",label:"a",name:"Quiet",title:"Quiet \xB7 ^^words^^"},{style:"code",label:"\u2039\u203A",name:"Code",title:"Code"},{style:"link",label:"\u{1F517}",name:"Link",title:"Link \xB7 [words](https://\u2026) \xB7 \u2318K",shortcut:"k"},{style:"bullet",label:"\u2022",name:"Bulleted list",title:"Bulleted list"},{style:"number",label:"1.",name:"Numbered list",title:"Numbered list"},{style:"quote",label:"\u275D",name:"Quote",title:"Quote"},{style:"clear",label:"T\xD7",name:"Clear marks",title:"Clear marks \xB7 \u2318\u21E7X",shortcut:"shift+x"}];var x=[{open:"**",close:"**",kind:"bold"},{open:"==",close:"==",kind:"highlight"},{open:"~~",close:"~~",kind:"strike"},{open:"_",close:"_",kind:"italic",wordBoundary:!0},{open:"^^",close:"^^",kind:"quiet"},{open:"@@",close:"@@",kind:"highlight"},{open:"++",close:"++",kind:"bold",wordStart:!0}],Q=["highlight","quiet"],Ne=V.map(e=>e.style).filter(e=>x.some(n=>n.kind===e)).filter(e=>!Q.includes(e)),Me=[...x,{open:"*",close:"*",kind:"accent"}],ve=[...x,{open:"*",close:"*",kind:"accent"},{open:"#",close:"#",kind:"bold",notBefore:"0123456789"},{open:"[",close:"]",kind:"italic",notBefore:"(",notBeforeBlock:!0}];var ze=["http","https","mailto","tel"];function M(e){if(e===""||/[\s\u0000-\u001f\u007f]/.test(e))return!1;let n=/^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(e);return!n||ze.includes(n[1].toLowerCase())}var X=["width","profile","rim"];var Ue=/^\s*(\d{2,3})\s*\/\s*(\d{2,3})\s*[A-Za-z]*\s*(\d{2}(?:\.\d+)?)\s*$/,De={width:[100,500],profile:[20,100],rim:[10,30]};function v(e){let n=Ue.exec(e??"");if(!n)return null;let t={width:Number(n[1]),profile:Number(n[2]),rim:Number(n[3])};return X.every(i=>{let[a,u]=De[i];return t[i]>=a&&t[i]<=u})?t:null}function L(e){if(e.width==null)return"";if(e.profile==null)return String(e.width);let n=`${e.width}/${e.profile}`;return e.rim==null?n:`${n} R${e.rim}`}function J(e){return[L({width:e.width}),L({width:e.width,profile:e.profile}),L(e)]}var k=["alloy-wheel","tyre"],ee=["alloy-wheel"],w={"alloy-wheel":"Alloy wheels",tyre:"Tyres"};var Wn=k.map(e=>({value:e,label:w[e]}));function z(e){return e==null?[...ee]:Array.isArray(e)?k.filter(n=>e.includes(n)):[...ee]}var m=e=>e;function f(e){return m(e).kind==="tyre"?"tyre":"alloy-wheel"}function U(e){return m(e).brand??""}function ne(e){return m(e).prices??void 0}function te(e){return m(e).inStock!==!1}function re(e){let n=m(e),t=f(e)==="tyre"?n.rimDiameters:n.sizes;return Array.isArray(t)?t.filter(r=>typeof r=="number"&&Number.isFinite(r)):[]}function D(e){return f(e)==="tyre"?[]:(m(e).finishes??[]).filter(n=>typeof n?.family=="string").map(n=>({family:n.family,color:n.color??null}))}function ie(e){return D(e).map(n=>n.family)}function oe(e){if(f(e)==="tyre")return[];let n=m(e),t=n.categories;return t&&t.length>0?t:n.process?[n.process]:[]}function le(e){return f(e)==="tyre"?[]:m(e).spec?.pcds??[]}function se(e){return f(e)!=="tyre"?[]:m(e).tyreTypes??[]}function ae(e){return f(e)!=="tyre"?[]:m(e).speedRatings??[]}function ue(e){if(f(e)!=="tyre")return[];let n=m(e).sizes;return Array.isArray(n)?n.map(t=>v(typeof t=="string"?t:null)).filter(t=>t!==null):[]}var ce=null;function pe(e,n){return n?e.replace(/\{([A-Za-z][A-Za-z0-9_]*)\}/g,(t,r)=>Object.prototype.hasOwnProperty.call(n,r)?String(n[r]):t):e}function P(e,n){let t=ce?ce[e]:void 0;if(typeof t=="function"){try{let r=t(n??{});if(typeof r=="string"&&r)return r}catch{}return pe(e,n)}return pe(typeof t=="string"&&t?t:e,n)}var de="homepage";function fe(e){return(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}var F=[{value:"page",label:"Page"},{value:"anchor",label:"Anchor"},{value:"blog",label:"Blog post",needs:"service"},{value:"product",label:"Product",needs:"commerce"},{value:"custom",label:"Custom URL"}];function T(e){return e.offersCommerce&&e.offersService?F:F.filter(n=>!n.needs||(n.needs==="commerce"?e.offersCommerce:e.offersService))}function y(e){return e===de?"/":`/${e}`}function _(e){return`/journal/${e}`}function A(e){return`/wheels/${e}`}function R(e,n){return`${y(e)}#${n}`}function $(e){return fe(e)}function $e(e){return typeof e=="string"?e.trim():e&&typeof e=="object"&&typeof e.text=="string"?e.text.trim():""}function E(...e){let n=new Set,t=[];for(let r of e)for(let i of r?.content??[]){let a=$e(i?.props?.anchor);if(!a)continue;let u=$(a);!u||n.has(u)||(n.add(u),t.push({slug:u,name:a}))}return t}var Be=()=>({choosePage:P("Choose a page"),chooseSection:P("Choose a section"),noSections:P("No section anchors yet"),sectionHint:P("Jumps to a section on that page."),choosePost:P("Choose a post"),chooseProduct:P("Choose a product")});function I(e,n,t){if(!e)return"page";if(e.startsWith("/journal/"))return"blog";if(e.startsWith("/wheels/"))return"product";if(e.includes("#")){let r=e.slice(0,e.indexOf("#"));if(r===""||r==="/"||n.includes(r))return"anchor"}return e==="/"||n.includes(e)||t&&t.listingPaths.includes(t.targetOf(e))?"page":"custom"}function me(e,n){let t=Be(),r=e.pages.map(l=>({value:y(l.slug),label:l.title})),i=n?.pageOptions?n.pageOptions(r):r,a=i.map(l=>l.value),u=e.pages.map(l=>({label:l.title,options:E(...l.docs).map(p=>({value:R(l.slug,p.slug),label:p.name}))})).filter(l=>l.options.length>0),c=l=>{switch(l){case"page":return{type:"select",options:i,placeholder:t.choosePage};case"anchor":return{type:"groups",groups:u,placeholder:u.length?t.chooseSection:t.noSections};case"blog":return{type:"select",options:e.posts.map(p=>({value:_(p.slug),label:p.title||p.slug})),placeholder:t.choosePost};case"product":return{type:"select",options:e.products.map(p=>({value:p.href,label:p.name||p.href})),placeholder:t.chooseProduct};case"custom":return{type:"text"}}},s=T(e.offers).map(l=>({value:l.value,label:P(l.label),target:c(l.value),...l.value==="anchor"?{hint:t.sectionHint}:{},...l.value==="blog"||l.value==="product"?{hideWhenEmpty:!0}:{}}));if(!n)return{kinds:s,rules:{kindOf:l=>I(l,a),targetOf:l=>l,readFilter:()=>null,withFilter:l=>l}};let o=l=>{let p=n.withFilter(l,null);return n.listingPaths.includes(p)?p:l};return{kinds:s,rules:{kindOf:l=>I(l,a,{listingPaths:n.listingPaths,targetOf:o}),targetOf:o,readFilter:n.readFilter,withFilter:n.withFilter},filtersFor:l=>n.listingPaths.includes(l)?n.filtersFor(l):null}}function B(e,n){return e.length===0?e:e.filter(t=>t.kind===void 0||t.kind===n)}function ge(e,n){let t=n==="filter"?"filterOrder":"cardOrder",r=new Map;for(let i of e){let a=i[t];if(typeof a!="number"||!Number.isFinite(a))continue;let u=r.get(i.fieldKey);(u===void 0||a<u)&&r.set(i.fieldKey,a)}return i=>i?r.get(i):void 0}function he(e,n,t,r){let i=new Map;for(let s of t){let o=s[r];typeof o=="number"&&i.set(s.fieldKey,o)}if(i.size===0)return e;let a=[],u=[];e.forEach((s,o)=>{let l=n(s);l&&(a.push(o),u.push({item:s,index:o,order:i.get(l)}))}),u.sort((s,o)=>s.order!==void 0&&o.order!==void 0?s.order-o.order||s.index-o.index:s.order!==void 0?-1:o.order!==void 0?1:s.index-o.index);let c=[...e];return a.forEach((s,o)=>{c[s]=u[o].item}),c.every((s,o)=>s===e[o])?e:c}function ye(e){return Ye(e,"filter")}var We="collection";function W(e,n){return{tyreSizes:{},brands:{"alloy-wheel":"brand",tyre:"brand"},finishes:{"alloy-wheel":"wheel_finish_ref"},diameters:{"alloy-wheel":"diameter",tyre:"rim_diameter"},collections:{"alloy-wheel":We},pcds:{"alloy-wheel":"pcd"},tyreTypes:{tyre:"tire_type"},speedRatings:{tyre:"speed_rating"}}[e]?.[n]}function Ye(e,n){let t=new Set(e.filter(r=>r[n]===!1).map(r=>r.fieldKey));return r=>!r||!t.has(r)}function Ge(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Pe(e,n){let t=e?.[n];return Ge(t)?t:null}function be(e,n,t,r){if(t==null&&r==null)return!0;let i=Pe(e,n);return!(i===null||t!=null&&i<t||r!=null&&i>r)}var qe={recommended:"Recommended","price-asc":"Price \xB7 low to high","price-desc":"Price \xB7 high to low",new:"Newest",name:"Name A\u2013Z"},Lt=Object.keys(qe);var ke=["tyreSizes","brands","finishes","diameters","collections","pcds","tyreTypes","speedRatings"],He={tyreSizes:["tyre"],brands:["alloy-wheel","tyre"],finishes:["alloy-wheel"],diameters:["alloy-wheel","tyre"],collections:["alloy-wheel"],pcds:["alloy-wheel"],tyreTypes:["tyre"],speedRatings:["tyre"]},je={diameters:"tyreSizes"};function Ze(e){if(e.length===0)return[];let n=ke.filter(t=>e.every(r=>He[t].includes(r)));return n.filter(t=>{let r=je[t];return!r||!n.includes(r)})}function Ve(e){let n=new Set;for(let t of e)n.add(f(t));return[...n]}var Se={tyreSizes:[],brands:[],finishes:[],diameters:[],collections:[],pcds:[],tyreTypes:[],speedRatings:[],priceMax:null,inStockOnly:!1,kind:null,sort:"recommended",page:1};function Qe(e,n,t,r=null){if(r!=="kind"&&n.kind&&f(e)!==n.kind)return!1;for(let i of ke){if(r===i)continue;let a=n[i];if(a.length===0)continue;let u=a.map(String);if(!xe(e,i).some(c=>u.includes(c)))return!1}return!(r!=="price"&&!be(ne(e),t,null,n.priceMax)||r!=="inStock"&&n.inStockOnly&&!te(e))}var Xe={tyreSizes:"Size",brands:"Brand",finishes:"Colour",diameters:"Size \xB7 diameter",collections:"Collection",pcds:"PCD \xB7 fitment",tyreTypes:"Tyre type",speedRatings:"Speed rating"};function xe(e,n){switch(n){case"tyreSizes":return[...new Set(ue(e).flatMap(J))];case"brands":return U(e)?[U(e)]:[];case"finishes":return ie(e);case"diameters":return re(e).map(String);case"collections":return oe(e);case"pcds":return le(e);case"tyreTypes":return se(e);case"speedRatings":return ae(e)}}function Je(e){let n=new Map;for(let t of e)for(let r of D(t))r.color&&!n.has(r.family)&&n.set(r.family,r.color);return n}function Le(e,n,t,r=Ve(e),i=[]){let a=o=>nn(o,r,i),u=Je(e),c=Ze(r).filter(o=>o!=="tyreSizes").filter(a).map(o=>{let l=n[o].map(String),p=new Set,N=new Map,S=new Map;for(let d of e){let b=xe(d,o);for(let g of b)p.add(g);for(let g of new Set(b))S.set(g,(S.get(g)??0)+1);if(Qe(d,n,t,o))for(let g of new Set(b))N.set(g,(N.get(g)??0)+1)}let Ke=[...p].map(d=>({value:d,label:o==="diameters"?`${d}\u2033`:d,count:N.get(d)??0,checked:l.includes(d),swatch:o==="finishes"?u.get(d)??null:null})).sort((d,b)=>{if(o==="diameters")return Number(d.value)-Number(b.value);let g=(S.get(b.value)??0)-(S.get(d.value)??0);return g!==0?g:d.value.localeCompare(b.value)});return{key:o,label:Xe[o],options:Ke}}).filter(o=>o.options.length>en),s=[];for(let o of c){let l=tn(o.key,r,i);l!==void 0&&s.push({fieldKey:o.key,filterOrder:l})}return[...he(c,o=>o.key,s,"filterOrder")]}var en=1;function we(e){return e.showCollection===!1?["collections"]:[]}function nn(e,n,t){return n.length===0||t.length===0?!0:n.some(r=>ye(B(t,r))(W(e,r)))}function tn(e,n,t){if(t.length===0)return;let r;for(let i of n){let a=ge(B(t,i),"filter")(W(e,i));a!==void 0&&(r===void 0||a<r)&&(r=a)}return r}var Y={tyreSizes:"tyreSize",brands:"brand",finishes:"colour",diameters:"size",collections:"collection",pcds:"pcd",tyreTypes:"tyreType",speedRatings:"speed"},G="type";var Fe="AlloyWheelsListing";function Te(e){return M(e.trim())}var C="/wheels",K="Products";function _e(e,n){return n>1?`${K} \xB7 ${e}`:K}function q(...e){for(let n of e){let t=(n?.content??[]).find(r=>r?.type===Fe);if(t)return t.props??{}}return null}function O(...e){return q(...e)!==null}function Ae(e,n){let t=e.filter(r=>O(...r.docs)).map(r=>y(r.slug));return t.length===0&&n.fallback?[C]:t}var H=[G,...Object.entries(Y).filter(([e])=>e!=="tyreSizes").map(([,e])=>e)];function Re(e){let n=e.indexOf("#"),t=n===-1?"":e.slice(n),r=n===-1?e:e.slice(0,n),i=r.indexOf("?");return{path:i===-1?r:r.slice(0,i),query:i===-1?"":r.slice(i+1),hash:t}}function rn(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch{return e}}function Ee(e){let n=new URLSearchParams(Re(e).query);for(let t of H){let r=n.get(t);if(r)return{param:t,value:r}}return null}function j(e,n){let{path:t,query:r,hash:i}=Re(e),a=r.split("&").filter(u=>u&&!H.includes(rn(u.split("=")[0])));return n?.value&&a.push(`${encodeURIComponent(n.param)}=${encodeURIComponent(n.value)}`),`${t}${a.length?`?${a.join("&")}`:""}${i}`}function Ie(e,n){let t=j(e,null);return n.includes(t)?t:e}function on(e,n,t=[]){return I(e,n,{listingPaths:t,targetOf:r=>Ie(r,t)})}function ln(e){return Array.isArray(e)?e.filter(n=>typeof n?.kind=="string"&&typeof n.field_key=="string").map(n=>({kind:n.kind,fieldKey:n.field_key,...typeof n.filter=="boolean"?{filter:n.filter}:{},filterOrder:n.filter_order??null})):[]}var Ce="Product type",sn="AUD";function Z(e,n){let t=n.listing??{},r=z(t.kinds),i=e.filter(s=>r.includes(f(s))),a=we(t),u=Le(i,Se,sn,r,n.fieldUsage).filter(s=>!a.includes(s.key)).map(s=>({param:Y[s.key],label:s.label,values:s.options.filter(o=>!o.value.includes(",")).map(o=>({value:o.value,label:o.label}))})).filter(s=>s.values.length>0),c=k.filter(s=>r.includes(s)&&i.some(o=>f(o)===s));return c.length>1&&u.unshift({param:G,label:Ce,values:c.map(s=>({value:s,label:w[s]}))}),u}function an(e){return n=>{let t=Ae(n,{fallback:e.offersCommerce}),r=n.filter(i=>O(...i.docs)).length;return{listingPaths:t,pageOptions:i=>{let a=i.map(u=>{let c=n.find(s=>y(s.slug)===u.value);return c&&O(...c.docs)?{...u,label:_e(c.title,r)}:u});return r===0&&e.offersCommerce&&!a.some(u=>u.value===C)&&a.push({value:C,label:K}),a},filtersFor:i=>{if(!t.includes(i))return null;let a=n.find(u=>y(u.slug)===i);return Z(e.catalogue,{listing:a?q(...a.docs):null,fieldUsage:e.fieldUsage})},readFilter:Ee,withFilter:j}}}function un(e){let n=an({catalogue:e.catalogue,fieldUsage:e.fieldUsage,offersCommerce:e.offers.offersCommerce})(e.pages),t=me({pages:e.pages,posts:e.posts,products:e.products.map(r=>({href:A(r.slug),name:r.name||r.slug})),offers:e.offers},n);return{...t,rules:{...t.rules,isSafe:Te},filtersFor:t.filtersFor??(()=>null)}}function Dt(e,n){return Z(e,n)}export{C as BUILT_IN_LISTING_PATH,F as LINK_KINDS,H as LISTING_FILTER_PARAMS,K as LISTING_PAGE_LABEL,Ce as PRODUCT_TYPE_FILTER_LABEL,R as anchorPath,ln as fieldUsageFromAdminRows,on as inferLinkKind,O as isProductListingPage,Te as isSafeLink,T as linkKindsFor,un as linkPickerSetup,Dt as listingFilterFields,q as listingNode,_e as listingPageLabel,Ie as listingTarget,E as pageAnchors,y as pagePath,_ as postPath,Ae as productListingPaths,Ee as readListingFilter,$ as slugifyAnchor,A as wheelPath,j as withListingFilter};
package/dist/words.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * GENERATED with the catalogues by scripts/write-editor-words.ts, from the
5
5
  * website builder's phrases (`WEB_BUILDER_WORDS`) and the blocks' own
6
- * (`src/lib/storefront-editor-words.ts`); never edit it by hand.
6
+ * (`src/editor/lib/storefront-editor-words.ts`); never edit it by hand.
7
7
  * `scripts/test-editor-words.ts` fails when it is not what the catalogues say,
8
8
  * and `types.check.ts` pairs each declaration with the code it describes.
9
9
  */
@@ -170,7 +170,6 @@ export type WebBuilderPhrase =
170
170
  | "Background"
171
171
  | "Background image"
172
172
  | "Background images"
173
- | "Background video"
174
173
  | "Badge"
175
174
  | "Banner"
176
175
  | "Banner headline"
@@ -182,6 +181,7 @@ export type WebBuilderPhrase =
182
181
  | "Basics"
183
182
  | "Before"
184
183
  | "Begin reading"
184
+ | "Below"
185
185
  | "Below picture"
186
186
  | "Big first"
187
187
  | "Big left"
@@ -271,7 +271,6 @@ export type WebBuilderPhrase =
271
271
  | "Chat with us"
272
272
  | "Checkout & ordering"
273
273
  | "Chip label"
274
- | "Choose a background image first — there’s nothing to focus yet."
275
274
  | "Choose a page"
276
275
  | "Choose a post"
277
276
  | "Choose a product"
@@ -290,6 +289,7 @@ export type WebBuilderPhrase =
290
289
  | "Clear this site’s colors?"
291
290
  | "Clear {what}"
292
291
  | "Clear {what}: {label}"
292
+ | "Click to play"
293
293
  | "Collections"
294
294
  | "Color"
295
295
  | "Column *title.*"
@@ -325,7 +325,6 @@ export type WebBuilderPhrase =
325
325
  | "Couldn’t delete the page — please retry."
326
326
  | "Couldn’t duplicate the section — please retry"
327
327
  | "Couldn’t load pages"
328
- | "Couldn’t open the media picker — please try again."
329
328
  | "Couldn’t open this section."
330
329
  | "Couldn’t reach {place}."
331
330
  | "Count"
@@ -350,6 +349,8 @@ export type WebBuilderPhrase =
350
349
  | "Dashed"
351
350
  | "Data points"
352
351
  | "Date"
352
+ | "Dealers"
353
+ | "Dealers are not available on this website"
353
354
  | "Deck / standfirst"
354
355
  | "Default"
355
356
  | "Defect rate by product"
@@ -375,6 +376,7 @@ export type WebBuilderPhrase =
375
376
  | "Directions link"
376
377
  | "Dismiss link"
377
378
  | "Display"
379
+ | "Distance"
378
380
  | "Distance from top"
379
381
  | "Divider"
380
382
  | "Document Detail Cards"
@@ -523,6 +525,7 @@ export type WebBuilderPhrase =
523
525
  | "Hand-picked products in a tidy grid."
524
526
  | "Hard to read"
525
527
  | "Header"
528
+ | "Header and footer not live yet"
526
529
  | "Header badge"
527
530
  | "Header settings belong to a website."
528
531
  | "Header · on every page"
@@ -556,11 +559,13 @@ export type WebBuilderPhrase =
556
559
  | "Icon"
557
560
  | "Icon after text"
558
561
  | "Icon before text"
562
+ | "Icon only"
559
563
  | "Icon position"
560
564
  | "Illustrative example"
561
565
  | "Image"
562
566
  | "Image & Text Columns"
563
567
  | "Image & Text Split"
568
+ | "Image 2"
564
569
  | "Image background"
565
570
  | "Image caption"
566
571
  | "Image column"
@@ -707,10 +712,12 @@ export type WebBuilderPhrase =
707
712
  | "Next slide"
708
713
  | "No fill"
709
714
  | "No locations yet."
715
+ | "No match"
710
716
  | "No match (gray ✕)"
711
717
  | "No other pages"
712
718
  | "No pages match your search"
713
719
  | "No pages yet. Add one with + above."
720
+ | "No place found. Try another postcode."
714
721
  | "No section anchors yet"
715
722
  | "No style"
716
723
  | "No wrap"
@@ -738,8 +745,10 @@ export type WebBuilderPhrase =
738
745
  | "Offices"
739
746
  | "Offset tall"
740
747
  | "On a phone"
748
+ | "On every blog post."
741
749
  | "On picture"
742
750
  | "On this page"
751
+ | "One"
743
752
  | "One row"
744
753
  | "One then four"
745
754
  | "Only the size follows a site style. This section sets its own font, weight and letter case."
@@ -748,7 +757,6 @@ export type WebBuilderPhrase =
748
757
  | "Open the {name} in a new tab"
749
758
  | "Open your saved draft in a new tab. Visitors don't see it."
750
759
  | "Opening hours"
751
- | "Opening the picker…"
752
760
  | "Option"
753
761
  | "Order Table"
754
762
  | "Order summary"
@@ -789,6 +797,7 @@ export type WebBuilderPhrase =
789
797
  | "Placement"
790
798
  | "Plain"
791
799
  | "Play video"
800
+ | "Playback"
792
801
  | "Playback speed"
793
802
  | "Plays well with\n*your favourite apps.*"
794
803
  | "Pop up - SubscribePopup"
@@ -906,15 +915,18 @@ export type WebBuilderPhrase =
906
915
  | "Set this card's corners first."
907
916
  | "Shadow color"
908
917
  | "Shape"
918
+ | "Share button"
909
919
  | "Shared"
910
920
  | "Shop & galleries"
911
921
  | "Short description of this figure."
912
922
  | "Short detail line"
913
923
  | "Short supporting line"
924
+ | "Show"
914
925
  | "Show arrows"
915
926
  | "Show cover image"
916
927
  | "Show hints"
917
928
  | "Show on a card"
929
+ | "Show on phones"
918
930
  | "Show slide picker"
919
931
  | "Show texture"
920
932
  | "Show the chat bubble"
@@ -922,11 +934,13 @@ export type WebBuilderPhrase =
922
934
  | "Show ticker"
923
935
  | "Show {label} on the slide"
924
936
  | "Shown beside the heading"
937
+ | "Shows when a visitor points at the button"
925
938
  | "Side space"
926
939
  | "Side-by-side image and text in two columns."
927
940
  | "Sideways"
928
941
  | "Signup Form"
929
942
  | "Simple"
943
+ | "Site button color"
930
944
  | "Site settings"
931
945
  | "Site styles"
932
946
  | "Six across"
@@ -944,6 +958,8 @@ export type WebBuilderPhrase =
944
958
  | "Social links"
945
959
  | "Soft"
946
960
  | "Solid"
961
+ | "Somebody else"
962
+ | "Source"
947
963
  | "Space above and below"
948
964
  | "Space between"
949
965
  | "Spacer"
@@ -955,6 +971,7 @@ export type WebBuilderPhrase =
955
971
  | "Spine (single rail)"
956
972
  | "Split (editorial aside)"
957
973
  | "Square"
974
+ | "Squares"
958
975
  | "Stacked"
959
976
  | "Standard"
960
977
  | "Start"
@@ -1042,6 +1059,8 @@ export type WebBuilderPhrase =
1042
1059
  | "The footer cannot take another one of these"
1043
1060
  | "The footer holds at most 6 sections"
1044
1061
  | "The header and footer could not load. They are hidden for now and nothing in them is saved. Reload to try again."
1062
+ | "The header and footer did not save. They are sent again with your next change."
1063
+ | "The header and footer were changed somewhere else. Nothing you change in them here is saved. Reload to get the latest."
1045
1064
  | "The header cannot take another one of these"
1046
1065
  | "The header holds at most 3 sections"
1047
1066
  | "The room left at the left and right edge of every page."
@@ -1099,7 +1118,9 @@ export type WebBuilderPhrase =
1099
1118
  | "Two image galleries with tabs and filters."
1100
1119
  | "Two tall"
1101
1120
  | "Type"
1121
+ | "Type a postcode or address"
1102
1122
  | "Typed here"
1123
+ | "Typed in"
1103
1124
  | "Tyre Fitment Form"
1104
1125
  | "Tyre Sizes"
1105
1126
  | "URL pill"
@@ -1113,8 +1134,8 @@ export type WebBuilderPhrase =
1113
1134
  | "Upcoming"
1114
1135
  | "Update style"
1115
1136
  | "Update {style}?"
1137
+ | "Upload"
1116
1138
  | "Upload a background image"
1117
- | "Upload a background video"
1118
1139
  | "Upload a poster still"
1119
1140
  | "Uppercase heading"
1120
1141
  | "Use {colour}"
@@ -1122,6 +1143,7 @@ export type WebBuilderPhrase =
1122
1143
  | "Value suffix"
1123
1144
  | "Vertical breathing room between sections."
1124
1145
  | "Video"
1146
+ | "Video file"
1125
1147
  | "Video poster"
1126
1148
  | "View all"
1127
1149
  | "View all questions"
@@ -1147,6 +1169,7 @@ export type WebBuilderPhrase =
1147
1169
  | "Year →"
1148
1170
  | "Years"
1149
1171
  | "YouTube"
1172
+ | "YouTube link"
1150
1173
  | "Your *first* section."
1151
1174
  | "Your *second* section."
1152
1175
  | "Your fifth question goes here?"
@@ -1171,7 +1194,7 @@ export type WebBuilderPhrase =
1171
1194
  | "each block's own spacing"
1172
1195
  | "entries"
1173
1196
  | "group"
1174
- | "images only"
1197
+ | "https://youtu.be/…"
1175
1198
  | "item"
1176
1199
  | "label"
1177
1200
  | "manifesto"
@@ -1188,13 +1211,13 @@ export type WebBuilderPhrase =
1188
1211
  | "the theme's image stage"
1189
1212
  | "the theme's section background"
1190
1213
  | "this container's own spacing"
1191
- | "videos only"
1192
1214
  | "{grade} on the button"
1193
1215
  | "{label} hex code"
1194
1216
  | "{label} {n}"
1195
1217
  | "{label} — row {n}"
1196
1218
  | "{letter} · Step"
1197
1219
  | "{name} (unavailable)"
1220
+ | "{name} is editing the header and footer. Nothing you change in them here is saved."
1198
1221
  | "{name} is on this section"
1199
1222
  | "{name} — renamed in the Console: {place}."
1200
1223
  | "{n} cities"
@@ -1308,6 +1331,7 @@ export type StorefrontBlocksPhrase =
1308
1331
  | "Chosen"
1309
1332
  | "Chosen pages"
1310
1333
  | "Close popup"
1334
+ | "Code and currency"
1311
1335
  | "Collect from the warehouse."
1312
1336
  | "Collection"
1313
1337
  | "Collection Card"
@@ -1328,6 +1352,7 @@ export type StorefrontBlocksPhrase =
1328
1352
  | "Could not read this website’s brands. The list above shows only what is already picked — reopen the panel to try again."
1329
1353
  | "Could not save. Please retry."
1330
1354
  | "Couldn’t reach the product catalog."
1355
+ | "Country name"
1331
1356
  | "Country selector"
1332
1357
  | "Cover image only"
1333
1358
  | "Cover image only (no media groups)"
@@ -1335,6 +1360,7 @@ export type StorefrontBlocksPhrase =
1335
1360
  | "Create menus in {place}, then pick one here."
1336
1361
  | "Creates a retail account"
1337
1362
  | "Creates a wholesale account"
1363
+ | "Currency"
1338
1364
  | "Custom SVG logo uploaded for this store."
1339
1365
  | "Days"
1340
1366
  | "Deck"
@@ -1407,6 +1433,8 @@ export type StorefrontBlocksPhrase =
1407
1433
  | "First-name label"
1408
1434
  | "First-name placeholder"
1409
1435
  | "Fits"
1436
+ | "Flag"
1437
+ | "Flag and code"
1410
1438
  | "Follow the site theme"
1411
1439
  | "Follows the page"
1412
1440
  | "Footer"
@@ -1430,6 +1458,7 @@ export type StorefrontBlocksPhrase =
1430
1458
  | "Gallery link"
1431
1459
  | "Generic placeholder"
1432
1460
  | "Get it in the *inbox.*"
1461
+ | "Globe and code"
1433
1462
  | "Goes to {place}"
1434
1463
  | "Group covers"
1435
1464
  | "Group {n}"
@@ -1583,6 +1612,7 @@ export type StorefrontBlocksPhrase =
1583
1612
  | "On scroll up"
1584
1613
  | "On the photo"
1585
1614
  | "Only for looking at while you design. Shoppers always see the product they opened."
1615
+ | "Open chat"
1586
1616
  | "Open live"
1587
1617
  | "Opening sort"
1588
1618
  | "Option label"
@@ -1710,7 +1740,6 @@ export type StorefrontBlocksPhrase =
1710
1740
  | "Shop by brand"
1711
1741
  | "Short brand tagline"
1712
1742
  | "Short description"
1713
- | "Show"
1714
1743
  | "Show / hide elements"
1715
1744
  | "Show all blog posts"
1716
1745
  | "Show all items"