efficient-storefront-blocks 0.60.0 → 0.62.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 (154) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +2 -1
  3. package/dist/chunks/{EditorPreviewCheckout-XY2PLPBD.js → EditorPreviewCheckout-BQFPYYBS.js} +1 -1
  4. package/dist/chunks/{SiteEditorProvider-XF374NLZ.js → SiteEditorProvider-3E6XWZIS.js} +1 -1
  5. package/dist/chunks/chunk-4BQ44OLC.js +250 -0
  6. package/dist/chunks/chunk-MT5KWSYX.js +1 -0
  7. package/dist/chunks/chunk-OJ4OD3N6.js +1 -0
  8. package/dist/chunks/{fitment-data-RORHKBID.js → fitment-data-PWZAAUFK.js} +1 -1
  9. package/dist/editor/components/EditorPreviewChat.js +4 -4
  10. package/dist/editor/components/PreviewHeader.d.ts +1 -1
  11. package/dist/editor/components/PreviewHeader.js +4 -4
  12. package/dist/editor/lib/efficient-backend.d.ts +1 -0
  13. package/dist/editor/lib/efficient-backend.js +1 -1
  14. package/dist/editor/lib/efficient-block-sources.d.ts +2 -0
  15. package/dist/editor/lib/efficient-block-sources.js +1 -0
  16. package/dist/editor/lib/puck/blocks/commerce/EuTyreLabelBlock/fields.d.ts +2 -0
  17. package/dist/editor/lib/puck/blocks/commerce/EuTyreLabelBlock/fields.js +1 -0
  18. package/dist/editor/lib/puck/blocks/commerce/ProductGallery/fields.d.ts +6 -0
  19. package/dist/editor/lib/puck/blocks/commerce/ProductGallery/fields.js +1 -0
  20. package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.js +1 -1
  21. package/dist/editor/lib/puck/blocks/commerce/index.d.ts +1 -1
  22. package/dist/editor/lib/puck/blocks/commerce/index.js +1 -1
  23. package/dist/editor/lib/puck/blocks/service/RatingBlock/fields.d.ts +2 -0
  24. package/dist/editor/lib/puck/blocks/service/RatingBlock/fields.js +1 -0
  25. package/dist/editor/lib/puck/blocks/service/index.d.ts +1 -1
  26. package/dist/editor/lib/puck/blocks/service/index.js +1 -1
  27. package/dist/editor/lib/puck/config.js +1 -1
  28. package/dist/editor/lib/storefront-editor-words.d.ts +1 -0
  29. package/dist/editor/lib/storefront-editor-words.js +1 -1
  30. package/dist/editor.css +1 -1
  31. package/dist/fitment.d.ts +56 -0
  32. package/dist/fitment.js +1 -0
  33. package/dist/index.d.ts +36 -6
  34. package/dist/index.js +101 -81
  35. package/dist/links.js +1 -1
  36. package/dist/render/app/globals.css +70 -14
  37. package/dist/render/built-with.json +1 -1
  38. package/dist/render/components/CartContext.d.ts +1 -0
  39. package/dist/render/components/CartContext.js +1 -1
  40. package/dist/render/components/CartDrawer.d.ts +0 -8
  41. package/dist/render/components/CartDrawer.js +2 -2
  42. package/dist/render/components/ChatWidget.js +1 -1
  43. package/dist/render/components/EuTyreLabels.d.ts +3 -0
  44. package/dist/render/components/EuTyreLabels.js +1 -1
  45. package/dist/render/components/FitmentTable.js +1 -1
  46. package/dist/render/components/FooterMenu.js +1 -1
  47. package/dist/render/components/FormBlock.js +1 -1
  48. package/dist/render/components/GalleryItem.js +1 -1
  49. package/dist/render/components/Header.js +1 -1
  50. package/dist/render/components/LegalLine.js +1 -1
  51. package/dist/render/components/PopupFrame.d.ts +2 -1
  52. package/dist/render/components/PopupFrame.js +1 -1
  53. package/dist/render/components/PopupHost.d.ts +17 -0
  54. package/dist/render/components/PopupHost.js +1 -0
  55. package/dist/render/components/ProductCard.js +1 -1
  56. package/dist/render/components/ProductGallery.d.ts +15 -0
  57. package/dist/render/components/ProductGallery.js +1 -0
  58. package/dist/render/components/ProductHeroPanel.js +1 -1
  59. package/dist/render/components/RatingStars.d.ts +4 -0
  60. package/dist/render/components/RatingStars.js +1 -0
  61. package/dist/render/components/Reviews.js +1 -1
  62. package/dist/render/components/StorefrontProviders.d.ts +1 -3
  63. package/dist/render/components/StorefrontProviders.js +1 -1
  64. package/dist/render/components/SubscribePopupContext.d.ts +3 -15
  65. package/dist/render/components/SubscribePopupContext.js +1 -1
  66. package/dist/render/components/TyrePlpCard.js +1 -1
  67. package/dist/render/components/WheelCardFrame.d.ts +3 -27
  68. package/dist/render/components/WheelCardFrame.js +1 -1
  69. package/dist/render/components/card-pieces/CardBuyButton.d.ts +7 -0
  70. package/dist/render/components/card-pieces/CardBuyButton.js +1 -0
  71. package/dist/render/components/card-pieces/CardFinishSwatches.d.ts +5 -0
  72. package/dist/render/components/card-pieces/CardFinishSwatches.js +1 -0
  73. package/dist/render/components/card-pieces/CardPrice.d.ts +7 -0
  74. package/dist/render/components/card-pieces/CardPrice.js +1 -0
  75. package/dist/render/components/card-pieces/CardProductBadge.d.ts +7 -0
  76. package/dist/render/components/card-pieces/CardProductBadge.js +1 -0
  77. package/dist/render/components/card-pieces/CardSizes.d.ts +9 -0
  78. package/dist/render/components/card-pieces/CardSizes.js +1 -0
  79. package/dist/render/components/card-pieces/ProductCardState.d.ts +53 -0
  80. package/dist/render/components/card-pieces/ProductCardState.js +1 -0
  81. package/dist/render/components/card-pieces/card-row.d.ts +20 -0
  82. package/dist/render/components/card-pieces/card-row.js +1 -0
  83. package/dist/render/components/cart/drawer-parts.d.ts +28 -0
  84. package/dist/render/components/cart/drawer-parts.js +1 -0
  85. package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.d.ts +3 -0
  86. package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.js +1 -1
  87. package/dist/render/components/pdp-dynamic/DynamicProductGallery.d.ts +9 -0
  88. package/dist/render/components/pdp-dynamic/DynamicProductGallery.js +1 -0
  89. package/dist/render/components/useHeaderBar.js +1 -1
  90. package/dist/render/components/useIsLightTheme.d.ts +1 -0
  91. package/dist/render/components/useIsLightTheme.js +1 -0
  92. package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +2 -1
  93. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  94. package/dist/render/components/wheels-plp/PlpCard.d.ts +3 -2
  95. package/dist/render/components/wheels-plp/PlpCard.js +1 -1
  96. package/dist/render/components/wheels-plp/usePlpCardSelection.d.ts +1 -1
  97. package/dist/render/components/wheels-plp/usePlpCardSelection.js +1 -1
  98. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.d.ts +2 -1
  99. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.js +1 -1
  100. package/dist/render/lib/api/index.d.ts +4 -2
  101. package/dist/render/lib/api/index.js +1 -1
  102. package/dist/render/lib/api/types.d.ts +48 -1
  103. package/dist/render/lib/chrome-load.d.ts +1 -1
  104. package/dist/render/lib/chrome-load.js +1 -1
  105. package/dist/render/lib/content/field-usage.d.ts +0 -1
  106. package/dist/render/lib/content/field-usage.js +1 -1
  107. package/dist/render/lib/content/product-hero.d.ts +1 -0
  108. package/dist/render/lib/content/product-hero.js +1 -1
  109. package/dist/render/lib/header-fit.d.ts +2 -0
  110. package/dist/render/lib/header-fit.js +1 -0
  111. package/dist/render/lib/popup/popup-stores.d.ts +2 -0
  112. package/dist/render/lib/popup/popup-stores.js +1 -0
  113. package/dist/render/lib/puck/blocks/commerce/EuTyreLabelBlock/meta.d.ts +2 -0
  114. package/dist/render/lib/puck/blocks/commerce/EuTyreLabelBlock/meta.js +1 -0
  115. package/dist/render/lib/puck/blocks/commerce/EuTyreLabelBlock/render.d.ts +2 -0
  116. package/dist/render/lib/puck/blocks/commerce/EuTyreLabelBlock/render.js +1 -0
  117. package/dist/render/lib/puck/blocks/commerce/ProductGallery/meta.d.ts +2 -0
  118. package/dist/render/lib/puck/blocks/commerce/ProductGallery/meta.js +1 -0
  119. package/dist/render/lib/puck/blocks/commerce/ProductGallery/render.d.ts +2 -0
  120. package/dist/render/lib/puck/blocks/commerce/ProductGallery/render.js +1 -0
  121. package/dist/render/lib/puck/blocks/commerce/metas.d.ts +2 -0
  122. package/dist/render/lib/puck/blocks/commerce/metas.js +1 -1
  123. package/dist/render/lib/puck/blocks/commerce/renders.d.ts +2 -0
  124. package/dist/render/lib/puck/blocks/commerce/renders.js +1 -1
  125. package/dist/render/lib/puck/blocks/service/RatingBlock/meta.d.ts +3 -0
  126. package/dist/render/lib/puck/blocks/service/RatingBlock/meta.js +1 -0
  127. package/dist/render/lib/puck/blocks/service/RatingBlock/render.d.ts +2 -0
  128. package/dist/render/lib/puck/blocks/service/RatingBlock/render.js +1 -0
  129. package/dist/render/lib/puck/blocks/service/metas.d.ts +1 -0
  130. package/dist/render/lib/puck/blocks/service/metas.js +1 -1
  131. package/dist/render/lib/puck/blocks/service/renders.d.ts +1 -0
  132. package/dist/render/lib/puck/blocks/service/renders.js +1 -1
  133. package/dist/render/lib/puck/lazy-draws.js +1 -1
  134. package/dist/render/lib/storefront-page-groups.js +1 -1
  135. package/dist/render/lib/wheels/fitment-columns.d.ts +6 -1
  136. package/dist/render/lib/wheels/fitment-columns.js +1 -1
  137. package/dist/render/lib/wheels/plp-fitment-match.d.ts +4 -0
  138. package/dist/render/lib/wheels/plp-fitment-match.js +1 -1
  139. package/dist/render/lib/wheels/plp-hydrate.d.ts +2 -0
  140. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  141. package/dist/render/lib/wheels/spec-sheet.js +1 -1
  142. package/dist/words.d.ts +2 -2
  143. package/dist/words.js +3 -3
  144. package/package.json +11 -4
  145. package/dist/chunks/chunk-EZQTUHPN.js +0 -1
  146. package/dist/chunks/chunk-FCCEAXMM.js +0 -1
  147. package/dist/chunks/chunk-YNI65Q6Z.js +0 -250
  148. package/dist/render/components/wheels-plp/useWheelCardBottom.d.ts +0 -20
  149. package/dist/render/components/wheels-plp/useWheelCardBottom.js +0 -1
  150. package/dist/render/lib/popup/popup-rules.d.ts +0 -25
  151. package/dist/render/lib/popup/popup-rules.js +0 -1
  152. /package/dist/chunks/{chunk-YNI65Q6Z.js.LEGAL.txt → chunk-4BQ44OLC.js.LEGAL.txt} +0 -0
  153. /package/dist/chunks/{chunk-VT346MLP.js → chunk-FZFBLN7K.js} +0 -0
  154. /package/dist/chunks/{chunk-I6VNNXUI.js → chunk-TRUOK5AD.js} +0 -0
@@ -0,0 +1 @@
1
+ import{a as V,c as T,g as z,i as $,j,l as O}from"./chunk-FZFBLN7K.js";var U="".replace(/\/+$/,"");var N="x-forwarded-for";function Z(e){let t=(e??"").split(",").map(n=>n.trim()).filter(Boolean);return t.length>0?t[t.length-1]:null}var Ee="x-forwarded-host";function Q(e,t,n){let r={};return e&&(r[Ee]=e),t&&n==="uncached"&&(r[N]=t),r}function X(e){if(e?.cache==="no-store"||e?.cache==="no-cache")return"uncached";if(e?.cache==="force-cache")return"data-cached";let t=e?.next?.revalidate;return typeof t=="number"&&t>0?"data-cached":"uncached"}var Y="x-storefront-site",ee="x-storefront-host",te="x-storefront-preview";var Fe="shop_access_token",ne="shop_refresh_token",B=null;function L(){O.removeItem(Fe),O.removeItem(ne)}var w={getAccess(){return B},takeLegacyRefresh(){let e=O.getItem(ne);return L(),e},setTokens(e){B=e,L()},clear(){B=null,L()}};import{efficientClientOpen as Ze}from"efficient-easel/screen/lib/session";function Ie(e){return!!e.src}function A(e){let t=e.finishes.filter(Ie);if(t.length===e.finishes.length)return e;let n=e.defaultFinish&&t.some(r=>r.name===e.defaultFinish)?e.defaultFinish:null;return{...e,finishes:t,defaultFinish:n}}function qe(e){return e.listable!==!1}function M(e){return e.map(A).filter(qe)}var oe=["fill","stroke","stop-color","color","flood-color","lighting-color","solid-color"],ae=new Set(["none","transparent","currentcolor","inherit","initial","unset","context-fill","context-stroke"]),v={black:[0,0,0],white:[255,255,255],gray:[128,128,128],grey:[128,128,128],darkgray:[169,169,169],darkgrey:[169,169,169],dimgray:[105,105,105],dimgrey:[105,105,105],lightgray:[211,211,211],lightgrey:[211,211,211],gainsboro:[220,220,220],silver:[192,192,192],whitesmoke:[245,245,245]},ce=12,le=/\burl\(/i,ue=new RegExp(`(?<![-\\w])(${oe.join("|")})(\\s*=\\s*)(["'])([^"']*)\\3`,"gi"),me=new RegExp(`((?:^|[;{\\s"'])(?:${oe.join("|")})\\s*:\\s*)([^;}"'<>]+)`,"gi"),$e=/<svg\b([^>]*)>/i,Ue=/\bfill\s*[=:]/i;function Ne(e){let t=e.replace(ue,(n,r,a,l,d)=>{let i=re(d);return i===null?n:`${r}${a}${l}${i}${l}`}).replace(me,(n,r,a)=>{let l=re(a);return l===null?n:`${r}${l}`});return t=t.replace($e,(n,r)=>Ue.test(r)?n:`<svg fill="#ffffff"${r}>`),t}function re(e){let t=/!important/i.test(e),n=e.replace(/!important/gi,"").trim().toLowerCase();if(!n||le.test(n)||ae.has(n))return null;let r=n in v?[...v[n],1]:pe(n);if(!r)return null;let[a,l,d,i]=r;if(Math.max(a,l,d)-Math.min(a,l,d)>ce)return null;let s=Be(255-a,255-l,255-d,i);return t?`${s} !important`:s}function Be(e,t,n,r){if(r<1)return`rgba(${e}, ${t}, ${n}, ${r})`;let a=l=>l.toString(16).padStart(2,"0");return`#${a(e)}${a(t)}${a(n)}`}function pe(e){return e.startsWith("#")?Le(e):e.startsWith("rgb")?Me(e):e.startsWith("hsl")?He(e):null}function Le(e){let t=e.slice(1),n=1;if(t.length===3||t.length===4)t.length===4&&(n=parseInt(t[3]+t[3],16)/255),t=t.slice(0,3).split("").map(r=>r+r).join("");else if(t.length===6||t.length===8)t.length===8&&(n=parseInt(t.slice(6,8),16)/255),t=t.slice(0,6);else return null;return/^[0-9a-f]{6}$/.test(t)?[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16),n]:null}function Me(e){let t=e.slice(e.indexOf("(")+1,e.lastIndexOf(")")),[n,r]=t.split("/"),a=n.split(/[\s,]+/).filter(Boolean).slice(0,3);if(a.length<3)return null;let l=a.map(i=>i.endsWith("%")?Math.round(parseFloat(i)/100*255):Math.round(parseFloat(i)));if(l.some(i=>Number.isNaN(i)))return null;let d=r?E(r):De(n);return[l[0],l[1],l[2],d]}function De(e){let t=e.split(/[\s,]+/).filter(Boolean);return t.length>=4?E(t[3]):1}function E(e){let t=e.trim().endsWith("%")?parseFloat(e)/100:parseFloat(e);return Number.isNaN(t)?1:t}function He(e){let t=e.slice(e.indexOf("(")+1,e.lastIndexOf(")")),[n,r]=t.split("/"),a=n.split(/[\s,]+/).filter(Boolean);if(a.length<3)return null;let l=parseFloat(a[0]),d=parseFloat(a[1])/100,i=parseFloat(a[2])/100;if([l,d,i].some(P=>Number.isNaN(P)))return null;let s=r?E(r):a.length>=4?E(a[3]):1,[o,u,g]=Je(l,d,i);return[o,u,g,s]}function Je(e,t,n){let r=(1-Math.abs(2*n-1))*t,a=(e%360+360)%360/60,l=r*(1-Math.abs(a%2-1)),d=0,i=0,s=0;a<1?[d,i,s]=[r,l,0]:a<2?[d,i,s]=[l,r,0]:a<3?[d,i,s]=[0,r,l]:a<4?[d,i,s]=[0,l,r]:a<5?[d,i,s]=[l,0,r]:[d,i,s]=[r,0,l];let o=n-r/2;return[Math.round((d+o)*255),Math.round((i+o)*255),Math.round((s+o)*255)]}var se=512*1024;function D(e){return/\.svg(\?|$)/i.test(e)}function We(e){return`data:image/svg+xml,${encodeURIComponent(Ne(e))}`}function Ge(e){let t=e.replace(/!important/gi,"").trim().toLowerCase();if(!t||le.test(t)||ae.has(t))return null;let n=t in v?[...v[t],1]:pe(t);if(!n)return null;let[r,a,l]=n;return Math.max(r,a,l)-Math.min(r,a,l)>ce?null:(.2126*r+.7152*a+.0722*l)/255}function Ke(e){let t=[],n=r=>{let a=Ge(r);a!==null&&t.push(a)};for(let r of e.matchAll(ue))n(r[4]);for(let r of e.matchAll(me))n(r[2]);return t.length?t.reduce((r,a)=>r+a,0)/t.length<.5:null}var ie=/^(?:\uFEFF|\s+|<\?xml[^>]*\?>|<!--[\s\S]*?-->|<!DOCTYPE\s+svg[^>[]*>)/i;function Ve(e){let t=e;for(let n=ie.exec(t);n&&n[0].length>0;n=ie.exec(t))t=t.slice(n[0].length);return/^<svg[\s>/]/i.test(t)}async function ze(e,t){if(!D(e))return null;try{let n=await fetch(e,{signal:t,redirect:"manual"});if(!n.ok)return null;let r=Number(n.headers.get("content-length"));if(Number.isFinite(r)&&r>se)return null;let a=await n.text();return a.length>se?null:Ve(a)?a:null}catch{return null}}async function de(e,t){let n=await ze(e,t);return n===null?null:{reversed:We(n),inkIsDark:Ke(n)}}import{currentEaselSession as je,setSessionBridgedSite as Mt,setSessionDocumentSite as Dt}from"efficient-easel/screen/lib/session";function ge(){return je().siteId()}var Qe="",f=class extends Error{constructor(t,n,r){super(n),this.status=t,this.data=r}},W="Unable to reach the server. This could be a problem with your internet connection, or the server may be undergoing maintenance or an upgrade. Please try again shortly.",Xe=new Set([502,503,504]),H=0,Ye="This editor runs on its host's own backend, which does not serve this request.",et=5e3,tt=15e3,nt=()=>typeof window>"u"?et:tt;function Ae(e){let t=(e.method??"GET").toUpperCase();if(!(e.body!=null||t!=="GET"&&t!=="HEAD")&&!(e.audience!=null&&e.audience!=="shop")&&typeof AbortSignal?.timeout=="function")return AbortSignal.timeout(nt())}var he=e=>e instanceof Error&&e.name==="TimeoutError",ye=(e,t)=>Xe.has(e)?W:t,rt=["admin","venue"],Re="admin";function Qt(e){Re=rt.includes(e)?e:"admin"}function st(){return Re}var it=/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$/,_e=null;function Xt(e){_e=e&&it.test(e)?e:null}function ot(){return _e}function at(e){if(typeof window>"u"||!e.startsWith("/api/v1/"))return e;let t=$();return!t||/[?&]site=/.test(e)?e:q(e,`site=${encodeURIComponent(t)}`)}async function c(e,t={}){let{token:n,baseUrl:r,headers:a,audience:l,...d}=t;if(typeof window<"u"&&!Ze())throw new f(H,Ye,null);if(typeof window>"u"&&r===void 0)throw new Error(`apiFetch(${JSON.stringify(e)}) ran on the server without an explicit baseUrl. The API_URL default it would inherit is browser-only (the prod image bakes NEXT_PUBLIC_API_URL="" for same-origin use, which a Node fetch cannot resolve). Pass a base explicitly: \`await backendOpts()\` (or baseUrl: PRODUCT_FETCH_BASE) for product reads, or the server-only PRODUCT_BACKEND_URL env for other backend surfaces.`);let i=typeof FormData<"u"&&d.body instanceof FormData,s;try{s=await fetch(`${r??Qe}${at(e)}`,{...d,headers:{...i?{}:{"Content-Type":"application/json"},...n?{Authorization:`Bearer ${n}`}:{},...l===null?{}:{"X-Portal-Audience":l??"shop"},...a},signal:d.signal??Ae({...d,audience:l})})}catch(g){throw g instanceof TypeError||he(g)?new f(H,W,null):g}let o;try{o=await s.text()}catch(g){throw he(g)?new f(H,W,null):g}let u=null;if(o)try{u=JSON.parse(o)}catch{throw new f(s.status,s.ok?"Expected JSON but received a non-JSON response":ye(s.status,s.statusText),o)}if(!s.ok){let g=(u&&typeof u=="object"&&"detail"in u&&typeof u.detail=="string"?u.detail:null)??ye(s.status,s.statusText);throw new f(s.status,g,u)}return u}var R=null;async function xe(){return R||(R=ct().finally(()=>{R=null}),R)}async function ct(){let e=w.takeLegacyRefresh(),t=await lt.refresh(e??void 0);return w.setTokens(t.access),t.access}async function Ce(){return w.getAccess()??xe()}async function h(e,t={}){let n;try{n=await Ce()}catch{throw w.clear(),new f(401,"Not signed in",null)}try{return await c(e,{...t,token:n})}catch(r){if(!(r instanceof f)||r.status!==401)throw r;try{let a=await xe();return await c(e,{...t,token:a})}catch{throw w.clear(),r}}}async function fe(e,t={}){if(w.getAccess())try{return{data:await h(e,t),asShopper:!0}}catch(n){if(!(n instanceof f)||n.status!==401)throw n}return{data:await c(e,t),asShopper:!1}}async function Se(){let e=await h("/api/auth/me/");if(e.portal!=="shop")throw w.clear(),new f(403,"This session is not valid for this shop.",null);return e}var lt={login:(e,t)=>c("/api/auth/login/",{method:"POST",body:JSON.stringify({email:e,password:t,portal:"shop"}),credentials:"include"}),refresh:e=>c("/api/auth/refresh/",{method:"POST",body:JSON.stringify(e?{refresh:e,portal:"shop"}:{portal:"shop"}),credentials:"include"}),logout:async()=>{w.clear();try{await c("/api/auth/logout/",{method:"POST",body:JSON.stringify({portal:"shop"}),credentials:"include"})}catch{}},restoreSession:async()=>{let e=await Ce();return await Se(),e},me:Se,updateMe:e=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify(e)}),changePassword:(e,t)=>h("/api/auth/me/",{method:"PATCH",body:JSON.stringify({password:t,old_password:e})}),changeEmail:(e,t)=>h("/api/shop-portal/change-email/",{method:"POST",body:JSON.stringify({new_email:e,current_password:t})}),myProfile:()=>h("/api/shop-portal/profile/"),updateMyProfile:e=>h("/api/shop-portal/profile/",{method:"PATCH",body:JSON.stringify(e)}),myAddresses:()=>h("/api/shop-portal/delivery-locations/"),createAddress:e=>h("/api/shop-portal/delivery-locations/",{method:"POST",body:JSON.stringify(e)}),updateAddress:(e,t)=>h(`/api/shop-portal/delivery-locations/${e}/`,{method:"PATCH",body:JSON.stringify(t)}),deleteAddress:e=>h(`/api/shop-portal/delivery-locations/${e}/`,{method:"DELETE"}),passwordResetRequest:e=>c("/api/auth/password-reset/",{method:"POST",body:JSON.stringify({email:e})}),passwordResetConfirm:(e,t,n)=>c("/api/auth/password-reset/confirm/",{method:"POST",body:JSON.stringify({uid:e,token:t,new_password:n})}),brands:()=>h("/api/products/brands/"),myOrders:()=>h("/api/shop-portal/orders/").then(e=>e.results),myOrder:e=>h(`/api/shop-portal/orders/${e}/`),cancelOrder:e=>h(`/api/shop-portal/orders/${e}/cancel/`,{method:"POST"}),myReturns:e=>h(`/api/shop-portal/returns/${e?`?order=${encodeURIComponent(e)}`:""}`).then(t=>t.results),createReturn:e=>h("/api/shop-portal/returns/",{method:"POST",body:JSON.stringify(e)}),withdrawReturn:e=>h(`/api/shop-portal/returns/${e}/cancel/`,{method:"POST"}),uploadReturnPhoto:(e,t)=>{let n=new FormData;return n.append("claim_item",e),n.append("file",t),n.append("media_type",t.type.startsWith("video/")?"video":"image"),h("/api/shop-portal/return-media/",{method:"POST",body:n})}};function S(e){if(typeof e=="string")return e.startsWith("/media/")?V(e):e;if(Array.isArray(e))return e.map(S);if(e&&typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=n==="captions"&&r&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).map(([a,l])=>[S(a),l])):S(r);return t}return e}var ke=typeof window>"u"&&U!=="",ut=ke?U:"",mt=j,b=()=>({baseUrl:mt(),audience:null});function m(e,t){let n=t?`?process=${encodeURIComponent(t)}`:"";return`/api/v1${e}${n}`}var pt=100,Pe=50;function Te(e,t,n){let r=new URLSearchParams;for(let[a,l]of Object.entries(t))l!=null&&l!==""&&r.set(a,String(l));return r.set("pageSize",String(pt)),n&&r.set("cursor",n),`/api/v1${e}?${r.toString()}`}function dt(e,t){return Te("/wheels",{process:e},t)}function gt(e,t,n){return Te("/products",{kind:e.join(","),make:t?.make,model:t?.model,year:t?.year,modification:t?.modification},n)}function ht(e){if(!e)return null;try{return new URL(e,"http://cursor.invalid").searchParams.get("cursor")}catch{return null}}async function we(e,t,n=()=>!1){let r=[],a=null;try{for(let l=0;l<Pe;l++){let d=await c(await t(a),await p());if(r.push(...d.results),a=ht(d.next),!a)break}a&&console.warn(`[${e}] stopped at ${Pe} pages (${r.length} rows); catalog may be truncated`)}catch(l){if(n(l))throw l;console.warn(`[${e}] product API unavailable, returning []`,l)}return r}var yt=e=>e instanceof f&&e.status===400;function ft(e){return e.flatMap(t=>t.kind==="alloy-wheel"?M([t]):[t])}async function Oe(){return(await St()).host}async function St(){try{let{headers:e}=await import("./headers-UYHEZDAT.js"),t=await e(),n=l=>l?.split(",")[0]?.split(":")[0]?.trim().toLowerCase()||null,r=n(t.get(ee)??t.get("x-forwarded-host")??t.get("host")),a=n(t.get("host"));return{host:r,matchesRequestHost:r!==null&&r===a}}catch{return{host:null,matchesRequestHost:!1}}}async function Pt(){try{let{headers:e}=await import("./headers-UYHEZDAT.js");return Z((await e()).get(N))}catch{return null}}async function wt(){try{let{headers:e}=await import("./headers-UYHEZDAT.js");return(await e()).get(Y)||null}catch{return null}}async function bt(){let e=await wt();if(e)return`site=${encodeURIComponent(e)}`;let t=await Oe();return t?`host=${encodeURIComponent(t)}`:""}async function y(e){if(typeof window<"u"){let t=$();return t?q(e,`site=${encodeURIComponent(t)}`):e}return q(e,await bt())}function q(e,t){return t?`${e}${e.includes("?")?"&":"?"}${t}`:e}var At="preview";async function Rt(){if(typeof window<"u")return null;try{let{headers:e}=await import("./headers-UYHEZDAT.js");return(await e()).get(te)}catch{return null}}async function _t(){try{let{headers:e}=await import("./headers-UYHEZDAT.js");return(await e()).get("user-agent")}catch{return null}}async function J(e,t){let n=await Rt();if(n===null)return[await y(e),await p(t)];let r=q(await y(e),`${At}=${encodeURIComponent(n)}`),{next:a,cache:l,...d}=t??{},i=await p({...d,cache:"no-store"}),s=await _t();return s&&(i.headers={...i.headers,"user-agent":s}),[r,i]}async function xt(e){if(!ke)return;let[t,n]=await Promise.all([Oe(),Pt()]),r=Q(t,n,e);return Object.keys(r).length>0?r:void 0}async function p(e){let t=await xt(X(e)),n={baseUrl:ut,...e};return t&&(n.headers={...t,...e?.headers}),n}var _=typeof window>"u";function x(e,t){let n=new URLSearchParams;for(let[a,l]of Object.entries(t))l!==void 0&&l!==""&&n.set(a,String(l));let r=n.toString();return`/api/v1/fitment${e}${r?`?${r}`:""}`}var rn={listMakes:async e=>{if(_){let{fitmentData:n}=await import("./fitment-data-PWZAAUFK.js");return n.makes(e)}return(await c(x("/makes",{region:e}),b())).results},listModels:async(e,t)=>{if(_){let{fitmentData:r}=await import("./fitment-data-PWZAAUFK.js");return r.models(e,t)}return(await c(x("/models",{make:e,region:t}),b())).results},listYears:async(e,t,n)=>{if(_){let{fitmentData:a}=await import("./fitment-data-PWZAAUFK.js");return a.years(e,t,n)}return(await c(x("/years",{make:e,model:t,region:n}),b())).results},listModifications:async(e,t,n,r)=>{if(_){let{fitmentData:l}=await import("./fitment-data-PWZAAUFK.js");return l.modifications(e,t,n,r)}return(await c(x("/modifications",{make:e,model:t,year:n,region:r}),b())).results},getStockFitment:async(e,t,n,r,a)=>{if(_){let{fitmentData:l}=await import("./fitment-data-PWZAAUFK.js");return l.stockFitment(e,t,n,r,a)}return c(x("/stock-fitment",{make:e,model:t,year:n,modification:r,region:a}),b())}},sn={listWheels:async e=>{let t=await we("products.listWheels",async n=>await y(dt(e,n)));return M(S(t))},listCatalog:async(e,t)=>{if(e.length===0)throw new Error("products.listCatalog() needs at least one kind. An empty list would omit `kind`, which the contract reads as `alloy-wheel` \u2014 so the call would silently return the wheel catalog instead of nothing.");let n=await we("products.listCatalog",async r=>await y(gt(e,t,r)),yt);return ft(S(n))},getWheel:async e=>A(S(await c(await y(m(`/wheels/${e}`)),await p()))),getTyre:async e=>S(await c(await y(m(`/tyres/${e}`)),await p())),listBundles:async()=>{try{return await c(await y(m("/bundles")),await p())}catch{return[]}},getBundle:async e=>c(await y(m(`/bundles/${e}`)),await p()),listGalleryBuilds:async(e={})=>{let{process:t=null,wheelSlug:n=null}=e;if(typeof window>"u"){let{listGalleryBuilds:r}=await import("./gallery-builds-data-TD3QJK7L.js");return S(r(t,n))}try{let r=new URLSearchParams;t&&r.set("process",t),n&&r.set("wheelSlug",n);let a=r.toString(),l=await c(`/api/v1/gallery-builds${a?`?${a}`:""}`,b());return S(l.results)}catch(r){return console.warn("[products.listGalleryBuilds] product API unavailable, returning []",r),[]}},getSite:async()=>c(await y(m("/site")),await p()),getSiteBySlug:async e=>c(`${m("/site")}?${new URLSearchParams({site:e})}`,typeof window>"u"?await p():void 0),listPages:async()=>S(await c(await y(m("/pages")),await p())),listPopups:async()=>c(await y(m("/popups")),await p()),listProductTemplates:async()=>{try{return await c(await y(m("/product-templates")),await p())}catch(e){return console.warn("[products.listProductTemplates] unavailable, returning []",e),[]}},listDynamicPages:async e=>{let t=e?`?recordType=${encodeURIComponent(e)}`:"";try{return await c(await y(`${m("/dynamic-pages")}${t}`),await p())}catch(n){if(n instanceof f&&n.status===404)return[];throw n}},getRecord:async(e,t)=>{try{return await c(await y(m(`/records/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)),await p())}catch(n){if(n instanceof f&&n.status===404)return null;throw n}},listRecordKeys:async e=>{try{let t=await c(await y(m(`/records/${encodeURIComponent(e)}`)),await p({cache:"no-store"}));return Array.isArray(t?.keys)?t.keys.filter(n=>typeof n=="string"&&n!==""):[]}catch(t){if(t instanceof f&&t.status===404)return[];throw t}},listProductTypeChoices:async()=>{try{return await c(await y(m("/product-type-choices")),await p())}catch(e){return console.warn("[products.listProductTypeChoices] unavailable, returning []",e),[]}},listFieldUsage:async()=>{try{return await c(await y(m("/field-usage")),await p())}catch(e){return console.warn("[products.listFieldUsage] unavailable, returning []",e),[]}},getPage:async(e,t={})=>{let n=t.record?`?record=${encodeURIComponent(t.record)}`:"",[r,a]=await J(m(`/pages/${e}`)+n,t.revalidate!==void 0?{next:{revalidate:t.revalidate}}:void 0);return S(await c(r,a))},listBlogPosts:async(e={})=>{let t=e.category?`?category=${encodeURIComponent(e.category)}`:"";try{return(await c(m("/blog-posts")+t,await p())).map(r=>({...r,coverImage:T(r.coverImage)??""}))}catch(n){return console.warn("[products.listBlogPosts] blog API unavailable, returning []",n),[]}},getBlogPost:async e=>{let t=await c(m(`/blog-posts/${e}`),await p());return{...t,coverImage:T(t.coverImage)??""}},createOrder:async e=>c(m("/orders"),await p({method:"POST",body:JSON.stringify(e)})),createOrderAuthed:async e=>h(m("/orders"),await p({method:"POST",body:JSON.stringify(e)})),lookupOrder:async e=>c(m("/orders/lookup"),await p({method:"POST",body:JSON.stringify(e)})),createPaymentIntent:async e=>c(m("/payments/intent"),await p({method:"POST",body:JSON.stringify(e)})),createPaypalOrder:async e=>c(m("/payments/paypal/order"),await p({method:"POST",body:JSON.stringify(e)})),capturePaypalOrder:async e=>c(m("/payments/paypal/capture"),await p({method:"POST",body:JSON.stringify(e)})),createAfterpayCheckout:async e=>c(m("/payments/afterpay/checkout"),await p({method:"POST",body:JSON.stringify(e)})),captureAfterpayPayment:async e=>c(m("/payments/afterpay/capture"),await p({method:"POST",body:JSON.stringify(e)})),chargeSquare:async e=>c(m("/payments/square/charge"),await p({method:"POST",body:JSON.stringify(e)})),createGocardlessBillingRequest:async e=>c(m("/payments/gocardless/billing-request"),await p({method:"POST",body:JSON.stringify(e)})),completeGocardlessPayment:async e=>c(m("/payments/gocardless/complete"),await p({method:"POST",body:JSON.stringify(e)})),createZipCheckout:async e=>c(m("/payments/zip/checkout"),await p({method:"POST",body:JSON.stringify(e)})),captureZipPayment:async e=>c(m("/payments/zip/capture"),await p({method:"POST",body:JSON.stringify(e)})),createKlarnaCheckout:async e=>c(m("/payments/klarna/checkout"),await p({method:"POST",body:JSON.stringify(e)})),captureKlarnaPayment:async e=>c(m("/payments/klarna/capture"),await p({method:"POST",body:JSON.stringify(e)})),createStockAlert:async e=>c(m("/stock-alerts"),await p({method:"POST",body:JSON.stringify(e)})),createPreOrderIntent:async e=>c(m("/pre-order-intents"),await p({method:"POST",body:JSON.stringify(e)})),createNewsletterSubscription:async e=>c(m("/newsletter-subscriptions"),await p({method:"POST",body:JSON.stringify(e)})),unsubscribeNewsletter:async e=>c(m("/newsletter-unsubscribe"),await p({method:"POST",body:JSON.stringify(e)})),captureCart:async e=>c(m("/carts"),await p({method:"POST",body:JSON.stringify(e)})),restoreCart:async e=>c(m("/carts/restore"),await p({method:"POST",body:JSON.stringify(e)})),unsubscribeCartReminders:async e=>c(m("/carts/unsubscribe"),await p({method:"POST",body:JSON.stringify(e)})),listReviews:async(e={})=>{let t=new URLSearchParams;e.limit&&t.set("limit",String(e.limit)),e.designCode&&t.set("designCode",e.designCode);let n=m("/reviews"),r=t.toString();try{return await c(await y(r?`${n}?${r}`:n),await p())}catch(a){return console.warn("[products.listReviews] product API unavailable, returning []",a),[]}},submitReview:async e=>c(m("/reviews"),await p({method:"POST",body:JSON.stringify(e)})),getForm:async e=>c(m(`/forms/${encodeURIComponent(e)}`),await p()),submitForm:async(e,t)=>c(m(`/forms/${encodeURIComponent(e)}/submissions`),await p({method:"POST",body:JSON.stringify(t)})),listShippingMethods:async()=>{try{return await c(m("/shipping-methods"),await p())}catch(e){return console.warn("[products.listShippingMethods] product API unavailable, returning []",e),[]}},listCountrySubdivisions:async e=>{try{return await c(m(`/countries/${encodeURIComponent(e)}/subdivisions`),await p())}catch(t){return console.warn("[products.listCountrySubdivisions] unavailable, returning []",t),[]}},quoteCart:async e=>{let t=m("/cart/quote"),n=await p({method:"POST",body:JSON.stringify(e)});return e.couponCode?(await fe(t,n)).data:c(t,n)},validateCoupon:async e=>{let{data:t,asShopper:n}=await fe(m("/coupons/validate"),await p({method:"POST",body:JSON.stringify(e)}));return{...t,askedAsShopper:n}},getHeaderSettings:async()=>{let e=Ae({method:"GET"}),t=await c(...await J(m("/header-settings"),{signal:e})),n=T(t.logoUrl),r=null,a=null;if(n&&D(n)){let l=await de(n,e);l&&(r=l.reversed,a=l.inkIsDark)}return{...t,logoUrl:n,logoReversed:r,logoInkIsDark:a}},getThemeSettings:async()=>c(...await J(m("/theme-settings"))),getChatSettings:async()=>c(await y(m("/chat-settings")),await p())},on={listServices:async()=>{try{return await c(m("/bookings/services"),await p())}catch(e){return console.warn("[bookings.listServices] API unavailable, returning []",e),{results:[],currency:"USD"}}},getAvailability:async(e,t)=>c(m(`/bookings/availability?service=${encodeURIComponent(e)}&date=${t}`),await p()),create:async e=>c(m("/bookings"),await p({method:"POST",body:JSON.stringify(e)})),get:async e=>c(m(`/bookings/manage/${encodeURIComponent(e)}`),await p()),cancel:async e=>c(m(`/bookings/manage/${encodeURIComponent(e)}/cancel`),await p({method:"POST"})),createPaymentIntent:async e=>c(m("/bookings/payments/intent"),await p({method:"POST",body:JSON.stringify({manageToken:e})}))},G=class extends Error{constructor(n,r){super(`Slug "${n}" exists on ${r} websites; a site is required to pick one.`);this.slug=n;this.count=r;this.name="AmbiguousPageSlugError"}},F=(e,t,n)=>{let r=new URLSearchParams({...t?{site:t}:{},...n?{draft:"1"}:{}}).toString();return`/api/storefront/${e}/${r?`?${r}`:""}`},C=e=>`/api/storefront/sites/${encodeURIComponent(e)}/`,Ct=e=>`${C(e)}currencies/`,kt="/api/storefront/media/ingest/",K=class extends Error{constructor(){super("This editor is not connected to a website, so an upload has nowhere to go. Open the page from the website the file should belong to, then try again."),this.name="MediaUploadDestinationError"}};function Tt(){let e=ge();if(!e)throw new K;return`${kt}?${new URLSearchParams({site:e})}`}var I={"X-Puck-Media-Manifest":z.contentHash},an=ve({});function ve(e){return(t,n={})=>{let r=ot(),a=e.headers||r?{...r?{"Accept-Language":r}:{},...e.headers,...n.headers}:void 0;return c(t,{...n,...e.baseUrl!==void 0?{baseUrl:e.baseUrl}:{},...a?{headers:a}:{},audience:e.audience??st()})}}function Ot(e={}){let t=ve(e),n=e.siteDrafts===!0,r=i=>F("header-settings",i,n),a=i=>F("theme-settings",i,n),l=i=>F("chat-settings",i,n),d=i=>F("social-settings",i,n);return{findPageBySlug:async(i,s,o)=>{let u=new URLSearchParams({slug:i});o&&u.set("site",o);let g=await t(`/api/storefront/pages/?${u.toString()}`,{token:s}),P=Array.isArray(g)?g:g.results??[];if(!o&&P.length>1)throw new G(i,P.length);return P[0]??null},getPageById:(i,s)=>t(`/api/storefront/pages/${i}/`,{token:s}),saveLayout:(i,s,o,u,g)=>t(`/api/storefront/pages/${i}/`,{method:"PATCH",body:JSON.stringify({layout:s,expected_updated_at:u,...g?{client_id:g}:{}}),token:o}),duplicatePage:(i,s,o)=>t(`/api/storefront/pages/${i}/duplicate/`,{method:"POST",body:JSON.stringify({title:s.title,slug:s.slug}),token:o}),geocode:(i,s,o)=>t(`/api/storefront/geocode/?${new URLSearchParams(o?{q:i,country:o}:{q:i})}`,{token:s}),createPagePreviewLink:(i,s)=>t(`/api/storefront/pages/${i}/preview-link/`,{method:"POST",token:s}),claimPageEditLock:(i,s,o,u=!1)=>t(`/api/storefront/pages/${i}/edit-lock/`,{method:"POST",body:JSON.stringify({client_id:o,takeover:u}),token:s}),releasePageEditLock:(i,s)=>t(`/api/storefront/pages/${i}/edit-lock/`,{method:"DELETE",token:s}),createTemplate:(i,s,o)=>t("/api/storefront/page-templates/",{method:"POST",body:JSON.stringify({name:i,layout:s}),headers:I,token:o}),getTemplate:(i,s)=>t(`/api/storefront/page-templates/${i}/`,{token:s}),saveTemplateLayout:(i,s,o)=>t(`/api/storefront/page-templates/${i}/`,{method:"PATCH",body:JSON.stringify({layout:s}),headers:I,token:o}),listTemplatePages:async(i,s)=>{let o=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(i)}`,{token:s});return Array.isArray(o)?o:o.results??[]},findTemplatePageBySlug:async(i,s,o)=>{let u=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(i)}&slug=${encodeURIComponent(s)}`,{token:o});return(Array.isArray(u)?u:u.results??[])[0]??null},createTemplatePage:(i,s,o)=>t("/api/storefront/template-pages/",{method:"POST",body:JSON.stringify({template:i,...s}),headers:I,token:o}),saveTemplatePageLayout:(i,s,o)=>t(`/api/storefront/template-pages/${i}/`,{method:"PATCH",body:JSON.stringify({layout:s}),headers:I,token:o}),deleteTemplatePage:(i,s,o)=>t(`/api/storefront/template-pages/${i}/`,{method:"DELETE",token:s,...o?.keepalive?{keepalive:!0}:{}}),listPages:async(i,s)=>{let o=new URLSearchParams({no_page:"true"});s&&o.set("site",s);let u=await t(`/api/storefront/pages/?${o.toString()}`,{token:i});return Array.isArray(u)?u:u.results??[]},createPage:(i,s,o,u)=>t("/api/storefront/pages/",{method:"POST",body:JSON.stringify({title:i,slug:s,layout:o}),token:u}),deletePage:(i,s)=>t(`/api/storefront/pages/${i}/`,{method:"DELETE",token:s}),getHeaderSettings:(i,s)=>t(r(s),{token:i}),listMenus:async(i,s)=>{let o=new URLSearchParams({no_page:"true"});s&&o.set("site",s);let u=await t(`/api/storefront/menus/?${o}`,{token:i});return Array.isArray(u)?u:u.results??[]},listBlogPosts:async(i,s={})=>{let o=new URLSearchParams({no_page:"true"});s.visibleOnly&&o.set("is_visible","true"),s.siteId&&o.set("site",s.siteId);let u=await t(`/api/storefront/blog-posts/?${o.toString()}`,{token:i});return Array.isArray(u)?u:u.results??[]},listFieldUsage:async(i,s)=>{let o=await t(`/api/storefront/field-usage/?site=${encodeURIComponent(s)}`,{token:i});return Array.isArray(o?.entries)?o.entries:[]},listCategories:async(i,s={})=>{let o=new URLSearchParams({no_page:"true"});s.visibleOnly&&o.set("is_visible","true"),s.siteId&&o.set("site",s.siteId);let u=await t(`/api/storefront/categories/?${o.toString()}`,{token:i});return[...Array.isArray(u)?u:u.results??[]].sort((P,k)=>P.sort_order-k.sort_order||P.name.localeCompare(k.name))},listForms:async(i,s={})=>{let o=new URLSearchParams({no_page:"true"});s.siteId&&o.set("site",s.siteId);let u=await t(`/api/storefront/forms/?${o.toString()}`,{token:i});return[...Array.isArray(u)?u:u.results??[]].sort((P,k)=>P.title.localeCompare(k.title))},listWheelSummaries:async(i,s={})=>{let o=new URLSearchParams;s.siteId&&o.set("site",s.siteId);let u=o.toString(),g=await t(`/api/storefront/wheel-curations/summaries/${u?`?${u}`:""}`,{token:i});return S(g)},listProducts:async(i,s={})=>{let o=new URLSearchParams;s.kinds?.length&&o.set("kind",s.kinds.join(",")),s.siteId&&o.set("site",s.siteId);let u=o.toString(),g=await t(`/api/storefront/products/${u?`?${u}`:""}`,{token:i});return S(g)},getWheelDetail:async(i,s,o={})=>{let u=new URLSearchParams({slug:s});return o.siteId&&u.set("site",o.siteId),A(S(await t(`/api/storefront/wheel-curations/detail/?${u.toString()}`,{token:i})))},updateHeaderSettings:(i,s,o)=>t(r(o),{method:"PATCH",body:JSON.stringify(i),token:s}),getSite:(i,s)=>t(C(i),{token:s}),listSites:async i=>{let s=await t("/api/storefront/sites/?no_page=true",{token:i});return Array.isArray(s)?s:s.results??[]},listSiteCurrencies:async(i,s)=>{let o=await t(Ct(i),{token:s});return Array.isArray(o)?o:[]},publishSite:(i,s)=>t(`${C(i)}publish/`,{method:"POST",token:s}),getSiteLiveState:(i,s)=>t(`${C(i)}live-state/`,{token:s}),updateSite:(i,s,o)=>t(C(i),{method:"PATCH",body:JSON.stringify(s),token:o}),getThemeSettings:(i,s)=>t(a(s),{token:i}),updateThemeSettings:(i,s,o)=>t(a(o),{method:"PATCH",body:JSON.stringify(i),token:s}),getChatSettings:(i,s)=>t(l(s),{token:i}),updateChatSettings:(i,s,o)=>t(l(o),{method:"PATCH",body:JSON.stringify(i),token:s}),getSocialSettings:(i,s)=>t(d(s),{token:i}),updateSocialSettings:(i,s,o)=>t(d(o),{method:"PATCH",body:JSON.stringify(i),token:s}),uploadHeaderLogo:(i,s,o)=>{let u=new FormData;return u.append("logo",i),t(r(o),{method:"PATCH",body:u,token:s})},clearHeaderLogo:(i,s)=>t(r(s),{method:"PATCH",body:JSON.stringify({logo:null}),token:i}),setHeaderLogoFromAsset:(i,s,o)=>t(r(o),{method:"PATCH",body:JSON.stringify({logo_asset_id:i}),token:s}),uploadMedia:async(i,s)=>{let o=new FormData;return o.append("file",i),t(Tt(),{method:"POST",body:o,token:s})},listMedia:async(i,s)=>{let o=new URLSearchParams({no_page:"true"});s&&o.set("kind",s);let u=await t(`/api/storefront/media-assets/?${o.toString()}`,{token:i});return Array.isArray(u)?u:u.results??[]}}}var cn=Ot({siteDrafts:!0});export{U as a,Q as b,X as c,w as d,Ie as e,D as f,ge as g,Qe as h,f as i,W as j,H as k,Qt as l,Xt as m,c as n,lt as o,Oe as p,St as q,Pt as r,wt as s,Rt as t,rn as u,sn as v,on as w,G as x,an as y,cn as z};
@@ -0,0 +1 @@
1
+ import{f as dt,i as me,q as ft,s as pt,t as mt,v as B}from"./chunk-MT5KWSYX.js";import{Aa as pe,Ba as ut,Ea as $e,Fa as ct,Ia as Be,Ja as We}from"./chunk-TRUOK5AD.js";import{j as lt,l as ie}from"./chunk-FZFBLN7K.js";import{createContext as un,useContext as Ct,useEffect as cn,useMemo as he,useState as yt}from"react";function gt(e,t){return e.map(n=>({partNumber:n.partNumber,quantity:n.wheels*t}))}function ae(e,t){if(e.length===0)return null;let n=0;for(let r of e){let o=r.prices?.[t];if(typeof o!="number"||!Number.isFinite(o)||o<=0)return null;n+=o*r.wheels}return n}var qe=4,wr=1,_r={unit:"set",spares:0,spareSide:"left"};function ht(e){return e.unit==="single"?1:qe+e.spares}function Rr(e,t){return[{partNumber:e.partNumber,wheels:ht(t),prices:e.prices}]}function Nr(e,t){let n=ht(t)-qe;if(n<=0||e.length===0)return e;let r=sn(e),o=r?r[t.spareSide]:0;return e.map((i,a)=>a===o?{...i,wheels:i.wheels+n}:i)}function sn(e){let t,n;for(let r=0;r<e.length;r+=1){let o=e[r].hand;if(o!=="left"&&o!=="right")continue;if((o==="left"?t:n)!==void 0)return null;o==="left"?t=r:n=r}return t!==void 0&&n!==void 0?{left:t,right:n}:null}function ln(e,t){return t.spares>0?`${e} + spare`:e}function Lr(e){return e.unit==="single"?"Single":ln(`Set of ${qe}`,e)}var Ir="data-add-to-basket",Ge=9,Ne="en";function ge(e,t,n=0){return new Intl.NumberFormat(Ne,{style:"currency",currency:t,minimumFractionDigits:0,maximumFractionDigits:n}).format(e)}function Ar(e,t){return new Intl.NumberFormat(Ne,{style:"currency",currency:t}).format(e)}import{jsx as mn}from"react/jsx-runtime";var dn="storefront-country",bt=dn,Ke=un(null);function fn(e){return xt(e,"catalogue")}function pn(e){return xt(e,"money")}function xt(e,t){let n=new Map(e.map(o=>[o.code,o.decimalPlaces])),r=new Map;return(o,i)=>{if(!i)return"";let a=r.get(i);if(!a){let s=n.get(i)??0;a=new Intl.NumberFormat(Ne,{style:"currency",currency:i,minimumFractionDigits:t==="money"?s:0,maximumFractionDigits:s}),r.set(i,a)}return a.format(o)}}function Dr({children:e,currencies:t,countries:n,defaultCurrency:r,defaultCountry:o}){let i=he(()=>t??[],[t]),a=he(()=>n??[],[n]),s=he(()=>r||i.find(y=>y.isDefault)?.code||i[0]?.code||"",[r,i]),c=he(()=>o||a.find(y=>y.isDefault)?.code||a[0]?.code||"",[o,a]),[u,f]=yt(c),[d,S]=yt(!1);cn(()=>{let y=ie.getItem(bt);y&&a.some(w=>w.code===y)&&f(y),S(!0)},[a]);function R(y){f(y),ie.setItem(bt,y)}let C=he(()=>{let y=a.find(v=>v.code===u)??null,w=y?.currency,O=w&&i.some(v=>v.code===w)?w:s,M=fn(i),I=pn(i);return{country:u,currency:O,setCountry:R,currencies:i,countries:a,activeCountry:y,formatPrice:(v,x)=>M(v,x??O),formatMoney:(v,x)=>I(v,x??O),ready:d}},[u,i,a,s,d]);return mn(Ke.Provider,{value:C,children:e})}function St(){let e=Ct(Ke);if(!e)throw new Error("useCurrency must be used within a CurrencyProvider");return e}function Fr(){return Ct(Ke)?.country??""}import{createContext as Ln,useCallback as L,useContext as In,useEffect as Q,useMemo as Ot,useRef as se,useState as k}from"react";function Et(e,t){return e.valid?!1:e.reason==="firstOrderOnly"?!0:e.reason==="notEligible"&&!t}var Pt="We'll confirm this discount when you place your order.",Br="Confirmed at checkout";function Wr(e){return e&&(e.valid||e.deferred)?e.code:void 0}var vt="coupon_code: ";function qr(e){return!(e instanceof me)||e.status!==400||!e.message.startsWith(vt)?null:e.message.slice(vt.length)}function wt(e,t){return e.map(n=>({qty:n.qty,slug:n.slug,name:`${n.name.lead}${n.name.accent}`.trim(),finish:n.finishName,size:n.size,kind:n.kind,sku:n.sku,pack:n.pack,priceLabel:t(n)}))}var Le="Price on request",hn="Request a quote",yn="from ",Xr="From ",Yr="each",_t="Free";function ze(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Xe(e,t){let n=e?.[t];return ze(n)?n:null}function Vr(e,t,n,r){let o=Xe(e,n),i=Xe(t,n);return o===null&&i===null?0:o===null?1:i===null?-1:r==="asc"?o-i:i-o}function jr(e,t,n,r){if(n==null&&r==null)return!0;let o=Xe(e,t);return!(o===null||n!=null&&o<n||r!=null&&o>r)}var bn={priced:!1,unit:null,was:null,onSale:!1,setTotal:null};function Cn(e,t,n){if(!ze(e))return bn;let r=ze(t)&&t>e?t:null;return{priced:!0,unit:e,was:r,onSale:r!==null,setTotal:n!=null?e*n:null}}function Qr(e,t,n=""){return!e.priced||e.unit==null?Le:`${n}${ge(e.unit,t)}`}function Zr(e,t){return e.was==null?null:ge(e.was,t)}function xn(e,t,n=1){let r=ae(e,t);if(r===null)return{priced:!1,unit:null,isFrom:!1,setTotal:null};let o=e.reduce((a,s)=>a+s.wheels,0),i=Math.min(...e.map(a=>a.prices[t]));return{priced:!0,unit:i,isFrom:i*o!==r,setTotal:r*n}}var Sn={priced:!1,unit:null,isFrom:!1,was:null,onSale:!1,setTotal:null};function Jr(e,t,n,r=1){let o=Cn(e.prices[n],e.msrpPrices?.[n],4),i=o.setTotal==null?null:o.setTotal*r;if(!t)return{priced:o.priced,unit:o.unit,isFrom:!0,was:o.was,onSale:o.onSale,setTotal:null,fromSetTotal:i};let a=xn(t.components,n,r);return a.priced?{priced:!0,unit:a.unit,isFrom:a.isFrom,was:null,onSale:!1,setTotal:a.setTotal,fromSetTotal:i}:{...Sn,fromSetTotal:i}}function vn(e,t){return!e.priced||e.unit==null?Le:`${e.isFrom?yn:""}${ge(e.unit,t)}`}function eo(e,t){return e.was==null?null:ge(e.was,t)}function to(e,t){return!e.priced||e.unit==null?hn:vn(e,t)}var En=/^[^@\s]+@[^@\s]+\.[^@\s]+$/;function Rt(e){return En.test(e.trim())}var Nt="sf:ga-purchases",Pn=20;function It(){return typeof window>"u"||window.parent!==window}function ye(...e){try{if(It()||typeof window.gtag!="function")return;window.gtag(...e)}catch{}}function wn(e,t){let n=e.config.find(r=>r.gold)?.label;return{item_id:`${e.slug}|${e.finishName}|${e.size}`,item_name:`${e.name.lead}${e.name.accent}`.trim(),...n?{item_variant:n}:{},price:ae(e.components,t)??0,quantity:e.qty}}function Ye(e,t){return e.filter(Ie).map(n=>wn(n,t))}function so(e){ye("event","view_item",{currency:e.currency,value:e.pricePerSet,items:[{item_id:e.itemId,item_name:e.itemName,...e.variant?{item_variant:e.variant}:{},price:e.pricePerSet,quantity:1}]})}function At(e,t){let n=Ye([e],t);n.length!==0&&ye("event","add_to_cart",{currency:t,value:n[0].price*n[0].quantity,items:n})}function lo(e){let t=Ye(e.lines,e.currency);t.length!==0&&ye("event","begin_checkout",{currency:e.currency,value:e.value,...e.coupon?{coupon:e.coupon}:{},items:t})}var Lt=new Set;function _n(e){if(Lt.has(e))return!1;Lt.add(e);try{let t=JSON.parse(ie.getItem(Nt)??"[]");if(t.includes(e))return!1;ie.setItem(Nt,JSON.stringify([...t,e].slice(-Pn)))}catch{}return!0}function uo(e){let t=e.confirmation;if(It()||!_n(t.orderNumber))return;let n=t.currency,r=Number(t.grandTotal);ye("event","purchase",{transaction_id:t.orderNumber,currency:n,value:r,shipping:Number(t.freightCharge),...t.couponCode?{coupon:t.couponCode}:{},items:Ye(e.lines,n)}),e.adsSendTo&&ye("event","conversion",{send_to:e.adsSendTo,transaction_id:t.orderNumber,currency:n,value:r})}var Rn="Arranged after review",Tt="Calculated at checkout",Nn=Tt,po=Tt;function kt({quoted:e,optionCount:t,chosenAmount:n,couponWaivesFreight:r}){return e&&t===0?"arranged":r?"free":n===void 0?"pending":n===0?"free":"charged"}function mo(e){switch(e){case"arranged":return Rn;case"pending":return Nn;case"free":return _t;case"charged":return null}}import{jsx as On}from"react/jsx-runtime";var An=400,Tn=400,kn=1500;function Ie(e){return(e.components?.length??0)>0}function Mt(e,t){return{code:e,valid:t.valid,deferred:Et(t,t.askedAsShopper),message:t.message||void 0,effects:t.effects??void 0}}function Ft(e,t){return ae(e.components,t)}function Ve(e,t){let n=Ft(e,t);return n===null?null:n*e.qty}function Dt(e){return e!=="tyre"}var Ut=Ln(null);function _o({children:e,preview:t=!1}){let{currency:n,country:r,formatMoney:o}=St(),[i,a]=k(t),[s,c]=k([]),[u,f]=k([]),[d,S]=k([]),[R,C]=k(!1),[y,w]=k(!1),[O,M]=k(!1),[I,v]=k(!1),[x,W]=k(null),[A,q]=k(void 0),b=se(r),_=se("");b.current=b.current||r;let[p,G]=k(null),[Z,F]=k(!1),[D,ve]=k(null),z=se(void 0),K=L(()=>a(!0),[]),ue=L(()=>a(!1),[]),J=L(()=>a(l=>!l),[]);Q(()=>{t||typeof window>"u"||new URLSearchParams(window.location.search).get("cart")==="open"&&K()},[K,t]);let Ee=L(l=>{v(!0),Dt(l)&&M(!0)},[]),U=O||s.some(l=>Dt(l.kind)),Pe=I||s.length>0;Q(()=>{if(t||!U||R)return;let l=!0;return B.listWheels().then(m=>{l&&(f(m),C(!0))}),()=>{l=!1}},[t,U,R]),Q(()=>{if(t||!Pe||y)return;let l=!0;return B.listBundles().then(m=>{l&&(S(m),w(!0))}),()=>{l=!1}},[t,Pe,y]);let P=x?.deliveryOptions??[];Q(()=>{P.length!==0&&ve(l=>l&&P.some(m=>m.id===l)?l:P[0]?.id??null)},[x]);let ee=L(()=>s.filter(Ie).flatMap(l=>gt(l.components,l.qty)),[s]),te=L(async(l,m)=>{let h=l.trim().toUpperCase();if(!h)return;let g=ee();if(g.length===0){G({code:h,valid:!1,message:"Add a wheel to the cart first."});return}F(!0),z.current=m;try{let N=await B.validateCoupon({code:h,items:g,currency:n,shippingMethodId:D??void 0,customerEmail:m});G(Mt(h,N))}catch{G({code:h,valid:!1,message:"Could not check that code. Please try again."})}finally{F(!1)}},[ee,n,D]),ce=L(()=>{G(null),z.current=void 0},[]),de=L(l=>{if(!p)return;let{code:m}=p;G(h=>h&&h.code===m?{code:m,valid:!1,refused:!0,message:l}:h)},[p]);Q(()=>{if(!p||p.refused)return;let l=p.code,m=g=>g!==null&&g.code===l&&!g.refused,h=setTimeout(async()=>{let g=ee();if(g.length===0){G(N=>m(N)?{code:l,valid:!1,message:"Add a wheel to the cart first."}:N);return}F(!0);try{let N=await B.validateCoupon({code:l,items:g,currency:n,shippingMethodId:D??void 0,customerEmail:z.current});G(fe=>m(fe)?Mt(l,N):fe)}catch{}finally{F(!1)}},An);return()=>clearTimeout(h)},[s,n,D]);let ne=p&&!p.refused?p.code:void 0;Q(()=>{if(t)return;let l=!0,m=setTimeout(async()=>{let h=ee();if(h.length===0){W(null),q(void 0);return}try{let g=await B.quoteCart({items:h,currency:n,shippingMethodId:D??void 0,couponCode:ne,customerEmail:z.current||void 0,country:b.current||void 0,subdivision:_.current||void 0});if(!l)return;W(g)}catch{if(!l)return}q(ne)},Tn);return()=>{l=!1,clearTimeout(m)}},[s,n,D,ne,r]);let V=L(l=>{c(m=>{let h=m.findIndex(g=>g.id===l.id);return h===-1?[...m,l]:m.map((g,N)=>N===h?{...g,qty:Math.min(Ge,g.qty+l.qty)}:g)}),At(l,n)},[n]),re=L(l=>{c(m=>m.filter(h=>h.id!==l))},[]),we=L((l,m)=>{let h=Math.max(1,Math.min(Ge,m));c(g=>g.map(N=>N.id===l?{...N,qty:h}:N))},[]),_e=L(l=>{c(l)},[]),[E,H]=k(null),j=se(null);j.current=E;let $=se(null),Fe=se(""),nt=L((l,m)=>{let h=l.trim().toLowerCase();Rt(h)&&H(g=>g&&g.email===h&&g.firstName===(m??"")?g:{email:h,firstName:m??""})},[]);Q(()=>{if(t||!E)return;let l=wt(s.filter(Ie),g=>Ve(g,n)===null?Le:o(Ve(g,n),n)),m={email:E.email,firstName:E.firstName,currency:n,items:l},h=JSON.stringify(m);if(h!==Fe.current)return $.current&&clearTimeout($.current),$.current=setTimeout(()=>{$.current=null,Fe.current=h,B.captureCart(m).catch(g=>{})},kn),()=>{$.current&&(clearTimeout($.current),$.current=null)}},[s,E,n,t]);let rt=L(()=>{$.current&&(clearTimeout($.current),$.current=null);let l=j.current;l&&(Fe.current="",B.captureCart({email:l.email,firstName:l.firstName,currency:n,items:[]}).catch(m=>{}))},[n]),ot=Ot(()=>{let l=s.reduce((T,oe)=>{let Re=Ve(oe,n);return Re===null?T:T+Re},0),m=s.some(T=>Ft(T,n)===null),h=s.reduce((T,oe)=>T+oe.qty,0),g=p?.valid?p.effects:void 0,N=g?Math.min(l,Number(g.discountAmount)):0,fe=x?.bundleDiscount??0,tn=x?.appliedBundles??[],Ue=!!g?.freeShipping,at=P.find(T=>T.id===D),st=Ue?0:x?.shipping??at?.amount??0,nn=kt({quoted:x!==null,optionCount:P.length,chosenAmount:at?.amount,couponWaivesFreight:Ue}),He={};for(let T of g?.freeUnits??[])He[T.partNumber]=(He[T.partNumber]??0)+T.quantity;let rn=x?.tax??null,on=x?x.grandTotal:l-N-fe+st;return{sets:h,units:s.reduce((T,oe)=>T+(oe.components??[]).reduce((Re,an)=>Re+an.wheels*oe.qty,0),0),subtotal:l,hasUnpricedLine:m,discount:N,bundleDiscount:fe,appliedBundles:tn,shipping:st,freeShipping:Ue,shippingStatus:nn,freeUnitsByPartNumber:He,tax:rn,grand:on,repricing:!!p?.refused&&x!==null&&A===p?.code,currency:n}},[s,n,p,P,D,x,A]),it=L(l=>{V(l),K()},[V,K]),en=Ot(()=>({isOpen:i,preview:t,open:K,close:ue,toggle:J,items:s,catalog:u,bundles:d,warmCatalog:Ee,add:V,addAndOpen:it,remove:re,setQty:we,replaceItems:_e,identify:nt,clearCapturedCart:rt,coupon:p,applyCoupon:te,removeCoupon:ce,refuseCoupon:de,couponBusy:Z,deliveryOptions:P,shippingMethodId:D,setShippingMethodId:ve,totals:ot}),[i,t,K,ue,J,s,u,d,Ee,V,it,re,we,_e,nt,rt,p,te,ce,de,Z,P,D,ot]);return On(Ut.Provider,{value:en,children:e})}function Ht(){let e=In(Ut);if(!e)throw new Error("useCart() must be called inside <CartProvider>. Mount the provider in app/layout.tsx.");return e}import{cache as Kn}from"react";function $t(e,t,n,r){for(;e.size>=t;){let o,i;for(let[s,c]of e){if(c.expiresAt<=r){o=s;break}i===void 0&&n(s)&&(i=s)}let a=o??i??e.keys().next().value;if(a===void 0)return;e.delete(a)}}var Mn=6e4,Dn=5e3,Fn=500,Ae=new Map;async function Un(e){let{host:t,matchesRequestHost:n}=await ft();if(!t)return"";let r=await pt();return r?`${e}|slug:${encodeURIComponent(t)}/${encodeURIComponent(r)}`:n?`${e}|host:${t}`:`${e}|xhost:${t}`}var Hn=e=>e.includes("|slug:")||e.includes("|xhost:");async function Bt(e,t){if(await mt()!==null)return t();let n=await Un(e);if(!n)return t();let r=Date.now(),o=Ae.get(n);if(o&&o.expiresAt>r)return o.load;let i=await t(),a=i.outcome.state==="failed",s=a?Dn:Mn,c=Ae.get(n)?.lastGood,u=i.outcome.state==="ok"?i:a?c:void 0,f=a&&u?u:i;return $t(Ae,Fn,Hn,r),Ae.set(n,{load:f,expiresAt:r+s,lastGood:u}),f}var $n=404;function Bn(e){if(e instanceof me&&e.status===$n)return{state:"absent"};let t=e instanceof me?e.status:-1,n=e instanceof Error?e.message:String(e);return{state:"failed",status:t,detail:n}}var Wn="[storefront:chrome-load-failed]";function qn(e,t){console.error(`${Wn} ${e} status=${t.status} \u2014 serving fallback chrome`,t.detail)}async function Wt(e,t,n,r){try{let o=await t();return r?.(o)?{value:o,outcome:{state:"absent"}}:{value:o,outcome:{state:"ok"}}}catch(o){let i=Bn(o);return i.state==="failed"&&qn(e,i),{value:n,outcome:i}}}function Gn(e){return e==="production"?"silent":"banner"}var Oo=Gn("production");function zn(e,t){return e?.trim()||t}function Wo({legalName:e,foundedYear:t,siteName:n},r=new Date().getFullYear()){let o=zn(e,n);return`\xA9 ${t&&t<r?`${t}\u2013${r}`:`${r}`} ${o}`}var Xn={name:pe,legalName:null,foundedYear:null,faviconUrl:null,currencies:[],defaultCurrency:null,countries:[],defaultCountry:null,commerceEnabled:!0,cardPayments:!1,paymentMethods:[],paypalClientId:null,paypalEnvironment:null,squareApplicationId:null,squareLocationId:null,squareEnvironment:null,ga4MeasurementId:null,googleAdsId:null,googleAdsConversionLabel:null,metaPixelId:null,consentEnabled:!1,consentPrivacyPage:null,consentNoticeOptOut:!1,socialLinks:$e},qo=Kn(async()=>Bt("site",()=>Wt("site",async()=>{let e=await B.getSite();return{name:ut(e.name),legalName:e.legalName?.trim()||null,foundedYear:e.foundedYear??null,faviconUrl:e.faviconUrl??null,currencies:e.currencies??[],defaultCurrency:e.defaultCurrency??null,countries:e.countries??[],defaultCountry:e.defaultCountry??null,commerceEnabled:e.commerceEnabled??!0,cardPayments:e.cardPayments??!1,paymentMethods:e.paymentMethods??(e.cardPayments?["card"]:[]),paypalClientId:e.paypalClientId??null,paypalEnvironment:e.paypalEnvironment??null,squareApplicationId:e.squareApplicationId??null,squareLocationId:e.squareLocationId??null,squareEnvironment:e.squareEnvironment??null,ga4MeasurementId:e.ga4MeasurementId??null,googleAdsId:e.googleAdsId??null,googleAdsConversionLabel:(e.googleAdsId?e.googleAdsConversionLabel:null)??null,metaPixelId:e.metaPixelId??null,consentEnabled:e.consentEnabled??!1,consentPrivacyPage:e.consentPrivacyPage??null,consentNoticeOptOut:e.consentNoticeOptOut??!1,socialLinks:ct(e.socialLinks)}},Xn)));var Go={name:pe,legalName:null,foundedYear:null,faviconUrl:null,currencies:[{code:"USD",symbol:"$",decimalPlaces:2,isDefault:!0}],defaultCurrency:"USD",countries:[{code:"US",name:"United States",currency:"USD",url:"",isDefault:!0,chargeTax:!1,taxDisplay:"none",taxName:"",taxRate:null,postalLabel:"Zip Code"}],defaultCountry:"US",commerceEnabled:!0,cardPayments:!0,paymentMethods:["card"],paypalClientId:null,paypalEnvironment:null,squareApplicationId:null,squareLocationId:null,squareEnvironment:null,ga4MeasurementId:null,googleAdsId:null,googleAdsConversionLabel:null,metaPixelId:null,consentEnabled:!1,consentPrivacyPage:null,consentNoticeOptOut:!1,socialLinks:$e};import{jsx as Ce,jsxs as je}from"react/jsx-runtime";import{useEffect as Te,useId as Qn,useRef as Gt,useState as ke}from"react";import{efficientClientOpen as Yn}from"efficient-easel/screen/lib/session";var be=new Map,Vn=64;async function jn(e){if(!Yn())return null;try{let t=await fetch(`${lt()}/logo-analysis.json?url=${encodeURIComponent(e)}`);if(!t.ok)return null;let n=await t.json();if(!n||typeof n!="object")return null;let{reversed:r,inkIsDark:o}=n;return typeof r!="string"?null:{reversed:r,inkIsDark:typeof o=="boolean"?o:null}}catch{return null}}function qt(e){let t=be.get(e);if(t)return t;let n=jn(e);if(be.set(e,n),be.size>Vn){let r=be.keys().next();r.done||be.delete(r.value)}return n}var Zn=202/22,Jn=.88,ii=16,er="invert(1)";function ai({variant:e="header",scrolled:t=!0,src:n,reverse:r=!1,color:o=null,onLightSurface:i,reversedSrc:a,inkIsDark:s,size:c="medium",sizePx:u,wordmark:f,siteName:d=pe,fitToContainer:S=!1,fitWordmarkToContainer:R=!1,fitFloorPx:C}){let y=f&&f.trim()?f.trim():d,[w,O]=ke(!1),M=Gt(null),I=E=>{M.current=E};Te(()=>{let E=M.current?.ownerDocument??document,H=()=>{O(E.documentElement.getAttribute("data-theme")==="light")};H();let j=new MutationObserver(H);return j.observe(E.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>j.disconnect()},[]);let v=n&&n.trim()?n.trim():null,x=!!v&&dt(v),W=i??(w&&t),A=o&&o.trim()?o.trim():null,q=r&&!A,b=`logo-color-${Qn().replace(/[^A-Za-z0-9_-]/g,"")}`,_=q&&x&&v&&a!=null?{reversed:a,inkIsDark:s??null}:null,p=_!==null,[G,Z]=ke(null);Te(()=>{if(!q||!v||!x||p){Z(null);return}let E=!1;return Z(null),qt(v).then(H=>{E||Z(H)}),()=>{E=!0}},[q,v,x,p]);let F=_??G,D=!!F&&F.inkIsDark!==null&&(W?!F.inkIsDark:F.inkIsDark),ve=q&&!!v&&!x&&!W,z=D&&F?F.reversed:v,K=z?[z]:[],[ue,J]=ke(0);Te(()=>{J(0)},[v,D]);let Ee=e==="footer"?We:Be[c],U=u&&u>0?u:Ee,Pe=Math.round(U*Zn),P=ue<K.length?K[ue]:null,[ee,te]=ke(z),ce=P!==null&&P===ee,de=Gt(null);Te(()=>{let E=de.current;if(!E||!E.complete)return;if(E.naturalWidth>0||E.naturalHeight>0){te(P);return}let H=!1;return E.decode().then(()=>!H&&te(P),()=>!H&&J(j=>j+1)),()=>{H=!0}},[P]);let ne=S||R,V=`calc(100cqi / ${((y.length+1)*Jn).toFixed(2)})`,re=ne&&C&&C>0?Math.min(C,U):null,we=ne?re===null?`min(${U}px, ${V})`:`clamp(${re}px, ${V}, ${U}px)`:`${U}px`,_e=je("span",{className:`font-display font-bold tracking-[0.18em] ${re===null?"whitespace-nowrap":"whitespace-normal"}`,style:{fontSize:we,lineHeight:1,...A?{color:A}:{}},"aria-label":y,children:[y,Ce("span",{className:"text-accent",style:A?{color:A}:void 0,children:"."})]});return je("span",{ref:I,className:"inline-flex items-center",children:[!ce&&_e,A&&P&&Ce("svg",{"aria-hidden":"true",focusable:"false",width:"0",height:"0",style:{position:"absolute"},children:je("filter",{id:b,colorInterpolationFilters:"sRGB",children:[Ce("feFlood",{style:{floodColor:A}}),Ce("feComposite",{in2:"SourceAlpha",operator:"in"})]})}),P&&Ce("img",{ref:de,src:P,alt:y,width:Pe,height:U,className:"shrink-0 object-contain",style:{...ce?{height:`${U}px`,width:"auto",...S?{maxWidth:"100cqi"}:{}}:{display:"none"},...ve?{filter:er}:{},...A?{filter:`url(#${b})`}:{}},onLoad:()=>te(P),onError:()=>J(E=>E+1)},P)]})}import{jsx as xe,jsxs as nr}from"react/jsx-runtime";function tr({spokes:e,mesh:t=!1,className:n}){let a=c=>Math.round(c*1e3)/1e3,s=[];for(let c=0;c<e;c++){let u=c/e*Math.PI*2-Math.PI/2;if(s.push({x1:a(100+Math.cos(u)*22),y1:a(100+Math.sin(u)*22),x2:a(100+Math.cos(u)*86),y2:a(100+Math.sin(u)*86),main:!0}),t){let f=u+Math.PI/e;s.push({x1:a(100+Math.cos(f)*22*1.4),y1:a(100+Math.sin(f)*22*1.4),x2:a(100+Math.cos(f)*78),y2:a(100+Math.sin(f)*78),main:!1})}}return nr("svg",{viewBox:"0 0 200 200",fill:"none",stroke:"currentColor",className:n??"block h-[70%] w-[70%] transition-transform duration-700 [transition-timing-function:cubic-bezier(.2,.6,.2,1)]",children:[xe("circle",{cx:100,cy:100,r:92,strokeWidth:2}),xe("circle",{cx:100,cy:100,r:84,strokeWidth:1,opacity:.4}),xe("circle",{cx:100,cy:100,r:22,strokeWidth:2}),xe("circle",{cx:100,cy:100,r:6,fill:"currentColor"}),s.map((c,u)=>xe("line",{x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2,stroke:"currentColor",strokeWidth:c.main?6:3,strokeLinecap:"round",opacity:c.main?1:.5},u))]})}var ci="#c9a461",Kt=[{f:"black",label:"Black",hex:"#171717"},{f:"silver",label:"Silver",hex:"#cccccc"},{f:"bronze",label:"Bronze",hex:"#8a6438"},{f:"graphite",label:"Graphite",hex:"#3a3c3f"},{f:"red",label:"Candy Red",hex:"#7a0f14"}],di={name:"",color:"var(--fg)",family:"silver",src:""};function rr(e,t){let n=r=>{let o=Kt.findIndex(i=>i.f===r);return o===-1?Kt.length:o};return n(e)-n(t)||e.localeCompare(t)}function fi(e){let t=new Set;for(let n of e)for(let r of n.finishes??[])r?.family&&t.add(r.family);return[...t].sort(rr)}import{useState as or}from"react";import{jsx as le,jsxs as Qe}from"react/jsx-runtime";function ir({customerEmail:e}){let{coupon:t,applyCoupon:n,removeCoupon:r,couponBusy:o}=Ht(),[i,a]=or("");async function s(){o||!i.trim()||(await n(i,e),a(""))}return Qe("div",{className:"flex flex-col gap-2",children:[t===null?Qe("div",{className:"flex border border-line",children:[le("input",{type:"text",value:i,onChange:c=>a(c.target.value),onKeyDown:c=>{c.key==="Enter"&&(c.preventDefault(),s())},placeholder:"Coupon code","aria-label":"Coupon code",className:"flex-1 bg-transparent px-4 py-4 font-mono text-[11px] uppercase tracking-[0.18em] text-fg outline-none placeholder:text-fg-dim"}),le("button",{type:"button",onClick:()=>{s()},disabled:o,className:"border-l border-line px-4 font-mono text-[10px] uppercase tracking-[0.26em] text-btn transition-colors hover:bg-btn hover:text-btn-ink disabled:cursor-wait disabled:opacity-60",children:o?"\u2026":"Apply"})]}):Qe("div",{className:["flex items-center justify-between gap-3 border px-4 py-3",t.valid?"border-accent":"border-line"].join(" "),style:t.valid?{background:"color-mix(in oklab, var(--accent) 8%, transparent)"}:void 0,children:[le("span",{className:["font-mono text-[11px] uppercase tracking-[0.22em]",t.valid?"text-accent":t.deferred?"text-fg":"text-fg-dim line-through"].join(" "),children:t.code}),le("button",{type:"button",onClick:r,"aria-label":`Remove coupon ${t.code}`,className:"font-mono text-[12px] text-fg-dim transition-colors hover:text-fg",children:"\u2715"})]}),t?.deferred?le("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-fg-dim",children:Pt}):t&&!t.valid&&t.message&&le("p",{className:"font-mono text-[10px] uppercase tracking-[0.18em] text-alert",children:t.message})]})}var Ze="Ads on. Shopper can opt out.",Oe="Ads and analytics off until Accept",ar={us:{region:"us",name:"United States",model:"opt-out",law:"California CCPA / CPRA, other state laws",beforeChoice:Ze,footerLink:"Do Not Sell or Share My Personal Information",panelEyebrow:"Do not sell or share",adsRowName:"Sale or sharing for ads"},ca:{region:"ca",name:"Canada",model:"opt-in",law:"PIPEDA, Quebec Law 25",beforeChoice:Oe,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},au:{region:"au",name:"Australia",model:"opt-out",law:"Privacy Act 1988 (APPs)",beforeChoice:Ze,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},nz:{region:"nz",name:"New Zealand",model:"opt-out",law:"Privacy Act 2020",beforeChoice:Ze,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},uk:{region:"uk",name:"United Kingdom",model:"opt-in",law:"PECR, UK GDPR",beforeChoice:Oe,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},eu:{region:"eu",name:"European Union",model:"opt-in",law:"ePrivacy Directive, GDPR",beforeChoice:Oe,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},other:{region:"other",name:"All other countries",model:"opt-in",law:"Safe default",beforeChoice:Oe,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"}};function sr(e){let t=[...e.googleAds?["Google"]:[],...e.meta?["Facebook","Instagram"]:[]];return t.length<=1?t.join(""):`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`}function Ci(e,t,n){let r=sr(n),o=r?`We use cookies to count visits and to show you ${t} ads on ${r}.`:"We use cookies to count visits.";return e.model==="opt-in"?{heading:r?"Cookies and ads":"Cookies",before:`${o} Nothing loads until you choose. You can change this at any time with `,link:e.footerLink,after:" at the bottom of every page."}:{heading:r?"Cookies and ads":"Cookies",before:`${o} You can say no at any time: choose Privacy choices, or use `,link:e.footerLink,after:" at the bottom of every page."}}var xi={accept:"Accept all",reject:"Reject all",choose:"Choose",save:"Save",ok:"OK",privacyChoices:"Privacy choices",privacyPolicy:"Privacy Policy",alwaysOn:"Always on"};var lr={asked:!1,region:"other",model:"opt-in",analytics:!0,ads:!0,chosen:!0,gpc:!1};var ur=lr;function Pi(e=ur){if(e.asked)return e.ads?"granted":"denied"}function _i(){let e=typeof crypto<"u"?crypto:void 0;if(typeof e?.randomUUID=="function")return e.randomUUID();let t=new Uint8Array(16);if(typeof e?.getRandomValues=="function")e.getRandomValues(t);else for(let r=0;r<t.length;r++)t[r]=Math.floor(Math.random()*256);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t,r=>r.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}import{Children as dr,isValidElement as fr,useEffect as Xt,useId as pr,useLayoutEffect as jt,useRef as X,useState as Yt}from"react";var Me=(e,t)=>!!e[t]&&!e[t].disabled;function Je(e,t,n){let r=e.length;for(let o=1;o<=r;o++){let i=((t+n*o)%r+r)%r;if(Me(e,i))return i}return t}function et(e,t){return Je(e,t===1?-1:e.length,t)}function tt(e,t){return Me(e,t)?t:Math.max(et(e,1),0)}function zt(e,t,n){let{open:r,focus:o}=e,i=a=>({...e,...a});if(t.length===1&&/\S/.test(t)){let a=e.typed+t.toLowerCase(),s=n.findIndex((c,u)=>Me(n,u)&&c.label.toLowerCase().startsWith(a));return{state:i({open:!0,typed:a,focus:s>=0?s:o}),handled:!0}}if(!r)return t==="ArrowDown"||t==="ArrowUp"||t==="Enter"||t===" "?{state:i({open:!0,typed:""}),handled:!0}:{state:e,handled:!1};switch(t){case"ArrowDown":return{state:i({focus:Je(n,o,1)}),handled:!0};case"ArrowUp":return{state:i({focus:Je(n,o,-1)}),handled:!0};case"Home":return{state:i({focus:et(n,1)}),handled:!0};case"End":return{state:i({focus:et(n,-1)}),handled:!0};case"Enter":case" ":return Me(n,o)?{state:i({open:!1,typed:""}),commit:o,refocus:!0,handled:!0}:{state:e,handled:!0};case"Escape":return{state:i({open:!1,typed:""}),refocus:!0,handled:!0};case"Tab":return{state:i({open:!1,typed:""}),handled:!1};default:return{state:e,handled:!1}}}import{placeMenu as mr}from"efficient-shell/ui";import{Fragment as xr,jsx as Y,jsxs as Qt}from"react/jsx-runtime";var Vt={body:"text-[length:var(--size-body,14px)]",label:"text-[length:var(--size-label,13px)]"};function gr({items:e,value:t,onPick:n,open:r,onOpen:o,onClose:i}){let[a,s]=Yt(!1),c=r!==void 0,u=c?r:a,[f,d]=Yt(0),S=X({text:"",timer:0}),R=X(null),C=X(null),y=X(null),w=pr(),O=X(null),M=e.findIndex(b=>b.value===t),I=b=>{b!==u&&(c||s(b),b?o?.():i?.())},v=b=>{let _=e[b];!_||_.disabled||(n(_.value),I(!1),C.current?.focus())},x=b=>{let _={open:u,focus:u?f:tt(e,M),typed:S.current.text},p=zt(_,b,e);return!p.handled&&p.state.open===u?!1:(p.state.typed!==_.typed&&(S.current.text=p.state.typed,window.clearTimeout(S.current.timer),S.current.timer=window.setTimeout(()=>{S.current.text=""},500)),d(p.state.focus),p.commit!==void 0?v(p.commit):I(p.state.open),p.refocus&&C.current?.focus(),p.handled)},W=X(x);W.current=x;let A=X(()=>I(!1));A.current=()=>I(!1);let q=b=>{u||(O.current=b.nativeEvent,W.current(b.key)&&b.preventDefault())};return Xt(()=>{if(!u)return;let b=p=>{R.current?.contains(p.target)||A.current()},_=p=>{p!==O.current&&W.current(p.key)&&p.preventDefault()};return document.addEventListener("mousedown",b),document.addEventListener("keydown",_),()=>{document.removeEventListener("mousedown",b),document.removeEventListener("keydown",_)}},[u]),Xt(()=>{u&&(S.current.text||d(tt(e,M)))},[u]),jt(()=>{if(!u||!y.current)return;y.current.children.item(f)?.scrollIntoView({block:"nearest"})},[f,u]),{open:u,toggle:()=>I(!u),close:()=>I(!1),focusIdx:f,setFocusIdx:d,pick:b=>v(e.findIndex(_=>_.value===b)),wrapRef:R,triggerRef:C,listRef:y,listId:w,onTriggerKeyDown:q,activeId:u?`${w}-${f}`:void 0}}var hr={select:{list:"absolute left-0 top-full z-50 mt-1 max-h-[280px] w-max min-w-full overflow-y-auto border-2 border-accent bg-bg shadow-xl",item:(e,t,n)=>["px-3 py-3 font-mono text-[13px] font-semibold uppercase tracking-[0.1em] transition-colors whitespace-nowrap",n?"cursor-not-allowed opacity-40":"cursor-pointer",e&&!n?"bg-accent text-bg":"bg-bg text-fg"].join(" ")},cell:{list:"absolute left-0 top-full z-50 mt-1 max-h-[320px] w-max min-w-full overflow-y-auto border-2 border-accent bg-bg shadow-xl",item:e=>[`cursor-pointer whitespace-nowrap px-6 py-3 font-mono ${Vt.label} font-semibold uppercase tracking-[0.1em] transition-colors`,e?"bg-accent text-bg":"bg-bg text-fg"].join(" "),pickerMarker:!0},hairline:{list:"absolute left-0 top-full z-50 max-h-[320px] w-full overflow-y-auto border border-line bg-bg shadow-[0_6px_20px_rgba(0,0,0,0.10)]",item:(e,t)=>[`flex cursor-pointer items-center justify-between gap-4 border-b border-line px-4 py-3 text-left ${Vt.body} transition-colors last:border-b-0`,t?"border-fg font-medium text-fg":e?"border-fg text-fg":"text-fg-dim"].join(" "),pickerMarker:!0},region:{list:"absolute right-0 top-full z-[200] mt-2 flex min-w-[240px] flex-col border border-line bg-surface text-fg",item:(e,t,n,r)=>["flex w-full cursor-pointer items-center gap-3 px-4 py-3 text-left transition-colors","font-mono text-[13px] uppercase tracking-[0.18em]",e?"bg-surface-2 text-fg":"",r?"":"border-b border-line",t?"text-accent":""].join(" "),itemStyle:e=>e?void 0:{color:"color-mix(in oklab, currentColor 80%, transparent)"}}};function yr(e,t){jt(()=>{let n=e.current,r=n?.ownerDocument.defaultView;if(!n||!r)return;let o=()=>{let i=n.style;i.top=i.bottom=i.marginTop=i.marginBottom=i.maxHeight=i.overflowY=i.translate="";let a=n.offsetParent??n.parentElement;if(!a)return;let s=a.getBoundingClientRect(),c=n.getBoundingClientRect(),u=Math.abs(c.right-s.right)<Math.abs(c.left-s.left)?"end":"start",f=mr({trigger:{left:s.left,right:s.right,top:s.top,bottom:s.bottom},menu:{width:c.width,height:c.height},bounds:{left:0,top:0,right:r.innerWidth,bottom:r.innerHeight},align:u,side:"bottom"});if(f.side==="top"){i.top="auto",i.bottom="100%",i.marginTop="0px";let S=f.top+Math.min(c.height,f.maxHeight);i.marginBottom=`${Math.max(0,s.top-S)}px`}f.maxHeight<c.height&&(i.maxHeight=`${f.maxHeight}px`,i.overflowY="auto");let d=f.left-c.left;d&&(i.translate=`${d}px`)};return o(),r.addEventListener("resize",o),r.addEventListener("scroll",o,!0),()=>{r.removeEventListener("resize",o),r.removeEventListener("scroll",o,!0)}},[e,t])}function br({id:e,tone:t,items:n,value:r,focusIdx:o,onFocus:i,onPick:a,listRef:s,ariaLabel:c}){let u=hr[t],f=X(null);return yr(f,n.length),Y("ul",{ref:d=>{f.current=d,s&&(s.current=d)},id:e,role:"listbox","aria-label":c,...u.pickerMarker?{"data-picker-menu":""}:{},className:u.list,children:n.map((d,S)=>{let R=d.value===r;return Y("li",{id:`${e}-${S}`,role:"option","aria-selected":R,"aria-disabled":d.disabled||void 0,onMouseEnter:()=>!d.disabled&&i(S),onMouseDown:C=>{C.preventDefault(),d.disabled||a(d.value)},className:u.item(S===o,R&&d.value!=="",!!d.disabled,S===n.length-1),style:u.itemStyle?.(R),children:d.meta===void 0?d.label:Qt(xr,{children:[d.lead,Y("span",{className:"flex-1 whitespace-nowrap",children:d.label}),Y("span",{className:"ml-auto text-[12px] opacity-50",children:d.meta})]})},`${d.value}_${S}`)})})}function Cr({value:e,onChange:t,disabled:n,children:r,className:o,style:i,name:a,id:s,"aria-label":c}){let u=dr.toArray(r).flatMap(C=>{if(!fr(C))return[];if(C.type!=="option")return[];let w=C.props,O=w.value!==void 0?String(w.value):"",M=w.children,I=typeof M=="string"||typeof M=="number"?String(M):O;return[{value:O,label:I,disabled:!!w.disabled}]}),f=e??"",d=gr({items:u,value:f,onPick:C=>t?.({target:{value:C}})}),R=u.find(C=>C.value===f)?.label??u[0]?.label??"";return Qt("div",{ref:d.wrapRef,className:"relative",children:[a&&Y("input",{type:"hidden",name:a,value:f}),Y("button",{ref:C=>{d.triggerRef.current=C},type:"button",disabled:n,"aria-haspopup":"listbox","aria-expanded":d.open,"aria-controls":d.open?d.listId:void 0,"aria-activedescendant":d.activeId,"aria-label":c,id:s,onClick:()=>!n&&d.toggle(),onKeyDown:C=>!n&&d.onTriggerKeyDown(C),className:`block w-full ${o??""}`,style:i,children:Y("span",{className:"block w-full truncate text-left",children:R})}),d.open&&Y(br,{id:d.listId,tone:"select",items:u,value:f,focusIdx:d.focusIdx,onFocus:d.setFocusIdx,onPick:d.pick,listRef:d.listRef})]})}import{jsx as Se,jsxs as De}from"react/jsx-runtime";var Sr="font-mono text-[length:var(--size-label,12px)]",vr="font-semibold uppercase tracking-[0.22em] text-fg";function Zt(e){return`${e??Sr} ${vr}`}function Jt(){return Se("span",{className:"text-accent",children:" *"})}function Er({children:e,required:t,labelFace:n}){return De("span",{className:Zt(n),children:[e,t?Se(Jt,{}):null]})}function Pr({label:e,required:t,hint:n,separate:r,htmlFor:o,labelFace:i,className:a,children:s}){let c=a?`flex flex-col gap-2 ${a}`:"flex flex-col gap-2",u=n?Se("span",{className:"font-mono text-[11px] uppercase tracking-[0.22em] text-fg-dim",children:n}):null;return r||n?De("div",{className:c,children:[De("label",{htmlFor:o,className:Zt(i),children:[e,t?Se(Jt,{}):null]}),s,u]}):De("label",{htmlFor:o,className:c,children:[Se(Er,{required:t,labelFace:i,children:e}),s]})}export{Br as a,Wr as b,qr as c,gt as d,qe as e,wr as f,_r as g,Rr as h,Nr as i,sn as j,ln as k,Lr as l,Ir as m,Ge as n,Ne as o,ge as p,Ar as q,Le as r,hn as s,yn as t,Xr as u,Yr as v,_t as w,Xe as x,Vr as y,jr as z,Cn as A,Qr as B,Zr as C,xn as D,Jr as E,vn as F,eo as G,to as H,Rt as I,so as J,lo as K,uo as L,po as M,mo as N,Dr as O,St as P,Fr as Q,Ie as R,Ve as S,_o as T,Ht as U,Wo as V,Xn as W,Go as X,ii as Y,ai as Z,tr as _,ci as $,Kt as aa,di as ba,rr as ca,fi as da,ir as ea,ar as fa,Ci as ga,xi as ha,lr as ia,Pi as ja,_i as ka,gr as la,br as ma,Cr as na,Er as oa,Pr as pa};
@@ -1 +1 @@
1
- import{a as d,b as p,c as S,p as b,r as T}from"./chunk-FCCEAXMM.js";import"./chunk-VT346MLP.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
1
+ import{a as d,b as p,c as S,p as b,r as T}from"./chunk-MT5KWSYX.js";import"./chunk-FZFBLN7K.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
@@ -1,11 +1,11 @@
1
- "use client";import{jsx as t,jsxs as c}from"react/jsx-runtime";import{ChatProvider as n}from"../../render/components/ChatContext.js";import p from"../../render/components/ChatWidget.js";import{usePreviewHeader as d}from"efficient-web-builder/render/components/PreviewHeaderContext";import{usePreviewChat as u}from"efficient-web-builder/editor/components/PreviewChatContext";import{tk as r}from"efficient-web-builder/format/components/floating-editor/tokens";const f=`
1
+ "use client";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{ChatProvider as c}from"../../render/components/ChatContext.js";import p from"../../render/components/ChatWidget.js";import{usePreviewHeader as d}from"efficient-web-builder/render/components/PreviewHeaderContext";import{usePreviewChat as u}from"efficient-web-builder/editor/components/PreviewChatContext";import{CANVAS_ACCENT as r}from"efficient-web-builder/format/lib/canvas-accent";const f=`
2
2
  .sf-preview-chat-pick [aria-label] { cursor: pointer; }
3
3
  .sf-preview-chat-pick:hover [aria-label] {
4
- outline: 2px solid color-mix(in srgb, ${r.accent} 45%, transparent);
4
+ outline: 2px solid color-mix(in srgb, ${r} 45%, transparent);
5
5
  outline-offset: 3px;
6
6
  }
7
7
  .sf-preview-chat-pick[data-selected] [aria-label] {
8
- outline: 2px solid ${r.accent};
8
+ outline: 2px solid ${r};
9
9
  outline-offset: 3px;
10
10
  }
11
- `;function m(){const{chromePlaceholder:i,themeFromDocument:o}=d(),{chat:e,selected:l,select:a}=u();return i||o||!e.enabled?null:c("div",{className:"sf-preview-chat-pick","data-selected":l||void 0,onClick:s=>{s.stopPropagation(),a()},children:[t("style",{children:f}),t(n,{preview:!0,children:t(p,{title:e.title,subtitle:e.subtitle,greeting:e.greeting,look:e})})]})}export{m as default};
11
+ `;function m(){const{chromePlaceholder:i,themeFromDocument:o}=d(),{chat:e,selected:l,select:s}=u();return i||o||!e.enabled?null:n("div",{className:"sf-preview-chat-pick","data-selected":l||void 0,onClick:a=>{a.stopPropagation(),s()},children:[t("style",{children:f}),t(c,{preview:!0,children:t(p,{title:e.title,subtitle:e.subtitle,greeting:e.greeting,look:e})})]})}export{m as default};
@@ -1,2 +1,2 @@
1
- export declare const PREVIEW_HEADER_PICK_CSS: string;
1
+ export declare const PREVIEW_HEADER_PICK_CSS = "\n.sf-preview-header-pick header { cursor: pointer; }\n.sf-preview-header-pick header:hover {\n outline: 2px solid color-mix(in srgb, var(--es-accent, #2563eb) 45%, transparent);\n outline-offset: -2px;\n}\n.sf-preview-header-pick[data-selected] header {\n outline: 2px solid var(--es-accent, #2563eb);\n outline-offset: -2px;\n}\n";
2
2
  export declare function PreviewHeader(): import("react").JSX.Element;
@@ -1,11 +1,11 @@
1
- "use client";import{jsx as t,jsxs as h}from"react/jsx-runtime";import f from"../../render/components/Header.js";import{tk as o}from"efficient-web-builder/format/components/floating-editor/tokens";import{NEUTRAL_SITE_NAME as u}from"efficient-web-builder/format/lib/content/site-name";import{usePreviewHeader as w}from"efficient-web-builder/render/components/PreviewHeaderContext";import{say as x}from"efficient-web-builder/format/lib/editor-words";const v=`
1
+ "use client";import{jsx as t,jsxs as h}from"react/jsx-runtime";import f from"../../render/components/Header.js";import{CANVAS_ACCENT as o}from"efficient-web-builder/format/lib/canvas-accent";import{NEUTRAL_SITE_NAME as u}from"efficient-web-builder/format/lib/content/site-name";import{usePreviewHeader as w}from"efficient-web-builder/render/components/PreviewHeaderContext";import{say as x}from"efficient-web-builder/format/lib/editor-words";const v=`
2
2
  .sf-preview-header-pick header { cursor: pointer; }
3
3
  .sf-preview-header-pick header:hover {
4
- outline: 2px solid color-mix(in srgb, ${o.accent} 45%, transparent);
4
+ outline: 2px solid color-mix(in srgb, ${o} 45%, transparent);
5
5
  outline-offset: -2px;
6
6
  }
7
7
  .sf-preview-header-pick[data-selected] header {
8
- outline: 2px solid ${o.accent};
8
+ outline: 2px solid ${o};
9
9
  outline-offset: -2px;
10
10
  }
11
- `;function C(){const{settings:i,selected:s,select:a,websiteName:d,templateChrome:e,templateName:n,chromePlaceholder:c,themeSwitchShown:m}=w(),p=e?n?.trim()||x("Template"):d?.trim()||u,r=e||c;return h("div",{className:"sf-preview-header-pick sf-theme-surfaces","data-selected":s||void 0,onClick:l=>{l.stopPropagation(),a()},children:[t("style",{children:v}),t(f,{previewSettings:i??void 0,editorPreview:!0,showThemeToggle:m,wordmark:p,hideLogo:r,hideMenu:r})]})}export{v as PREVIEW_HEADER_PICK_CSS,C as PreviewHeader};
11
+ `;function P(){const{settings:i,selected:s,select:a,websiteName:d,templateChrome:e,templateName:m,chromePlaceholder:p,themeSwitchShown:n}=w(),c=e?m?.trim()||x("Template"):d?.trim()||u,r=e||p;return h("div",{className:"sf-preview-header-pick sf-theme-surfaces","data-selected":s||void 0,onClick:l=>{l.stopPropagation(),a()},children:[t("style",{children:v}),t(f,{previewSettings:i??void 0,editorPreview:!0,showThemeToggle:n,wordmark:c,hideLogo:r,hideMenu:r})]})}export{v as PREVIEW_HEADER_PICK_CSS,P as PreviewHeader};
@@ -1,4 +1,5 @@
1
1
  import { type EditorPortalAudience } from "../../render/lib/api/index.js";
2
+ import "./efficient-block-sources.js";
2
3
  import { PAGE_CONFLICT_CODE } from "efficient-easel/screen/lib/failure";
3
4
  import { type PageLiveState, type WebsiteBackend } from "efficient-web-builder/format/lib/web-backend";
4
5
  export { PAGE_CONFLICT_CODE };
@@ -1 +1 @@
1
- import{readLockHolder as C}from"efficient-easel/edit-lock";import{AmbiguousPageSlugError as F,ApiError as S,SERVER_UNREACHABLE_MESSAGE as U,STATUS_NETWORK_ERROR as K,setEditorLanguage as x,setEditorPortalAudience as H,storefrontAdmin as o}from"../../render/lib/api/index.js";import{AdminSectionTemplateStore as G}from"./api/section-templates.js";import{uploadLimits as N}from"../../render/lib/api/upload-limits.js";import{SITE_FOOTER_SLUG as $}from"efficient-web-builder/format/lib/content/footer";import{SOCIAL_PLATFORMS as k,socialUrlField as E}from"efficient-web-builder/format/lib/content/social-links";import{EFFICIENT_BACKEND as z,currentEaselSession as O,provideDefaultBackend as D}from"efficient-easel/screen/lib/session";import{loadEditorSiteSlug as V}from"efficient-web-builder/editor/lib/editor-site-slug";import{editorPreviewHref as W,originIsSiteAmbiguous as Y}from"efficient-web-builder/format/lib/editor/preview-href";import{postPath as q}from"../../render/lib/links/link-rules.js";import{absolutizeApiUrl as J,efficientMediaResolve as Q}from"efficient-web-builder/render/lib/media";import{HOME_PAGE_SLUG as X}from"efficient-web-builder/format/lib/puck/home-page";import{groupPagesForMenu as Z,pageMenuLabel as P}from"../../render/lib/storefront-page-groups.js";import{PAGE_CONFLICT_CODE as L}from"efficient-easel/screen/lib/failure";import{shopRouteBase as ee}from"efficient-web-builder/format/lib/web-runtime";import{WebsiteBackendError as m,provideHostFailures as te}from"efficient-easel/screen/lib/backend-error";const A=n=>n.layout_updated_at??n.updated_at??null,ae=["live","changed","never"],R=n=>ae.includes(n.live_state)?{live:n.live_state}:{};function ne(n){if(!n||typeof n!="object")return null;const s=n;return s.code!==L?null:{savedBy:typeof s.saved_by=="string"?s.saved_by:"",savedByYou:s.saved_by_you===!0,secondsAgo:typeof s.seconds_ago=="number"?s.seconds_ago:0}}function ie(n){return n===401||n===403?"unauthorized":n===404?"not-found":n===K||n>=500?"unavailable":"invalid"}function se(n){if(!(n instanceof S))return n;if(n.status===409){const s=ne(n.data);if(s)return new m("changed-elsewhere",n.message,{conflict:s,cause:n});const l=C(n.data);if(l)return new m("lock-taken",n.message,{holder:l,cause:n})}return new m(ie(n.status),n.message,{cause:n})}function oe(n){if(!n||typeof n!="object"||Array.isArray(n))return null;const s=l=>{if(typeof l=="string")return l.trim()||null;const d=Array.isArray(l)?l:l&&typeof l=="object"?Object.values(l):[];for(const u of d){const g=s(u);if(g)return g}return null};for(const[l,d]of Object.entries(n)){if(l==="detail")continue;const u=s(d);if(u)return`${l}: ${u}`}return null}const T=new WeakMap;function re(n,s){const l=ee(),d=l?new URL(l).hostname:typeof window<"u"?window.location?.hostname??null:null;let u=null;const g=s.siteId(),w=s.token();if(Y(d)&&g&&w){const y=V(w,g);T.has(y)?u=T.get(y)??null:y.then(_=>T.set(y,_))}const p=W({pageSlug:n,siteSlug:u,hostname:d});return l?`${l}${p}`:p}const le={group:"Template pages",groupKey:"template"},B=n=>({id:n.id,slug:n.slug,label:n.title||n.slug,...le,draft:!1});function j(n){const s=async e=>{const t=n.token();if(!t)throw new m("unauthorized","The editor has no sign-in yet.");try{return await e(t)}catch(a){throw se(a)}},l={list:e=>s(async t=>{const a=await o.listPages(t,e?.siteId);return Z(a.filter(i=>i.slug!==$)).flatMap(i=>i.pages.map(r=>({id:r.id,slug:r.slug,label:P(r),group:i.group,groupKey:i.key,draft:!r.is_published,kind:r.kind??null})))}),load:e=>s(async t=>{const a="id"in e?e.id:(await o.findPageBySlug(e.slug,t,e.siteId))?.id,i=a?await o.getPageById(a,t):null;return i?{id:i.id,layout:i.layout,kind:i.kind,version:A(i),...R(i)}:null}),save:(e,t,a)=>{const{version:i}=a;return i?s(async r=>{const f=await o.saveLayout(e,t.layout,r,i,a.clientId||void 0);return{version:A(f),...R(f)}}):Promise.reject(new Error("Refusing to save this page: the editor does not know which version it is replacing. Reload the page and try again."))},version:e=>s(t=>o.getPageById(e,t).then(A)),linkTargets:e=>s(async t=>(await o.listPages(t,e?.siteId)).map(a=>({id:a.id,slug:a.slug,label:P(a),layout:a.layout??null}))),duplicate:(e,t)=>s(async a=>{const i=await o.duplicatePage(e,{title:t.title,slug:t.slug},a);return{id:i.id,slug:i.slug,label:P(i),group:i.group||null,draft:!i.is_published,kind:i.kind??null}})},d=e=>({list:()=>s(async t=>(await o.listTemplatePages(e,t)).map(B)),load:t=>s(async a=>{const i=c=>"id"in t?c.id===t.id:c.slug===t.slug,r=c=>({id:c.id,layout:c.layout,version:null}),f=await o.listTemplatePages(e,a);if(f.length)return r(f.find(i)??f[0]);const b=await o.getTemplate(e,a).catch(()=>null);try{return r(await o.createTemplatePage(e,{slug:X,title:"Home",layout:b?.layout??{}},a))}catch{const c=await o.listTemplatePages(e,a),h=c.find(i)??c[0];return h?r(h):null}}),save:(t,a)=>s(async i=>(await o.saveTemplatePageLayout(t,a.layout,i),{version:null})),create:t=>s(async a=>B(await o.createTemplatePage(e,{slug:t.slug,title:t.title,layout:t.layout},a))),remove:(t,a)=>s(i=>o.deleteTemplatePage(t,i,a))}),u=e=>{const t=e?.siteId??n.siteId();if(!t)throw new m("not-found","This editor is not connected to a website.");return t},g=e=>({name:e.name,slug:e.slug,mapsApiKey:e.maps_api_key,mapsMapId:e.maps_map_id}),w=e=>Object.fromEntries(k.map(t=>[t,e[E(t)]??""])),p={launcherColor:"launcher_color",launcherIcon:"launcher_icon",launcherPosition:"launcher_position",launcherLabel:"launcher_label",showOnPhones:"show_on_phones"},y=Object.keys(p),_=e=>{const t={enabled:e.enabled,title:e.title,subtitle:e.subtitle,greeting:e.greeting};for(const a of y){const i=e[p[a]];i!==void 0&&Object.assign(t,{[a]:i})}return t},M=e=>{const t={};for(const[a,i]of Object.entries(e))t[p[a]??a]=i;return t},I={pages:l,lock:{claim:(e,t,a)=>s(async i=>({heartbeatSeconds:(await o.claimPageEditLock(e,i,t,a)).heartbeat_seconds})),release:e=>s(t=>o.releasePageEditLock(e,t))},site:{get:e=>s(async t=>g(await o.getSite(u(e),t))),update:(e,t)=>s(async a=>g(await o.updateSite(u(t),e.mapsApiKey===void 0?{}:{maps_api_key:e.mapsApiKey},a))),publish:e=>s(async t=>{try{const{state:a,published:i}=await o.publishSite(u(e),t);return{state:a,published:i}}catch(a){const i=a instanceof S&&a.status===400?oe(a.data):null;throw i?new m("invalid",i,{cause:a}):a}}),liveState:e=>s(async t=>{const{state:a,changes:i}=await o.getSiteLiveState(u(e),t);return{state:a,changes:i}})},media:{resolve:Q,maxUploadBytes:N("POST /api/storefront/media/","file").maxSizeBytes},sectionTemplates:new G(n.token),social:{get:e=>s(async t=>w(await o.getSocialSettings(t,u(e)))),update:(e,t)=>s(async a=>{const i=Object.fromEntries(k.filter(r=>r in e).map(r=>[E(r),e[r]]));try{return w(await o.updateSocialSettings(i,a,u(t)))}catch(r){if(r instanceof S&&r.status===400){const f=r.data??{},b={};for(const c of k){const h=f[E(c)],v=Array.isArray(h)?h[0]:h;typeof v=="string"&&v.trim()&&(b[c]=v)}if(Object.keys(b).length>0)throw new m("invalid",r.message,{fields:b,cause:r})}throw r}})},theme:{get:e=>s(t=>o.getThemeSettings(t,e?.siteId)),update:(e,t)=>s(a=>o.updateThemeSettings(e,a,t?.siteId))},geocode:{locate:(e,t)=>s(async a=>{const i=await o.geocode(e,a,t?.country);if(i.status==="not_found")return null;if(i.status!=="found"||i.lat===null||i.lng===null)throw new m("unavailable","The geocoder could not answer just now.");return{lat:i.lat,lng:i.lng,label:i.label}})},chat:{get:e=>s(async t=>_(await o.getChatSettings(t,e?.siteId))),update:(e,t)=>s(async a=>_(await o.updateChatSettings(M(e),a,t?.siteId)))},blog:{posts:e=>s(async t=>(await o.listBlogPosts(t,{visibleOnly:!0,siteId:e?.siteId})).map(a=>({slug:a.slug,title:a.title,excerpt:a.excerpt,category:a.category,coverImage:a.cover_image?J(a.cover_image)??"":"",publishedAt:a.published_at,href:q(a.slug)})))},templates:{get:e=>s(async t=>{const a=await o.getTemplate(e,t);return{id:a.id,name:a.name}}),pages:d},preview:{href:e=>re(e,n),draftLink:e=>s(async t=>({url:(await o.createPagePreviewLink(e,t)).url??null}))}};return I[z]=!0,I}te({read:n=>n instanceof S?{status:n.status,data:n.data,message:n.message}:null,unreachableMessage:U,loadRefusal:(n,{slug:s})=>n instanceof F?`“${s}” exists on more than one website. Open it from the site you want to edit.`:null}),D(n=>j({token:()=>n.auth.token,siteId:()=>n.siteId()}));function Pe(n={}){return n.portalAudience!==void 0&&H(n.portalAudience),n.language!==void 0&&x(n.language),j({token:()=>O().auth.token,siteId:()=>n.siteId??O().siteId()})}export{L as PAGE_CONFLICT_CODE,Pe as createEfficientBackend,R as liveOf,A as pageVersion,oe as publishRefusal,se as toBackendError};
1
+ import{readLockHolder as C}from"efficient-easel/edit-lock";import{AmbiguousPageSlugError as F,ApiError as S,SERVER_UNREACHABLE_MESSAGE as U,STATUS_NETWORK_ERROR as K,setEditorLanguage as x,setEditorPortalAudience as H,storefrontAdmin as o}from"../../render/lib/api/index.js";import{AdminSectionTemplateStore as G}from"./api/section-templates.js";import"./efficient-block-sources.js";import{uploadLimits as N}from"../../render/lib/api/upload-limits.js";import{SITE_FOOTER_SLUG as $}from"efficient-web-builder/format/lib/content/footer";import{SOCIAL_PLATFORMS as k,socialUrlField as E}from"efficient-web-builder/format/lib/content/social-links";import{EFFICIENT_BACKEND as z,currentEaselSession as O,provideDefaultBackend as D}from"efficient-easel/screen/lib/session";import{loadEditorSiteSlug as V}from"efficient-web-builder/editor/lib/editor-site-slug";import{editorPreviewHref as W,originIsSiteAmbiguous as Y}from"efficient-web-builder/format/lib/editor/preview-href";import{postPath as q}from"../../render/lib/links/link-rules.js";import{absolutizeApiUrl as J,efficientMediaResolve as Q}from"efficient-web-builder/render/lib/media";import{HOME_PAGE_SLUG as X}from"efficient-web-builder/format/lib/puck/home-page";import{groupPagesForMenu as Z,pageMenuLabel as P}from"../../render/lib/storefront-page-groups.js";import{PAGE_CONFLICT_CODE as L}from"efficient-easel/screen/lib/failure";import{shopRouteBase as ee}from"efficient-web-builder/format/lib/web-runtime";import{WebsiteBackendError as m,provideHostFailures as te}from"efficient-easel/screen/lib/backend-error";const A=n=>n.layout_updated_at??n.updated_at??null,ae=["live","changed","never"],R=n=>ae.includes(n.live_state)?{live:n.live_state}:{};function ne(n){if(!n||typeof n!="object")return null;const s=n;return s.code!==L?null:{savedBy:typeof s.saved_by=="string"?s.saved_by:"",savedByYou:s.saved_by_you===!0,secondsAgo:typeof s.seconds_ago=="number"?s.seconds_ago:0}}function ie(n){return n===401||n===403?"unauthorized":n===404?"not-found":n===K||n>=500?"unavailable":"invalid"}function se(n){if(!(n instanceof S))return n;if(n.status===409){const s=ne(n.data);if(s)return new m("changed-elsewhere",n.message,{conflict:s,cause:n});const l=C(n.data);if(l)return new m("lock-taken",n.message,{holder:l,cause:n})}return new m(ie(n.status),n.message,{cause:n})}function oe(n){if(!n||typeof n!="object"||Array.isArray(n))return null;const s=l=>{if(typeof l=="string")return l.trim()||null;const d=Array.isArray(l)?l:l&&typeof l=="object"?Object.values(l):[];for(const u of d){const g=s(u);if(g)return g}return null};for(const[l,d]of Object.entries(n)){if(l==="detail")continue;const u=s(d);if(u)return`${l}: ${u}`}return null}const T=new WeakMap;function re(n,s){const l=ee(),d=l?new URL(l).hostname:typeof window<"u"?window.location?.hostname??null:null;let u=null;const g=s.siteId(),w=s.token();if(Y(d)&&g&&w){const y=V(w,g);T.has(y)?u=T.get(y)??null:y.then(_=>T.set(y,_))}const p=W({pageSlug:n,siteSlug:u,hostname:d});return l?`${l}${p}`:p}const le={group:"Template pages",groupKey:"template"},B=n=>({id:n.id,slug:n.slug,label:n.title||n.slug,...le,draft:!1});function j(n){const s=async e=>{const t=n.token();if(!t)throw new m("unauthorized","The editor has no sign-in yet.");try{return await e(t)}catch(a){throw se(a)}},l={list:e=>s(async t=>{const a=await o.listPages(t,e?.siteId);return Z(a.filter(i=>i.slug!==$)).flatMap(i=>i.pages.map(r=>({id:r.id,slug:r.slug,label:P(r),group:i.group,groupKey:i.key,draft:!r.is_published,kind:r.kind??null})))}),load:e=>s(async t=>{const a="id"in e?e.id:(await o.findPageBySlug(e.slug,t,e.siteId))?.id,i=a?await o.getPageById(a,t):null;return i?{id:i.id,layout:i.layout,kind:i.kind,version:A(i),...R(i)}:null}),save:(e,t,a)=>{const{version:i}=a;return i?s(async r=>{const f=await o.saveLayout(e,t.layout,r,i,a.clientId||void 0);return{version:A(f),...R(f)}}):Promise.reject(new Error("Refusing to save this page: the editor does not know which version it is replacing. Reload the page and try again."))},version:e=>s(t=>o.getPageById(e,t).then(A)),linkTargets:e=>s(async t=>(await o.listPages(t,e?.siteId)).map(a=>({id:a.id,slug:a.slug,label:P(a),layout:a.layout??null}))),duplicate:(e,t)=>s(async a=>{const i=await o.duplicatePage(e,{title:t.title,slug:t.slug},a);return{id:i.id,slug:i.slug,label:P(i),group:i.group||null,draft:!i.is_published,kind:i.kind??null}})},d=e=>({list:()=>s(async t=>(await o.listTemplatePages(e,t)).map(B)),load:t=>s(async a=>{const i=c=>"id"in t?c.id===t.id:c.slug===t.slug,r=c=>({id:c.id,layout:c.layout,version:null}),f=await o.listTemplatePages(e,a);if(f.length)return r(f.find(i)??f[0]);const b=await o.getTemplate(e,a).catch(()=>null);try{return r(await o.createTemplatePage(e,{slug:X,title:"Home",layout:b?.layout??{}},a))}catch{const c=await o.listTemplatePages(e,a),h=c.find(i)??c[0];return h?r(h):null}}),save:(t,a)=>s(async i=>(await o.saveTemplatePageLayout(t,a.layout,i),{version:null})),create:t=>s(async a=>B(await o.createTemplatePage(e,{slug:t.slug,title:t.title,layout:t.layout},a))),remove:(t,a)=>s(i=>o.deleteTemplatePage(t,i,a))}),u=e=>{const t=e?.siteId??n.siteId();if(!t)throw new m("not-found","This editor is not connected to a website.");return t},g=e=>({name:e.name,slug:e.slug,mapsApiKey:e.maps_api_key,mapsMapId:e.maps_map_id}),w=e=>Object.fromEntries(k.map(t=>[t,e[E(t)]??""])),p={launcherColor:"launcher_color",launcherIcon:"launcher_icon",launcherPosition:"launcher_position",launcherLabel:"launcher_label",showOnPhones:"show_on_phones"},y=Object.keys(p),_=e=>{const t={enabled:e.enabled,title:e.title,subtitle:e.subtitle,greeting:e.greeting};for(const a of y){const i=e[p[a]];i!==void 0&&Object.assign(t,{[a]:i})}return t},M=e=>{const t={};for(const[a,i]of Object.entries(e))t[p[a]??a]=i;return t},I={pages:l,lock:{claim:(e,t,a)=>s(async i=>({heartbeatSeconds:(await o.claimPageEditLock(e,i,t,a)).heartbeat_seconds})),release:e=>s(t=>o.releasePageEditLock(e,t))},site:{get:e=>s(async t=>g(await o.getSite(u(e),t))),update:(e,t)=>s(async a=>g(await o.updateSite(u(t),e.mapsApiKey===void 0?{}:{maps_api_key:e.mapsApiKey},a))),publish:e=>s(async t=>{try{const{state:a,published:i}=await o.publishSite(u(e),t);return{state:a,published:i}}catch(a){const i=a instanceof S&&a.status===400?oe(a.data):null;throw i?new m("invalid",i,{cause:a}):a}}),liveState:e=>s(async t=>{const{state:a,changes:i}=await o.getSiteLiveState(u(e),t);return{state:a,changes:i}})},media:{resolve:Q,maxUploadBytes:N("POST /api/storefront/media/","file").maxSizeBytes},sectionTemplates:new G(n.token),social:{get:e=>s(async t=>w(await o.getSocialSettings(t,u(e)))),update:(e,t)=>s(async a=>{const i=Object.fromEntries(k.filter(r=>r in e).map(r=>[E(r),e[r]]));try{return w(await o.updateSocialSettings(i,a,u(t)))}catch(r){if(r instanceof S&&r.status===400){const f=r.data??{},b={};for(const c of k){const h=f[E(c)],v=Array.isArray(h)?h[0]:h;typeof v=="string"&&v.trim()&&(b[c]=v)}if(Object.keys(b).length>0)throw new m("invalid",r.message,{fields:b,cause:r})}throw r}})},theme:{get:e=>s(t=>o.getThemeSettings(t,e?.siteId)),update:(e,t)=>s(a=>o.updateThemeSettings(e,a,t?.siteId))},geocode:{locate:(e,t)=>s(async a=>{const i=await o.geocode(e,a,t?.country);if(i.status==="not_found")return null;if(i.status!=="found"||i.lat===null||i.lng===null)throw new m("unavailable","The geocoder could not answer just now.");return{lat:i.lat,lng:i.lng,label:i.label}})},chat:{get:e=>s(async t=>_(await o.getChatSettings(t,e?.siteId))),update:(e,t)=>s(async a=>_(await o.updateChatSettings(M(e),a,t?.siteId)))},blog:{posts:e=>s(async t=>(await o.listBlogPosts(t,{visibleOnly:!0,siteId:e?.siteId})).map(a=>({slug:a.slug,title:a.title,excerpt:a.excerpt,category:a.category,coverImage:a.cover_image?J(a.cover_image)??"":"",publishedAt:a.published_at,href:q(a.slug)})))},templates:{get:e=>s(async t=>{const a=await o.getTemplate(e,t);return{id:a.id,name:a.name}}),pages:d},preview:{href:e=>re(e,n),draftLink:e=>s(async t=>({url:(await o.createPagePreviewLink(e,t)).url??null}))}};return I[z]=!0,I}te({read:n=>n instanceof S?{status:n.status,data:n.data,message:n.message}:null,unreachableMessage:U,loadRefusal:(n,{slug:s})=>n instanceof F?`“${s}” exists on more than one website. Open it from the site you want to edit.`:null}),D(n=>j({token:()=>n.auth.token,siteId:()=>n.siteId()}));function Ae(n={}){return n.portalAudience!==void 0&&H(n.portalAudience),n.language!==void 0&&x(n.language),j({token:()=>O().auth.token,siteId:()=>n.siteId??O().siteId()})}export{L as PAGE_CONFLICT_CODE,Ae as createEfficientBackend,R as liveOf,A as pageVersion,oe as publishRefusal,se as toBackendError};
@@ -0,0 +1,2 @@
1
+ import { type BlockSourceSpec } from "efficient-web-builder/format/lib/content/block-sources";
2
+ export declare const EFFICIENT_BLOCK_SOURCES: readonly BlockSourceSpec[];
@@ -0,0 +1 @@
1
+ import{registerBlockSources as o}from"efficient-web-builder/format/lib/content/block-sources";const r=[{key:"group-offices",label:"Group offices",blocks:["Footprint"]}];o(r);export{r as EFFICIENT_BLOCK_SOURCES};
@@ -0,0 +1,2 @@
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
2
+ export declare const EuTyreLabelBlockFields: BlockFields;
@@ -0,0 +1 @@
1
+ const e={fields:{}};export{e as EuTyreLabelBlockFields};
@@ -0,0 +1,6 @@
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/puck/blocks/block-types";
2
+ export declare const PRODUCT_GALLERY_ROWS: {
3
+ galleryMode: import("efficient-web-builder/editor/lib/puck/controls").CustomField<string>;
4
+ imageFit: import("efficient-web-builder/editor/lib/puck/controls").CustomField<string>;
5
+ };
6
+ export declare const ProductGalleryFields: BlockFields;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{IMAGE_FIT_ROW_LABEL as o}from"efficient-web-builder/format/lib/content/image-fit";import{GridIcon as r,ImageIcon as a}from"efficient-easel/icons";import{group as m,segmented as l}from"efficient-web-builder/editor/lib/puck/controls";import{DEFAULT_HERO_GALLERY_MODE as i,heroImageFitOptions as t,DEFAULT_HERO_IMAGE_FIT as _}from"../../../../../../render/lib/sections/hero-gallery.js";const s={galleryMode:l("Gallery",e(r,{}),[{label:"Main only",value:"main"},{label:"Main + thumbs",value:"thumbs"},{label:"Tiled",value:"tiled"}],i),imageFit:l(o,e(a,{}),t(),_)},d={fields:{_gImageGallery:m("Image gallery"),...s}};export{s as PRODUCT_GALLERY_ROWS,d as ProductGalleryFields};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{EDITOR_ONLY_GROUP as E,LAYOUT_FIELD_KEYS as u,SECTION_THEME_FIELD_KEYS as g,SECTION_SHAPE_FIELD_KEYS as s,SECTION_ANIM_FIELD_KEYS as P}from"efficient-web-builder/editor/lib/puck/field-groups";import{PREVIEWABLE_KINDS as I}from"../../../../../../render/components/pdp-dynamic/useSampleProduct.js";import p from"../../../../../components/ProductHeroSource.js";import A from"../../../../../components/PreviewProductPicker.js";import{IMAGE_FIT_ROW_LABEL as T}from"efficient-web-builder/format/lib/content/image-fit";import{PlacementIcon as O,CarIcon as L,LayoutIcon as h,ColumnWidthsIcon as d,AlignLeftIcon as R,SpecTableIcon as w,DollarIcon as F,GridIcon as S,ImageIcon as v}from"efficient-easel/icons";import{group as o,sourceField as f,select as D,toggle as a,segmented as i,slider as b}from"efficient-web-builder/editor/lib/puck/controls";import{isEditorOnDynamicPage as y,editorTemplateProductKind as M}from"efficient-web-builder/format/lib/puck/editor-page-context";import{HERO_PRICE_PLACEMENT_OPTIONS as N,DEFAULT_HERO_PRICE_PLACEMENT as C}from"../../../../../../render/lib/sections/hero-price-placement.js";import{DEFAULT_HERO_LAYOUT as l,HERO_LAYOUTS as _,HERO_RATIO_MIN as H,HERO_RATIO_MAX as G,DEFAULT_HERO_RATIO as Y,DEFAULT_HERO_TEXT_ALIGN as U}from"../../../../../../render/lib/sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as k,heroImageFitOptions as x,DEFAULT_HERO_IMAGE_FIT as K}from"../../../../../../render/lib/sections/hero-gallery.js";import{shownForOption as B,withRowRules as c}from"efficient-web-builder/render/lib/puck/show-when";import{OFF_DYNAMIC_PAGE as V,ON_DYNAMIC_PAGE as W}from"../page-rules.js";const j=()=>({type:"custom",render:()=>e(A,{})});function Q(r){const t=r?.data?.root;return I.includes(M(t?.props))}const X={context:"previewsTemplateProduct",is:!0},q=new Set([...u,...g,...s,...P,"_gPreview","previewPick","_gPriceLine","pricePlacement","_gBehaviour","showVehicleFitment","_gArrangement","heroLayout","imageRatio","textAlign","_gShow","showSpecTable","showPriceQuote","_gImageGallery","galleryMode","imageFit"]),ne={fields:c({_gSource:o("Product"),source:f(p),_gPreview:o(E),previewPick:j(),_gPriceLine:o("Price"),pricePlacement:D("Price position",e(O,{}),N,C),_gBehaviour:o("Behavior"),showVehicleFitment:a("Vehicle fitment",!0,e(L,{})),_gArrangement:o("Arrangement"),heroLayout:i("Layout",e(h,{}),[{label:"Split",value:"split"},{label:"Image right",value:"imageRight"},{label:"Stacked",value:"stacked"}],l),imageRatio:b("Image / buy ratio",e(d,{}),H,G,1,Y,"%"),textAlign:i("Alignment",e(R,{}),[{label:"Left",value:"left"},{label:"Center",value:"center"}],U),_gShow:o("Show in the buy box"),showSpecTable:a("Spec table",!0,e(w,{})),showPriceQuote:a("Price / quote",!0,e(F,{})),_gImageGallery:o("Image gallery"),galleryMode:i("Gallery",e(S,{}),[{label:"Main only",value:"main"},{label:"Main + thumbs",value:"thumbs"},{label:"Tiled",value:"tiled"}],k),imageFit:i(T,e(v,{}),x(),K)},[[["imageRatio"],B("heroLayout",_,l,_.filter(r=>r!=="stacked"))],[["_gPreview","previewPick"],{all:[W,X]}]]),resolveFields:(r,{fields:t})=>{if(!y())return t;const m=Object.keys(t).filter(n=>!q.has(n));return c(t,[[m,V]])},showWhenFacts:{previewsTemplateProduct:(r,{appState:t})=>Q(t)}};export{ne as ProductHeroFields};
1
+ import{jsx as e}from"react/jsx-runtime";import{EDITOR_ONLY_GROUP as E,LAYOUT_FIELD_KEYS as P,SECTION_THEME_FIELD_KEYS as u,SECTION_SHAPE_FIELD_KEYS as s,SECTION_ANIM_FIELD_KEYS as g}from"efficient-web-builder/editor/lib/puck/field-groups";import{PREVIEWABLE_KINDS as p}from"../../../../../../render/components/pdp-dynamic/useSampleProduct.js";import I from"../../../../../components/ProductHeroSource.js";import A from"../../../../../components/PreviewProductPicker.js";import{PlacementIcon as T,CarIcon as O,LayoutIcon as h,ColumnWidthsIcon as L,AlignLeftIcon as R,SpecTableIcon as d,DollarIcon as w}from"efficient-easel/icons";import{group as t,sourceField as S,select as f,toggle as i,segmented as a,slider as v}from"efficient-web-builder/editor/lib/puck/controls";import{isEditorOnDynamicPage as F,editorTemplateProductKind as D}from"efficient-web-builder/format/lib/puck/editor-page-context";import{HERO_PRICE_PLACEMENT_OPTIONS as N,DEFAULT_HERO_PRICE_PLACEMENT as C}from"../../../../../../render/lib/sections/hero-price-placement.js";import{DEFAULT_HERO_LAYOUT as c,HERO_LAYOUTS as l,HERO_RATIO_MIN as y,HERO_RATIO_MAX as b,DEFAULT_HERO_RATIO as H,DEFAULT_HERO_TEXT_ALIGN as Y}from"../../../../../../render/lib/sections/hero-arrangement.js";import{PRODUCT_GALLERY_ROWS as M}from"../ProductGallery/fields.js";import{shownForOption as U,withRowRules as _}from"efficient-web-builder/render/lib/puck/show-when";import{OFF_DYNAMIC_PAGE as k,ON_DYNAMIC_PAGE as G}from"../page-rules.js";const x=()=>({type:"custom",render:()=>e(A,{})});function K(o){const r=o?.data?.root;return p.includes(D(r?.props))}const V={context:"previewsTemplateProduct",is:!0},W=new Set([...P,...u,...s,...g,"_gPreview","previewPick","_gPriceLine","pricePlacement","_gBehaviour","showVehicleFitment","_gArrangement","heroLayout","imageRatio","textAlign","_gShow","showSpecTable","showPriceQuote","_gImageGallery","galleryMode","imageFit"]),ie={fields:_({_gSource:t("Product"),source:S(I),_gPreview:t(E),previewPick:x(),_gPriceLine:t("Price"),pricePlacement:f("Price position",e(T,{}),N,C),_gBehaviour:t("Behavior"),showVehicleFitment:i("Vehicle fitment",!0,e(O,{})),_gArrangement:t("Arrangement"),heroLayout:a("Layout",e(h,{}),[{label:"Split",value:"split"},{label:"Image right",value:"imageRight"},{label:"Stacked",value:"stacked"}],c),imageRatio:v("Image / buy ratio",e(L,{}),y,b,1,H,"%"),textAlign:a("Alignment",e(R,{}),[{label:"Left",value:"left"},{label:"Center",value:"center"}],Y),_gShow:t("Show in the buy box"),showSpecTable:i("Spec table",!0,e(d,{})),showPriceQuote:i("Price / quote",!0,e(w,{})),_gImageGallery:t("Image gallery"),...M},[[["imageRatio"],U("heroLayout",l,c,l.filter(o=>o!=="stacked"))],[["_gPreview","previewPick"],{all:[G,V]}]]),resolveFields:(o,{fields:r})=>{if(!F())return r;const m=Object.keys(r).filter(n=>!W.has(n));return _(r,[[m,k]])},showWhenFacts:{previewsTemplateProduct:(o,{appState:r})=>K(r)}};export{ie as ProductHeroFields};