efficient-storefront-blocks 0.65.0 → 0.66.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +0 -1
  3. package/dist/chunks/EditorPreviewCheckout-HAUEGHGC.js +4 -0
  4. package/dist/chunks/{SiteEditorProvider-ZYGNRWSB.js → SiteEditorProvider-KOPR3UDU.js} +1 -1
  5. package/dist/chunks/{chunk-I7BIOONR.js → chunk-S66TL4Z3.js} +1 -1
  6. package/dist/chunks/{chunk-YAO6XQYA.js → chunk-TAGGXC3A.js} +1 -1
  7. package/dist/chunks/chunk-VEI75RPM.js +1 -0
  8. package/dist/chunks/{chunk-OU2WWXMT.js → chunk-Z7PJKX2P.js} +1 -1
  9. package/dist/chunks/{fitment-data-IKFCBT6E.js → fitment-data-UQDOQP66.js} +1 -1
  10. package/dist/consent.js +1 -1
  11. package/dist/editor/components/CollectionPicker.js +1 -1
  12. package/dist/editor/components/EditProductLink.js +1 -1
  13. package/dist/editor/components/FormPicker.js +1 -1
  14. package/dist/editor/components/GalleryProductBinding.d.ts +1 -1
  15. package/dist/editor/components/GalleryProductBinding.js +1 -1
  16. package/dist/editor/components/GalleryShowcaseSource.d.ts +1 -1
  17. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  18. package/dist/editor/components/HeaderSettingsPanel.js +1 -1
  19. package/dist/editor/components/MenuLinkRangeField.js +1 -1
  20. package/dist/editor/components/PerViewStepperField.js +1 -1
  21. package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +1 -1
  22. package/dist/editor/lib/puck/config.d.ts +0 -4
  23. package/dist/editor/lib/puck/config.js +1 -1
  24. package/dist/editor/lib/storefront-editor-words.d.ts +2 -4
  25. package/dist/editor/lib/storefront-editor-words.js +1 -1
  26. package/dist/index.d.ts +0 -17
  27. package/dist/index.js +43 -43
  28. package/dist/render/app/globals.css +18 -4
  29. package/dist/render/built-with.json +1 -1
  30. package/dist/render/components/CartContext.d.ts +5 -0
  31. package/dist/render/components/CartContext.js +1 -1
  32. package/dist/render/components/ContactRouting.d.ts +11 -1
  33. package/dist/render/components/ContactRouting.js +1 -1
  34. package/dist/render/components/DetailRows.d.ts +2 -0
  35. package/dist/render/components/DetailRows.js +1 -1
  36. package/dist/render/components/Events.d.ts +11 -1
  37. package/dist/render/components/Events.js +1 -1
  38. package/dist/render/components/GalleryGrid.d.ts +4 -1
  39. package/dist/render/components/GalleryGrid.js +1 -1
  40. package/dist/render/components/GalleryItem.d.ts +1 -0
  41. package/dist/render/components/GalleryItem.js +1 -1
  42. package/dist/render/components/ProductGallery.js +1 -1
  43. package/dist/render/components/ProductGridSection.js +1 -1
  44. package/dist/render/components/checkout/CheckoutPageClient.js +3 -3
  45. package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
  46. package/dist/render/components/fitment/PickerField.js +1 -1
  47. package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
  48. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.d.ts +2 -0
  49. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
  50. package/dist/render/components/pdp-dynamic/RecordPhotoGallery.d.ts +12 -0
  51. package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -0
  52. package/dist/render/lib/api/types.d.ts +1 -0
  53. package/dist/render/lib/checkout/match-subdivision.d.ts +2 -0
  54. package/dist/render/lib/checkout/match-subdivision.js +1 -0
  55. package/dist/render/lib/consent/choice.d.ts +0 -2
  56. package/dist/render/lib/consent/choice.js +1 -1
  57. package/dist/render/lib/consent/rules.d.ts +0 -1
  58. package/dist/render/lib/consent/rules.js +1 -1
  59. package/dist/render/lib/content/source-values.d.ts +4 -0
  60. package/dist/render/lib/content/source-values.js +1 -0
  61. package/dist/render/lib/content/stock-words.d.ts +0 -4
  62. package/dist/render/lib/content/stock-words.js +1 -1
  63. package/dist/render/lib/puck/blocks/commerce/GalleryB/render.js +1 -1
  64. package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +1 -1
  65. package/dist/render/lib/puck/blocks/service/Events/render.js +1 -1
  66. package/dist/render/lib/puck/blocks/text-part-shapes.json +6 -3
  67. package/dist/render/lib/puck/current-record.d.ts +1 -0
  68. package/dist/render/lib/puck/current-record.js +1 -1
  69. package/dist/render/lib/sections/fill-row.d.ts +8 -0
  70. package/dist/render/lib/sections/fill-row.js +1 -1
  71. package/dist/render/lib/sections/grid-no-hole.d.ts +12 -0
  72. package/dist/render/lib/sections/grid-no-hole.js +1 -0
  73. package/dist/render/lib/sections/own-padding.d.ts +3 -0
  74. package/dist/render/lib/sections/own-padding.js +1 -0
  75. package/dist/render/lib/wheels/catalog-filters-to-listing.d.ts +0 -1
  76. package/dist/render/lib/wheels/catalog-filters-to-listing.js +1 -1
  77. package/dist/render/lib/wheels/catalog-filters.d.ts +0 -1
  78. package/dist/render/lib/wheels/catalog-filters.js +1 -1
  79. package/dist/words.d.ts +3 -4
  80. package/dist/words.js +2 -2
  81. package/package.json +1 -1
  82. package/dist/chunks/EditorPreviewCheckout-4KZCYPQT.js +0 -4
  83. package/dist/chunks/chunk-GR7OHU32.js +0 -1
  84. /package/dist/chunks/{chunk-B44XQA2J.js → chunk-IHYVLVY3.js} +0 -0
  85. /package/dist/chunks/{chunk-YAO6XQYA.js.LEGAL.txt → chunk-TAGGXC3A.js.LEGAL.txt} +0 -0
@@ -1 +1 @@
1
- import{a as V,c as C,g as z,i as $,j,l as O}from"./chunk-B44XQA2J.js";var U="".replace(/\/+$/,"");var B="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[B]=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",N=null;function L(){O.removeItem(Fe),O.removeItem(ne)}var w={getAccess(){return N},takeLegacyRefresh(){let e=O.getItem(ne);return L(),e},setTokens(e){N=e,L()},clear(){N=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 Be(e){let t=e.replace(ue,(n,r,a,l,d)=>{let s=re(d);return s===null?n:`${r}${a}${l}${s}${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,s]=r;if(Math.max(a,l,d)-Math.min(a,l,d)>ce)return null;let i=Ne(255-a,255-l,255-d,s);return t?`${i} !important`:i}function Ne(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(s=>s.endsWith("%")?Math.round(parseFloat(s)/100*255):Math.round(parseFloat(s)));if(l.some(s=>Number.isNaN(s)))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,s=parseFloat(a[2])/100;if([l,d,s].some(P=>Number.isNaN(P)))return null;let i=r?E(r):a.length>=4?E(a[3]):1,[o,u,g]=Je(l,d,s);return[o,u,g,i]}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,s=0,i=0;a<1?[d,s,i]=[r,l,0]:a<2?[d,s,i]=[l,r,0]:a<3?[d,s,i]=[0,r,l]:a<4?[d,s,i]=[0,l,r]:a<5?[d,s,i]=[l,0,r]:[d,s,i]=[r,0,l];let o=n-r/2;return[Math.round((d+o)*255),Math.round((s+o)*255),Math.round((i+o)*255)]}var se=512*1024;function D(e){return/\.svg(\?|$)/i.test(e)}function We(e){return`data:image/svg+xml,${encodeURIComponent(Be(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 s=typeof FormData<"u"&&d.body instanceof FormData,i;try{i=await fetch(`${r??Qe}${at(e)}`,{...d,headers:{...s?{}:{"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 i.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(i.status,i.ok?"Expected JSON but received a non-JSON response":ye(i.status,i.statusText),o)}if(!i.ok){let g=(u&&typeof u=="object"&&"detail"in u&&typeof u.detail=="string"?u.detail:null)??ye(i.status,i.statusText);throw new f(i.status,g,u)}return u}var R=null;async function ke(){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 xe(){return w.getAccess()??ke()}async function h(e,t={}){let n;try{n=await xe()}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 ke();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 xe();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 Te=typeof window>"u"&&U!=="",ut=Te?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 Ce(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 Ce("/wheels",{process:e},t)}function gt(e,t,n){return Ce("/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(B))}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??{},s=await p({...d,cache:"no-store"}),i=await _t();return i&&(s.headers={...s.headers,"user-agent":i}),[r,s]}async function kt(e){if(!Te)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 kt(X(e)),n={baseUrl:ut,...e};return t&&(n.headers={...t,...e?.headers}),n}var _=typeof window>"u";function k(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-IKFCBT6E.js");return n.makes(e)}return(await c(k("/makes",{region:e}),b())).results},listModels:async(e,t)=>{if(_){let{fitmentData:r}=await import("./fitment-data-IKFCBT6E.js");return r.models(e,t)}return(await c(k("/models",{make:e,region:t}),b())).results},listYears:async(e,t,n)=>{if(_){let{fitmentData:a}=await import("./fitment-data-IKFCBT6E.js");return a.years(e,t,n)}return(await c(k("/years",{make:e,model:t,region:n}),b())).results},listModifications:async(e,t,n,r)=>{if(_){let{fitmentData:l}=await import("./fitment-data-IKFCBT6E.js");return l.modifications(e,t,n,r)}return(await c(k("/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-IKFCBT6E.js");return l.stockFitment(e,t,n,r,a)}return c(k("/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:C(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:C(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=C(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}`:""}`},x=e=>`/api/storefront/sites/${encodeURIComponent(e)}/`,xt=e=>`${x(e)}currencies/`,Tt="/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 Ct(){let e=ge();if(!e)throw new K;return`${Tt}?${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=s=>F("header-settings",s,n),a=s=>F("theme-settings",s,n),l=s=>F("chat-settings",s,n),d=s=>F("social-settings",s,n);return{findPageBySlug:async(s,i,o)=>{let u=new URLSearchParams({slug:s});o&&u.set("site",o);let g=await t(`/api/storefront/pages/?${u.toString()}`,{token:i}),P=Array.isArray(g)?g:g.results??[];if(!o&&P.length>1)throw new G(s,P.length);return P[0]??null},getPageById:(s,i)=>t(`/api/storefront/pages/${s}/`,{token:i}),saveLayout:(s,i,o,u,g)=>t(`/api/storefront/pages/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i,expected_updated_at:u,...g?{client_id:g}:{}}),token:o}),duplicatePage:(s,i,o)=>t(`/api/storefront/pages/${s}/duplicate/`,{method:"POST",body:JSON.stringify({title:i.title,slug:i.slug}),token:o}),geocode:(s,i,o)=>t(`/api/storefront/geocode/?${new URLSearchParams(o?{q:s,country:o}:{q:s})}`,{token:i}),listBlockSources:s=>t("/api/storefront/block-sources/",{token:s}),listRecordTypes:s=>t("/api/storefront/record-types/",{token:s}),createPagePreviewLink:(s,i)=>t(`/api/storefront/pages/${s}/preview-link/`,{method:"POST",token:i}),claimPageEditLock:(s,i,o,u=!1)=>t(`/api/storefront/pages/${s}/edit-lock/`,{method:"POST",body:JSON.stringify({client_id:o,takeover:u}),token:i}),releasePageEditLock:(s,i)=>t(`/api/storefront/pages/${s}/edit-lock/`,{method:"DELETE",token:i}),createTemplate:(s,i,o)=>t("/api/storefront/page-templates/",{method:"POST",body:JSON.stringify({name:s,layout:i}),headers:I,token:o}),getTemplate:(s,i)=>t(`/api/storefront/page-templates/${s}/`,{token:i}),saveTemplateLayout:(s,i,o)=>t(`/api/storefront/page-templates/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i}),headers:I,token:o}),listTemplatePages:async(s,i)=>{let o=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(s)}`,{token:i});return Array.isArray(o)?o:o.results??[]},findTemplatePageBySlug:async(s,i,o)=>{let u=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(s)}&slug=${encodeURIComponent(i)}`,{token:o});return(Array.isArray(u)?u:u.results??[])[0]??null},createTemplatePage:(s,i,o)=>t("/api/storefront/template-pages/",{method:"POST",body:JSON.stringify({template:s,...i}),headers:I,token:o}),saveTemplatePageLayout:(s,i,o)=>t(`/api/storefront/template-pages/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i}),headers:I,token:o}),deleteTemplatePage:(s,i,o)=>t(`/api/storefront/template-pages/${s}/`,{method:"DELETE",token:i,...o?.keepalive?{keepalive:!0}:{}}),listPages:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("site",i);let u=await t(`/api/storefront/pages/?${o.toString()}`,{token:s});return Array.isArray(u)?u:u.results??[]},createPage:(s,i,o,u)=>t("/api/storefront/pages/",{method:"POST",body:JSON.stringify({title:s,slug:i,layout:o}),token:u}),deletePage:(s,i)=>t(`/api/storefront/pages/${s}/`,{method:"DELETE",token:i}),getHeaderSettings:(s,i)=>t(r(i),{token:s}),listMenus:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("site",i);let u=await t(`/api/storefront/menus/?${o}`,{token:s});return Array.isArray(u)?u:u.results??[]},listBlogPosts:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.visibleOnly&&o.set("is_visible","true"),i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/blog-posts/?${o.toString()}`,{token:s});return Array.isArray(u)?u:u.results??[]},listFieldUsage:async(s,i)=>{let o=await t(`/api/storefront/field-usage/?site=${encodeURIComponent(i)}`,{token:s});return Array.isArray(o?.entries)?o.entries:[]},listCategories:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.visibleOnly&&o.set("is_visible","true"),i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/categories/?${o.toString()}`,{token:s});return[...Array.isArray(u)?u:u.results??[]].sort((P,T)=>P.sort_order-T.sort_order||P.name.localeCompare(T.name))},listForms:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/forms/?${o.toString()}`,{token:s});return[...Array.isArray(u)?u:u.results??[]].sort((P,T)=>P.title.localeCompare(T.title))},listWheelSummaries:async(s,i={})=>{let o=new URLSearchParams;i.siteId&&o.set("site",i.siteId);let u=o.toString(),g=await t(`/api/storefront/wheel-curations/summaries/${u?`?${u}`:""}`,{token:s});return S(g)},listProducts:async(s,i={})=>{let o=new URLSearchParams;i.kinds?.length&&o.set("kind",i.kinds.join(",")),i.siteId&&o.set("site",i.siteId);let u=o.toString(),g=await t(`/api/storefront/products/${u?`?${u}`:""}`,{token:s});return S(g)},getWheelDetail:async(s,i,o={})=>{let u=new URLSearchParams({slug:i});return o.siteId&&u.set("site",o.siteId),A(S(await t(`/api/storefront/wheel-curations/detail/?${u.toString()}`,{token:s})))},updateHeaderSettings:(s,i,o)=>t(r(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getSite:(s,i)=>t(x(s),{token:i}),listSites:async s=>{let i=await t("/api/storefront/sites/?no_page=true",{token:s});return Array.isArray(i)?i:i.results??[]},listSiteCurrencies:async(s,i)=>{let o=await t(xt(s),{token:i});return Array.isArray(o)?o:[]},publishSite:(s,i)=>t(`${x(s)}publish/`,{method:"POST",token:i}),getSiteLiveState:(s,i)=>t(`${x(s)}live-state/`,{token:i}),updateSite:(s,i,o)=>t(x(s),{method:"PATCH",body:JSON.stringify(i),token:o}),getThemeSettings:(s,i)=>t(a(i),{token:s}),updateThemeSettings:(s,i,o)=>t(a(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getChatSettings:(s,i)=>t(l(i),{token:s}),updateChatSettings:(s,i,o)=>t(l(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getSocialSettings:(s,i)=>t(d(i),{token:s}),updateSocialSettings:(s,i,o)=>t(d(o),{method:"PATCH",body:JSON.stringify(s),token:i}),uploadHeaderLogo:(s,i,o)=>{let u=new FormData;return u.append("logo",s),t(r(o),{method:"PATCH",body:u,token:i})},clearHeaderLogo:(s,i)=>t(r(i),{method:"PATCH",body:JSON.stringify({logo:null}),token:s}),setHeaderLogoFromAsset:(s,i,o)=>t(r(o),{method:"PATCH",body:JSON.stringify({logo_asset_id:s}),token:i}),uploadMedia:async(s,i)=>{let o=new FormData;return o.append("file",s),t(Ct(),{method:"POST",body:o,token:i})},listMedia:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("kind",i);let u=await t(`/api/storefront/media-assets/?${o.toString()}`,{token:s});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};
1
+ import{a as V,c as C,g as z,i as $,j,l as O}from"./chunk-IHYVLVY3.js";var U="".replace(/\/+$/,"");var B="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[B]=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",N=null;function L(){O.removeItem(Fe),O.removeItem(ne)}var w={getAccess(){return N},takeLegacyRefresh(){let e=O.getItem(ne);return L(),e},setTokens(e){N=e,L()},clear(){N=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 Be(e){let t=e.replace(ue,(n,r,a,l,d)=>{let s=re(d);return s===null?n:`${r}${a}${l}${s}${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,s]=r;if(Math.max(a,l,d)-Math.min(a,l,d)>ce)return null;let i=Ne(255-a,255-l,255-d,s);return t?`${i} !important`:i}function Ne(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(s=>s.endsWith("%")?Math.round(parseFloat(s)/100*255):Math.round(parseFloat(s)));if(l.some(s=>Number.isNaN(s)))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,s=parseFloat(a[2])/100;if([l,d,s].some(P=>Number.isNaN(P)))return null;let i=r?E(r):a.length>=4?E(a[3]):1,[o,u,g]=Je(l,d,s);return[o,u,g,i]}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,s=0,i=0;a<1?[d,s,i]=[r,l,0]:a<2?[d,s,i]=[l,r,0]:a<3?[d,s,i]=[0,r,l]:a<4?[d,s,i]=[0,l,r]:a<5?[d,s,i]=[l,0,r]:[d,s,i]=[r,0,l];let o=n-r/2;return[Math.round((d+o)*255),Math.round((s+o)*255),Math.round((i+o)*255)]}var se=512*1024;function D(e){return/\.svg(\?|$)/i.test(e)}function We(e){return`data:image/svg+xml,${encodeURIComponent(Be(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 s=typeof FormData<"u"&&d.body instanceof FormData,i;try{i=await fetch(`${r??Qe}${at(e)}`,{...d,headers:{...s?{}:{"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 i.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(i.status,i.ok?"Expected JSON but received a non-JSON response":ye(i.status,i.statusText),o)}if(!i.ok){let g=(u&&typeof u=="object"&&"detail"in u&&typeof u.detail=="string"?u.detail:null)??ye(i.status,i.statusText);throw new f(i.status,g,u)}return u}var R=null;async function ke(){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 xe(){return w.getAccess()??ke()}async function h(e,t={}){let n;try{n=await xe()}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 ke();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 xe();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 Te=typeof window>"u"&&U!=="",ut=Te?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 Ce(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 Ce("/wheels",{process:e},t)}function gt(e,t,n){return Ce("/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(B))}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??{},s=await p({...d,cache:"no-store"}),i=await _t();return i&&(s.headers={...s.headers,"user-agent":i}),[r,s]}async function kt(e){if(!Te)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 kt(X(e)),n={baseUrl:ut,...e};return t&&(n.headers={...t,...e?.headers}),n}var _=typeof window>"u";function k(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-UQDOQP66.js");return n.makes(e)}return(await c(k("/makes",{region:e}),b())).results},listModels:async(e,t)=>{if(_){let{fitmentData:r}=await import("./fitment-data-UQDOQP66.js");return r.models(e,t)}return(await c(k("/models",{make:e,region:t}),b())).results},listYears:async(e,t,n)=>{if(_){let{fitmentData:a}=await import("./fitment-data-UQDOQP66.js");return a.years(e,t,n)}return(await c(k("/years",{make:e,model:t,region:n}),b())).results},listModifications:async(e,t,n,r)=>{if(_){let{fitmentData:l}=await import("./fitment-data-UQDOQP66.js");return l.modifications(e,t,n,r)}return(await c(k("/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-UQDOQP66.js");return l.stockFitment(e,t,n,r,a)}return c(k("/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:C(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:C(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=C(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}`:""}`},x=e=>`/api/storefront/sites/${encodeURIComponent(e)}/`,xt=e=>`${x(e)}currencies/`,Tt="/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 Ct(){let e=ge();if(!e)throw new K;return`${Tt}?${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=s=>F("header-settings",s,n),a=s=>F("theme-settings",s,n),l=s=>F("chat-settings",s,n),d=s=>F("social-settings",s,n);return{findPageBySlug:async(s,i,o)=>{let u=new URLSearchParams({slug:s});o&&u.set("site",o);let g=await t(`/api/storefront/pages/?${u.toString()}`,{token:i}),P=Array.isArray(g)?g:g.results??[];if(!o&&P.length>1)throw new G(s,P.length);return P[0]??null},getPageById:(s,i)=>t(`/api/storefront/pages/${s}/`,{token:i}),saveLayout:(s,i,o,u,g)=>t(`/api/storefront/pages/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i,expected_updated_at:u,...g?{client_id:g}:{}}),token:o}),duplicatePage:(s,i,o)=>t(`/api/storefront/pages/${s}/duplicate/`,{method:"POST",body:JSON.stringify({title:i.title,slug:i.slug}),token:o}),geocode:(s,i,o)=>t(`/api/storefront/geocode/?${new URLSearchParams(o?{q:s,country:o}:{q:s})}`,{token:i}),listBlockSources:s=>t("/api/storefront/block-sources/",{token:s}),listRecordTypes:s=>t("/api/storefront/record-types/",{token:s}),createPagePreviewLink:(s,i)=>t(`/api/storefront/pages/${s}/preview-link/`,{method:"POST",token:i}),claimPageEditLock:(s,i,o,u=!1)=>t(`/api/storefront/pages/${s}/edit-lock/`,{method:"POST",body:JSON.stringify({client_id:o,takeover:u}),token:i}),releasePageEditLock:(s,i)=>t(`/api/storefront/pages/${s}/edit-lock/`,{method:"DELETE",token:i}),createTemplate:(s,i,o)=>t("/api/storefront/page-templates/",{method:"POST",body:JSON.stringify({name:s,layout:i}),headers:I,token:o}),getTemplate:(s,i)=>t(`/api/storefront/page-templates/${s}/`,{token:i}),saveTemplateLayout:(s,i,o)=>t(`/api/storefront/page-templates/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i}),headers:I,token:o}),listTemplatePages:async(s,i)=>{let o=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(s)}`,{token:i});return Array.isArray(o)?o:o.results??[]},findTemplatePageBySlug:async(s,i,o)=>{let u=await t(`/api/storefront/template-pages/?template=${encodeURIComponent(s)}&slug=${encodeURIComponent(i)}`,{token:o});return(Array.isArray(u)?u:u.results??[])[0]??null},createTemplatePage:(s,i,o)=>t("/api/storefront/template-pages/",{method:"POST",body:JSON.stringify({template:s,...i}),headers:I,token:o}),saveTemplatePageLayout:(s,i,o)=>t(`/api/storefront/template-pages/${s}/`,{method:"PATCH",body:JSON.stringify({layout:i}),headers:I,token:o}),deleteTemplatePage:(s,i,o)=>t(`/api/storefront/template-pages/${s}/`,{method:"DELETE",token:i,...o?.keepalive?{keepalive:!0}:{}}),listPages:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("site",i);let u=await t(`/api/storefront/pages/?${o.toString()}`,{token:s});return Array.isArray(u)?u:u.results??[]},createPage:(s,i,o,u)=>t("/api/storefront/pages/",{method:"POST",body:JSON.stringify({title:s,slug:i,layout:o}),token:u}),deletePage:(s,i)=>t(`/api/storefront/pages/${s}/`,{method:"DELETE",token:i}),getHeaderSettings:(s,i)=>t(r(i),{token:s}),listMenus:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("site",i);let u=await t(`/api/storefront/menus/?${o}`,{token:s});return Array.isArray(u)?u:u.results??[]},listBlogPosts:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.visibleOnly&&o.set("is_visible","true"),i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/blog-posts/?${o.toString()}`,{token:s});return Array.isArray(u)?u:u.results??[]},listFieldUsage:async(s,i)=>{let o=await t(`/api/storefront/field-usage/?site=${encodeURIComponent(i)}`,{token:s});return Array.isArray(o?.entries)?o.entries:[]},listCategories:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.visibleOnly&&o.set("is_visible","true"),i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/categories/?${o.toString()}`,{token:s});return[...Array.isArray(u)?u:u.results??[]].sort((P,T)=>P.sort_order-T.sort_order||P.name.localeCompare(T.name))},listForms:async(s,i={})=>{let o=new URLSearchParams({no_page:"true"});i.siteId&&o.set("site",i.siteId);let u=await t(`/api/storefront/forms/?${o.toString()}`,{token:s});return[...Array.isArray(u)?u:u.results??[]].sort((P,T)=>P.title.localeCompare(T.title))},listWheelSummaries:async(s,i={})=>{let o=new URLSearchParams;i.siteId&&o.set("site",i.siteId);let u=o.toString(),g=await t(`/api/storefront/wheel-curations/summaries/${u?`?${u}`:""}`,{token:s});return S(g)},listProducts:async(s,i={})=>{let o=new URLSearchParams;i.kinds?.length&&o.set("kind",i.kinds.join(",")),i.siteId&&o.set("site",i.siteId);let u=o.toString(),g=await t(`/api/storefront/products/${u?`?${u}`:""}`,{token:s});return S(g)},getWheelDetail:async(s,i,o={})=>{let u=new URLSearchParams({slug:i});return o.siteId&&u.set("site",o.siteId),A(S(await t(`/api/storefront/wheel-curations/detail/?${u.toString()}`,{token:s})))},updateHeaderSettings:(s,i,o)=>t(r(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getSite:(s,i)=>t(x(s),{token:i}),listSites:async s=>{let i=await t("/api/storefront/sites/?no_page=true",{token:s});return Array.isArray(i)?i:i.results??[]},listSiteCurrencies:async(s,i)=>{let o=await t(xt(s),{token:i});return Array.isArray(o)?o:[]},publishSite:(s,i)=>t(`${x(s)}publish/`,{method:"POST",token:i}),getSiteLiveState:(s,i)=>t(`${x(s)}live-state/`,{token:i}),updateSite:(s,i,o)=>t(x(s),{method:"PATCH",body:JSON.stringify(i),token:o}),getThemeSettings:(s,i)=>t(a(i),{token:s}),updateThemeSettings:(s,i,o)=>t(a(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getChatSettings:(s,i)=>t(l(i),{token:s}),updateChatSettings:(s,i,o)=>t(l(o),{method:"PATCH",body:JSON.stringify(s),token:i}),getSocialSettings:(s,i)=>t(d(i),{token:s}),updateSocialSettings:(s,i,o)=>t(d(o),{method:"PATCH",body:JSON.stringify(s),token:i}),uploadHeaderLogo:(s,i,o)=>{let u=new FormData;return u.append("logo",s),t(r(o),{method:"PATCH",body:u,token:i})},clearHeaderLogo:(s,i)=>t(r(i),{method:"PATCH",body:JSON.stringify({logo:null}),token:s}),setHeaderLogoFromAsset:(s,i,o)=>t(r(o),{method:"PATCH",body:JSON.stringify({logo_asset_id:s}),token:i}),uploadMedia:async(s,i)=>{let o=new FormData;return o.append("file",s),t(Ct(),{method:"POST",body:o,token:i})},listMedia:async(s,i)=>{let o=new URLSearchParams({no_page:"true"});i&&o.set("kind",i);let u=await t(`/api/storefront/media-assets/?${o.toString()}`,{token:s});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};
@@ -1 +1 @@
1
- import{a as d,b as p,c as S,p as b,r as T}from"./chunk-OU2WWXMT.js";import"./chunk-B44XQA2J.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-Z7PJKX2P.js";import"./chunk-IHYVLVY3.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};
package/dist/consent.js CHANGED
@@ -1 +1 @@
1
- var i="Ads on. Shopper can opt out.",n="Ads and analytics off until Accept",r={us:{region:"us",name:"United States",model:"opt-out",law:"California CCPA / CPRA, other state laws",beforeChoice:i,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:n,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},au:{region:"au",name:"Australia",model:"opt-out",law:"Privacy Act 1988 (APPs)",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},nz:{region:"nz",name:"New Zealand",model:"opt-out",law:"Privacy Act 2020",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},uk:{region:"uk",name:"United Kingdom",model:"opt-in",law:"PECR, UK GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},eu:{region:"eu",name:"European Union",model:"opt-in",law:"ePrivacy Directive, GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},other:{region:"other",name:"All other countries",model:"opt-in",law:"Safe default",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"}},l="Honoured: ads off",d=new Set(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO"]),s={US:"us",PR:"us",GU:"us",VI:"us",AS:"us",MP:"us",CA:"ca",AU:"au",NZ:"nz",GB:"uk"};function c(t){let e=(t??"").trim().toUpperCase();return e?s[e]?s[e]:d.has(e)?"eu":"other":"other"}function h(t){let e=new Set,a=[];for(let u of t){let o=c(u);o==="other"||e.has(o)||(e.add(o),a.push(r[o]))}return a.push(r.other),a}export{l as CONSENT_GPC_RULE,r as CONSENT_RULES,c as regionOfCountry,h as rulesForCountries};
1
+ var i="Ads on. Shopper can opt out.",n="Ads and analytics off until Accept",r={us:{region:"us",name:"United States",model:"opt-out",law:"California CCPA / CPRA, other state laws",beforeChoice:i,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:n,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},au:{region:"au",name:"Australia",model:"opt-out",law:"Privacy Act 1988 (APPs)",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},nz:{region:"nz",name:"New Zealand",model:"opt-out",law:"Privacy Act 2020",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},uk:{region:"uk",name:"United Kingdom",model:"opt-in",law:"PECR, UK GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},eu:{region:"eu",name:"European Union",model:"opt-in",law:"ePrivacy Directive, GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},other:{region:"other",name:"All other countries",model:"opt-in",law:"Safe default",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"}},l="Honoured: ads off",d=new Set(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO"]),s={US:"us",PR:"us",GU:"us",VI:"us",AS:"us",MP:"us",CA:"ca",AU:"au",NZ:"nz",GB:"uk"};function c(t){let e=(t??"").trim().toUpperCase();return e?s[e]?s[e]:d.has(e)?"eu":"other":"other"}function g(t){let e=new Set,a=[];for(let u of t){let o=c(u);o==="other"||e.has(o)||(e.add(o),a.push(r[o]))}return a.push(r.other),a}export{l as CONSENT_GPC_RULE,r as CONSENT_RULES,c as regionOfCountry,g as rulesForCountries};
@@ -1 +1 @@
1
- "use client";import{jsx as i,jsxs as n}from"react/jsx-runtime";import{Button as j}from"efficient-shell/ui";import{SettingsField as z}from"efficient-easel/panel";import{FieldSelect as E}from"efficient-easel/fields";import{CategoryIcon as I}from"efficient-easel/icons";import{useEffect as b,useRef as d,useState as T}from"react";import{loadStorefrontCategories as F}from"./useStorefrontCategories.js";import{snapshotChanged as W}from"efficient-web-builder/editor/components/useSnapshotSource";import{onCollectionCategoriesChanged as D}from"efficient-web-builder/format/lib/editor-events";import{useEaselHost as H}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as L}from"efficient-web-builder/format/lib/sized-image";import{resolveCategoryImage as P}from"../../render/components/CollectionCard.js";function C(e){return{id:e.id,name:e.name,slug:e.slug,description:e.description??"",image:e.image??""}}function _({value:e,onChange:s}){const N=H(),[a,x]=T(null),l=d(!0),m=d(e);m.current=e;const f=d(s);f.current=s;const p=(o=!1)=>F(o).then(r=>(l.current&&x(r),r)),h=o=>{const r=m.current;if(!r?.id)return;const c=o.find(R=>R.id===r.id);if(!c)return;const y=C(c);W(y,r)&&f.current(y)};b(()=>(l.current=!0,p().then(h),()=>{l.current=!1}),[]),b(()=>D(()=>{p(!0).then(h)}),[]);const v=o=>{if(!o){s(null);return}const r=(a??[]).find(c=>c.id===o);r&&s(C(r))},S=()=>{e?.id&&N.send("storefront-editor:open-category",{categoryId:e.id,name:e.name})},g=a===null,k=!!e?.id&&!(a??[]).some(o=>o.id===e.id),u=P(e?.image);return n("div",{children:[i(z,{label:t("Collection"),icon:i(I,{}),children:i(E,{value:e?.id??"",ariaLabel:t("Collection"),onChange:v,readOnly:g,options:[{label:g?t("Loading…"):t("None"),value:""},...k?[{label:t("{name} (unavailable)",{name:e.name}),value:e.id}]:[],...(a??[]).map(o=>({label:o.name,value:o.id}))]})}),e?.id?n("div",{className:"sf-blogsource",style:{marginTop:9},children:[n("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Name")}),i("div",{style:{fontWeight:600},children:e.name})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Description")}),i("div",{style:{fontSize:13,opacity:e.description?.85:.5},children:e.description||t("No description yet")})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Image")}),u?i("img",{...L(u,{fallbackWidth:640,maxWidth:960}),sizes:"320px",alt:"",style:{width:"100%",height:96,objectFit:"cover",borderRadius:8}}):i("div",{style:{fontSize:13,opacity:.5},children:t("No image yet")})]})]}),i(j,{variant:"secondary",size:"sm",className:"sf-blogsource-action",style:{marginTop:10},onClick:S,children:t("Edit category ✎")}),i("p",{className:"es-field-hint sf-hint-keep",children:t("Name, description and image come from {place}. Edit them there — this card updates to match.",{place:t("Storefront → Categories")})})]}):i("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a category from {place} to fill this card’s name, description and image. That content is edited in the category.",{place:t("Storefront → Categories")})})]})}export{_ as default};
1
+ "use client";import{jsx as i,jsxs as n}from"react/jsx-runtime";import{Button as j}from"efficient-shell/ui";import{SettingsField as z}from"efficient-easel/panel";import{FieldSelect as E}from"efficient-easel/fields";import{CategoryIcon as I}from"efficient-easel/icons";import{useEffect as b,useRef as d,useState as T}from"react";import{loadStorefrontCategories as F}from"./useStorefrontCategories.js";import{snapshotChanged as W}from"efficient-web-builder/editor/components/useSnapshotSource";import{onCollectionCategoriesChanged as D}from"efficient-web-builder/format/lib/editor-events";import{useEaselHost as H}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as L}from"efficient-web-builder/format/lib/sized-image";import{resolveCategoryImage as P}from"../../render/components/CollectionCard.js";function C(e){return{id:e.id,name:e.name,slug:e.slug,description:e.description??"",image:e.image??""}}function _({value:e,onChange:s}){const N=H(),[a,x]=T(null),l=d(!0),m=d(e);m.current=e;const f=d(s);f.current=s;const p=(o=!1)=>F(o).then(r=>(l.current&&x(r),r)),h=o=>{const r=m.current;if(!r?.id)return;const c=o.find(R=>R.id===r.id);if(!c)return;const y=C(c);W(y,r)&&f.current(y)};b(()=>(l.current=!0,p().then(h),()=>{l.current=!1}),[]),b(()=>D(()=>{p(!0).then(h)}),[]);const v=o=>{if(!o){s(null);return}const r=(a??[]).find(c=>c.id===o);r&&s(C(r))},S=()=>{e?.id&&N.send("storefront-editor:open-category",{categoryId:e.id,name:e.name})},g=a===null,k=!!e?.id&&!(a??[]).some(o=>o.id===e.id),u=P(e?.image);return n("div",{children:[i(z,{label:t("Collection"),icon:i(I,{}),children:i(E,{value:e?.id??"",ariaLabel:t("Collection"),onChange:v,readOnly:g,options:[{label:g?t("Loading…"):t("None"),value:""},...k?[{label:t("{name} (unavailable)",{name:e.name}),value:e.id}]:[],...(a??[]).map(o=>({label:o.name,value:o.id}))]})}),e?.id?n("div",{className:"sf-blogsource",style:{marginTop:9},children:[n("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Name")}),i("div",{style:{fontWeight:600},children:e.name})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Description")}),i("div",{style:{fontSize:13,opacity:e.description?.85:.5},children:e.description||t("No description yet")})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Image")}),u?i("img",{...L(u,{fallbackWidth:640,maxWidth:960}),sizes:"320px",alt:"",style:{width:"100%",height:96,objectFit:"cover",borderRadius:8}}):i("div",{style:{fontSize:13,opacity:.5},children:t("No image yet")})]})]}),i(j,{variant:"secondary",size:"md",className:"sf-blogsource-action",style:{marginTop:10},onClick:S,children:t("Edit category ✎")}),i("p",{className:"es-field-hint sf-hint-keep",children:t("Name, description and image come from {place}. Edit them there — this card updates to match.",{place:t("Storefront → Categories")})})]}):i("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a category from {place} to fill this card’s name, description and image. That content is edited in the category.",{place:t("Storefront → Categories")})})]})}export{_ as default};
@@ -1 +1 @@
1
- "use client";import{jsx as s,jsxs as l}from"react/jsx-runtime";import{Button as a}from"efficient-shell/ui";import{useEasel as u}from"efficient-easel/easel";import{useEaselHost as m}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{useProductCatalog as p}from"../../render/components/useProductCatalog.js";import{useGridSourceLock as f}from"./useGridSourceLock.js";function h(){const r=m(),n=p(),{selectedItem:c}=u(o=>o),d=c?.props?.code??"",e=(n??[]).find(o=>o.slug===d)??null,i=f()!==null;return!e||i?null:l("div",{className:"sf-blogsource",children:[s(a,{variant:"secondary",size:"sm",className:"sf-blogsource-action",onClick:()=>r.send("storefront-editor:open-product",{slug:e.slug,name:e.name}),children:t("Edit product ✎")}),s("p",{className:"es-field-hint sf-hint-keep",children:t("Price and details come from the product record — edit them in the Products database and this block updates to match. The name follows the product’s design name unless it’s overridden per storefront in {place}.",{place:t("Storefront → Catalog")})})]})}export{h as default};
1
+ "use client";import{jsx as s,jsxs as l}from"react/jsx-runtime";import{Button as a}from"efficient-shell/ui";import{useEasel as u}from"efficient-easel/easel";import{useEaselHost as m}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{useProductCatalog as p}from"../../render/components/useProductCatalog.js";import{useGridSourceLock as f}from"./useGridSourceLock.js";function h(){const r=m(),n=p(),{selectedItem:c}=u(o=>o),d=c?.props?.code??"",e=(n??[]).find(o=>o.slug===d)??null,i=f()!==null;return!e||i?null:l("div",{className:"sf-blogsource",children:[s(a,{variant:"secondary",size:"md",className:"sf-blogsource-action",onClick:()=>r.send("storefront-editor:open-product",{slug:e.slug,name:e.name}),children:t("Edit product ✎")}),s("p",{className:"es-field-hint sf-hint-keep",children:t("Price and details come from the product record — edit them in the Products database and this block updates to match. The name follows the product’s design name unless it’s overridden per storefront in {place}.",{place:t("Storefront → Catalog")})})]})}export{h as default};
@@ -1 +1 @@
1
- "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useContext as D,useEffect as R,useRef as N,useState as w}from"react";import{Button as v}from"efficient-shell/ui";import q from"efficient-web-builder/editor/components/SearchSelectField";import{ScreenDocumentContext as A}from"efficient-easel/screen/components/ScreenDocumentContext";import{loadStorefrontForms as H}from"./useStorefrontForms.js";import{onStorefrontFormsChanged as I}from"efficient-web-builder/format/lib/editor-events";import{openFormBuilder as J,requestFormEdit as G}from"efficient-web-builder/format/lib/editor-form-window";import{useEaselHost as O}from"efficient-easel/screen/lib/host";import{say as s,sayCount as W}from"efficient-web-builder/format/lib/editor-words";const P="__create-a-new-form__";function K({value:e,forms:o,loadFailed:i,emptyLabel:m}){const d=o??[],b=e?d.some(r=>r.slug===e):!0,f=o===null&&!i,g={value:"",label:f?s("Loading…"):i?s("Forms couldn’t be loaded"):m===void 0?s("No form yet"):s(m)},_=e&&!b?[{value:e,label:f||i?e:s("{slug} — no form with this name",{slug:e})}]:[],u=d.map(r=>({value:r.slug,label:r.is_active?r.title:s("{title} (switched off)",{title:r.title})})),k=f?[]:[{value:P,label:s("Create a new form")}];return[g,..._,...u,...k]}function M(e){return e===P?{action:"create"}:{action:"store",slug:e}}function Q({value:e,pickedId:o,forms:i}){if(!e||!o||i.some(d=>d.slug===e))return null;const m=i.find(d=>d.id===o);return m&&m.slug&&m.slug!==e?m.slug:null}function U(e){const o=[s("Goes to {place}",{place:s("Storefront → Forms")})],i=(e.notify_email??"").trim();return i&&o.push(s("Emails a copy to {email}",{email:i})),e.mailing_list_name&&o.push(e.subscribe_mode==="checkbox"?s("Joins the “{audience}” audience, but only when the consent box is ticked",{audience:e.mailing_list_name}):s("Joins the “{audience}” audience",{audience:e.mailing_list_name})),e.kind==="account_signup"&&o.push(e.signup_customer_type==="importer"?s("Creates a wholesale account"):s("Creates a retail account")),o}function V({value:e,onChange:o,label:i="Form",emptyLabel:m}){const d=O(),b=D(A),f=b?b.capabilities.hasForms:!0,[g,_]=w(null),[u,k]=w(!1),[r,E]=w(!1),[j,F]=w(!1),h=N(!0),x=N(e);x.current=e;const C=N(o);C.current=o;const S=N(null),y=(n=!1)=>H(n).then(c=>{if(h.current){_(c),k(!1);const p=Q({value:x.current,pickedId:S.current,forms:c});p&&C.current(p)}return c},()=>(h.current&&k(!0),[]));R(()=>(h.current=!0,f&&y(),()=>{h.current=!1}),[f]),R(()=>f?I(()=>{y(!0)}):void 0,[f]);const a=e?(g??[]).find(n=>n.slug===e)??null:null;a?S.current=a.id:e||(S.current=null);const z=!!e&&!a&&g!==null&&!u,L=K({value:e,forms:g,loadFailed:u,emptyLabel:m}),T=async()=>{E(!0),F(!1);try{const n=await G(d,{mode:"create"}),c=await y(!0);if(!h.current)return;if(n.status==="timeout"){F(!0);return}if(n.status!=="saved")return;const{form:p}=n;p.slug!==x.current&&C.current(p.slug),c.some(B=>B.id===p.id)||y(!0)}finally{h.current&&E(!1)}},$=n=>{const c=M(n);c.action==="create"?T():(F(!1),o(c.slug))};return f?l("div",{className:"sf-formpicker",children:[t(q,{label:i,options:L,fallback:"",value:e??"",onChange:$,placeholder:s("Search forms…")}),j&&t("p",{className:"sf-formsummary-warn",children:s("That didn’t come back — pick the form from the list, or try again.")}),a?l("div",{className:"sf-blogsource sf-formsummary",children:[l("div",{children:[t("div",{className:"sf-formsummary-caption",children:W("{n} field","{n} fields",a.fields.length)}),a.fields.length?t("ol",{className:"sf-formsummary-fields",children:a.fields.map((n,c)=>t("li",{children:n.label},n.key||`${n.label}-${c}`))}):t("p",{className:"es-field-hint sf-hint-keep",children:s("This form has no fields yet, so there is nothing for a visitor to fill in.")})]}),l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s("Where the answers go")}),t("ul",{className:"sf-formsummary-fields",children:U(a).map(n=>t("li",{children:n},n))})]}),!a.is_active&&t("p",{className:"sf-formsummary-warn",children:s("This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.",{place:s("Storefront → Forms")})}),l("div",{className:"sf-formsummary-actions",children:[t(v,{variant:"secondary",size:"sm",onClick:()=>J(d,a.id),children:s("Edit form ✎")}),t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),t("p",{className:"es-field-hint sf-hint-keep",children:s("The questions, the button text and the thank-you message all come from {place}. Edit them there — this section updates to match.",{place:s("Storefront → Forms")})})]}):l("div",{className:"sf-blogsource sf-formsummary",children:[u?l("p",{className:"es-field-hint sf-hint-keep",children:[s("This website’s forms couldn’t be loaded, so there is nothing to choose from yet."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]}):z&&t("p",{className:"sf-formsummary-warn",children:s("This section points at “{slug}”, and this website has no form with that name. Pick one from the list above, or leave it — nothing has been changed.",{slug:e??""})}),l("div",{className:"sf-formsummary-actions",children:[u&&t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{y(!0)},children:s("Try again")}),t(v,{variant:"secondary",size:"sm",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),!u&&t("p",{className:"es-field-hint sf-hint-keep",children:s("Pick a form to show here, or build a new one. Forms are made once in {place} and can be shown on any number of pages.",{place:s("Storefront → Forms")})})]})]}):t("div",{className:"sf-formpicker",children:t("div",{className:"sf-blogsource sf-formsummary",children:l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s(i)}),l("p",{className:"es-field-hint sf-hint-keep",children:[s("Forms aren’t available in this editor, so there is nothing to choose here."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]})]})})})}export{P as CREATE_SENTINEL,V as default,Q as followRenamedForm,U as formDestinationLines,K as formPickerOptions,M as resolveFormPick};
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useContext as D,useEffect as R,useRef as N,useState as w}from"react";import{Button as v}from"efficient-shell/ui";import q from"efficient-web-builder/editor/components/SearchSelectField";import{ScreenDocumentContext as A}from"efficient-easel/screen/components/ScreenDocumentContext";import{loadStorefrontForms as H}from"./useStorefrontForms.js";import{onStorefrontFormsChanged as I}from"efficient-web-builder/format/lib/editor-events";import{openFormBuilder as J,requestFormEdit as G}from"efficient-web-builder/format/lib/editor-form-window";import{useEaselHost as O}from"efficient-easel/screen/lib/host";import{say as s,sayCount as W}from"efficient-web-builder/format/lib/editor-words";const P="__create-a-new-form__";function K({value:e,forms:o,loadFailed:i,emptyLabel:m}){const d=o??[],b=e?d.some(r=>r.slug===e):!0,f=o===null&&!i,g={value:"",label:f?s("Loading…"):i?s("Forms couldn’t be loaded"):m===void 0?s("No form yet"):s(m)},_=e&&!b?[{value:e,label:f||i?e:s("{slug} — no form with this name",{slug:e})}]:[],u=d.map(r=>({value:r.slug,label:r.is_active?r.title:s("{title} (switched off)",{title:r.title})})),k=f?[]:[{value:P,label:s("Create a new form")}];return[g,..._,...u,...k]}function M(e){return e===P?{action:"create"}:{action:"store",slug:e}}function Q({value:e,pickedId:o,forms:i}){if(!e||!o||i.some(d=>d.slug===e))return null;const m=i.find(d=>d.id===o);return m&&m.slug&&m.slug!==e?m.slug:null}function U(e){const o=[s("Goes to {place}",{place:s("Storefront → Forms")})],i=(e.notify_email??"").trim();return i&&o.push(s("Emails a copy to {email}",{email:i})),e.mailing_list_name&&o.push(e.subscribe_mode==="checkbox"?s("Joins the “{audience}” audience, but only when the consent box is ticked",{audience:e.mailing_list_name}):s("Joins the “{audience}” audience",{audience:e.mailing_list_name})),e.kind==="account_signup"&&o.push(e.signup_customer_type==="importer"?s("Creates a wholesale account"):s("Creates a retail account")),o}function V({value:e,onChange:o,label:i="Form",emptyLabel:m}){const d=O(),b=D(A),f=b?b.capabilities.hasForms:!0,[g,_]=w(null),[u,k]=w(!1),[r,E]=w(!1),[j,F]=w(!1),h=N(!0),x=N(e);x.current=e;const C=N(o);C.current=o;const S=N(null),y=(n=!1)=>H(n).then(c=>{if(h.current){_(c),k(!1);const p=Q({value:x.current,pickedId:S.current,forms:c});p&&C.current(p)}return c},()=>(h.current&&k(!0),[]));R(()=>(h.current=!0,f&&y(),()=>{h.current=!1}),[f]),R(()=>f?I(()=>{y(!0)}):void 0,[f]);const a=e?(g??[]).find(n=>n.slug===e)??null:null;a?S.current=a.id:e||(S.current=null);const z=!!e&&!a&&g!==null&&!u,L=K({value:e,forms:g,loadFailed:u,emptyLabel:m}),T=async()=>{E(!0),F(!1);try{const n=await G(d,{mode:"create"}),c=await y(!0);if(!h.current)return;if(n.status==="timeout"){F(!0);return}if(n.status!=="saved")return;const{form:p}=n;p.slug!==x.current&&C.current(p.slug),c.some(B=>B.id===p.id)||y(!0)}finally{h.current&&E(!1)}},$=n=>{const c=M(n);c.action==="create"?T():(F(!1),o(c.slug))};return f?l("div",{className:"sf-formpicker",children:[t(q,{label:i,options:L,fallback:"",value:e??"",onChange:$,placeholder:s("Search forms…")}),j&&t("p",{className:"sf-formsummary-warn",children:s("That didn’t come back — pick the form from the list, or try again.")}),a?l("div",{className:"sf-blogsource sf-formsummary",children:[l("div",{children:[t("div",{className:"sf-formsummary-caption",children:W("{n} field","{n} fields",a.fields.length)}),a.fields.length?t("ol",{className:"sf-formsummary-fields",children:a.fields.map((n,c)=>t("li",{children:n.label},n.key||`${n.label}-${c}`))}):t("p",{className:"es-field-hint sf-hint-keep",children:s("This form has no fields yet, so there is nothing for a visitor to fill in.")})]}),l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s("Where the answers go")}),t("ul",{className:"sf-formsummary-fields",children:U(a).map(n=>t("li",{children:n},n))})]}),!a.is_active&&t("p",{className:"sf-formsummary-warn",children:s("This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.",{place:s("Storefront → Forms")})}),l("div",{className:"sf-formsummary-actions",children:[t(v,{variant:"secondary",size:"md",onClick:()=>J(d,a.id),children:s("Edit form ✎")}),t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),t("p",{className:"es-field-hint sf-hint-keep",children:s("The questions, the button text and the thank-you message all come from {place}. Edit them there — this section updates to match.",{place:s("Storefront → Forms")})})]}):l("div",{className:"sf-blogsource sf-formsummary",children:[u?l("p",{className:"es-field-hint sf-hint-keep",children:[s("This website’s forms couldn’t be loaded, so there is nothing to choose from yet."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]}):z&&t("p",{className:"sf-formsummary-warn",children:s("This section points at “{slug}”, and this website has no form with that name. Pick one from the list above, or leave it — nothing has been changed.",{slug:e??""})}),l("div",{className:"sf-formsummary-actions",children:[u&&t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{y(!0)},children:s("Try again")}),t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),!u&&t("p",{className:"es-field-hint sf-hint-keep",children:s("Pick a form to show here, or build a new one. Forms are made once in {place} and can be shown on any number of pages.",{place:s("Storefront → Forms")})})]})]}):t("div",{className:"sf-formpicker",children:t("div",{className:"sf-blogsource sf-formsummary",children:l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s(i)}),l("p",{className:"es-field-hint sf-hint-keep",children:[s("Forms aren’t available in this editor, so there is nothing to choose here."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]})]})})})}export{P as CREATE_SENTINEL,V as default,Q as followRenamedForm,U as formDestinationLines,K as formPickerOptions,M as resolveFormPick};
@@ -1,4 +1,4 @@
1
- import type { GalleryProductValue } from "../../render/lib/content/source-values.js";
1
+ import { type GalleryProductValue } from "../../render/lib/content/source-values.js";
2
2
  interface Props {
3
3
  value?: GalleryProductValue;
4
4
  onChange: (value: GalleryProductValue) => void;
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as u,Fragment as w}from"react/jsx-runtime";import{useEffect as F,useMemo as N,useState as S}from"react";import{IconButton as z,Tooltip as O}from"efficient-shell/ui";import{SettingsField as P}from"efficient-easel/panel";import{FieldSelect as y}from"efficient-easel/fields";import{BlockProductIcon as H,MediaIcon as W}from"efficient-easel/icons";import{loadProductCatalog as M}from"../../render/components/useProductCatalog.js";import{loadWheelMediaGroups as T}from"./useWheelMediaGroups.js";import C from"efficient-easel/screen/components/UiIcon";import{say as n}from"efficient-web-builder/format/lib/editor-words";function v({label:o,hidden:s,onToggle:i}){return u("div",{className:"sf-field-head",children:[r("span",{className:"sf-field-label sf-field-label--inline",children:o}),i&&r(O,{content:s?n("Show on the card"):n("Hide on the card"),children:r(z,{size:"sm","aria-pressed":!!s,"aria-label":s?n("Show on the card"):n("Hide on the card"),onClick:i,children:s?r(C,{name:"eye-off",size:14}):r(C,{name:"eye",size:14})})})]})}const j=[["photos","Photos"],["lifestyle","Lifestyle"],["accessories","Accessories"],["others","Others"],["videos","Videos"]];function $(o){switch(o){case"photos":return n("Photos");case"lifestyle":return n("Lifestyle");case"accessories":return n("Accessories");case"others":return n("Others");case"videos":return n("Videos");default:return String(o)}}function G(o){if(!o)return[];const s=[];for(const[i,a]of j)(o[i]??[]).forEach((l,h)=>{const d=(l.items??[]).filter(t=>t.kind==="image").map(t=>t.url);d.length!==0&&s.push({key:`${String(i)}:${h}`,label:l.name?`${$(i)} · ${l.name}`:$(i),name:l.name||a,images:d})});return s}function E(o){return o?o.categories&&o.categories.length?o.categories:o.process?[o.process]:[]:[]}function k(o,s,i){const a=s?.find(c=>c.slug===o.code)??null;if(!a)return{name:void 0,href:void 0,cover:void 0,photos:[],eyebrow:void 0};const l=o.group?i.find(c=>c.name===o.group):void 0,h=o.finish?a.finishes.find(c=>c.name===o.finish&&c.src):void 0;let d,t=[];return l&&l.images.length?(d=l.images[0],t=l.images.slice(1)):(d=h?.src||a.coverImage||void 0,t=[]),{name:a.name,href:`/wheels/${a.slug}`,cover:d,photos:t,eyebrow:o.group||void 0}}function B({value:o,onChange:s}){const i=N(()=>o??{},[o]),[a,l]=S(null),[h,d]=S([]),[t,c]=S(!1);F(()=>{let e=!1;return M().then(f=>{e||l(f)}),()=>{e=!0}},[]),F(()=>{let e=!1;if(!i.code){d([]);return}return c(!0),T(i.code).then(f=>{e||(d(G(f)),c(!1))}),()=>{e=!0}},[i.code]);const m=N(()=>a?.find(e=>e.slug===i.code)??null,[a,i.code]),x=N(()=>E(m),[m]),L=a===null;function g(e,f=h){const b={...i,...e};s({...b,...k(b,a,f)})}function I(e){if(!e){s({});return}const f=a?.find(b=>b.slug===e)??null;g({code:e,category:E(f)[0]??"",finish:"",group:""},[])}function p(e){s({...i,[e]:!i[e]})}return u("div",{children:[r(P,{label:n("Product"),icon:r(H,{}),children:r(y,{value:i.code??"",ariaLabel:n("Product"),readOnly:L,onChange:I,options:[{label:L?n("Loading…"):n("Select a product…"),value:""},...(a??[]).map(e=>({label:e.name,value:e.slug}))]})}),i.code&&u(w,{children:[u("div",{className:`sf-field${i.hideName?" is-hidden":""}`,children:[r(v,{label:n("Title / product"),hidden:i.hideName,onToggle:()=>p("hideName")}),u("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:[m?.name??i.name??"—",r("span",{style:{opacity:.6},children:n("(auto)")})]})]}),u("div",{className:`sf-field${i.hideProcess?" is-hidden":""}`,children:[r(v,{label:n("Category"),hidden:i.hideProcess,onToggle:()=>p("hideProcess")}),r(y,{value:i.category??"",ariaLabel:n("Category"),readOnly:x.length===0,onChange:e=>g({category:e}),options:x.length===0?[{label:n("No categories on this product"),value:""}]:x.map(e=>({label:e,value:e}))})]}),r(P,{label:n("Media group"),icon:r(W,{}),hint:n("Its name fills the Eyebrow below, and its photos become the card cover and lightbox. No group → the product’s cover image."),children:r(y,{value:i.group??"",ariaLabel:n("Media group"),readOnly:t,onChange:e=>g({group:e}),options:[{label:t?n("Loading…"):h.length===0?n("Cover image only (no media groups)"):n("Cover image only"),value:""},...h.map(e=>({label:e.label,value:e.name}))]})}),u("div",{className:`sf-field${i.hideEyebrow?" is-hidden":""}`,children:[r(v,{label:u(w,{children:[n("Eyebrow")," ",r("span",{style:{fontWeight:400,opacity:.6},children:n("(from media group)")})]}),hidden:i.hideEyebrow,onToggle:()=>p("hideEyebrow")}),r("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:i.group||"—"})]}),u("div",{className:`sf-field${i.hideFinish?" is-hidden":""}`,children:[r(v,{label:n("Finish"),hidden:i.hideFinish,onToggle:()=>p("hideFinish")}),r(y,{value:i.finish??"",ariaLabel:n("Finish"),onChange:e=>g({finish:e}),options:[{label:n("Default (the product’s default finish)"),value:""},...(m?.finishes??[]).map(e=>({label:e.src?e.name:n("{name} — no render",{name:e.name}),value:e.name,disabled:!e.src}))]})]})]})]})}export{B as default};
1
+ "use client";import{jsx as l,jsxs as h,Fragment as F}from"react/jsx-runtime";import{mediaGroupVehicle as O}from"../../render/lib/content/source-values.js";import{useEffect as P,useMemo as N,useState as S}from"react";import{IconButton as E,Tooltip as H}from"efficient-shell/ui";import{SettingsField as C}from"efficient-easel/panel";import{FieldSelect as v}from"efficient-easel/fields";import{BlockProductIcon as W,MediaIcon as G}from"efficient-easel/icons";import{loadProductCatalog as M}from"../../render/components/useProductCatalog.js";import{loadWheelMediaGroups as T}from"./useWheelMediaGroups.js";import $ from"efficient-easel/screen/components/UiIcon";import{say as n}from"efficient-web-builder/format/lib/editor-words";function y({label:o,hidden:a,onToggle:i}){return h("div",{className:"sf-field-head",children:[l("span",{className:"sf-field-label sf-field-label--inline",children:o}),i&&l(H,{content:a?n("Show on the card"):n("Hide on the card"),children:l(E,{size:"md","aria-pressed":!!a,"aria-label":a?n("Show on the card"):n("Hide on the card"),onClick:i,children:a?l($,{name:"eye-off",size:14}):l($,{name:"eye",size:14})})})]})}const V=[["photos","Photos"],["lifestyle","Lifestyle"],["accessories","Accessories"],["others","Others"],["videos","Videos"]];function w(o){switch(o){case"photos":return n("Photos");case"lifestyle":return n("Lifestyle");case"accessories":return n("Accessories");case"others":return n("Others");case"videos":return n("Videos");default:return String(o)}}function j(o){if(!o)return[];const a=[];for(const[i,r]of V)(o[i]??[]).forEach((s,u)=>{const d=(s.items??[]).filter(t=>t.kind==="image").map(t=>t.url);d.length!==0&&a.push({key:`${String(i)}:${u}`,label:s.name?`${w(i)} · ${s.name}`:w(i),name:s.name||r,vehicle:O(s),images:d})});return a}function I(o){return o?o.categories&&o.categories.length?o.categories:o.process?[o.process]:[]:[]}function k(o,a,i){const r=a?.find(c=>c.slug===o.code)??null;if(!r)return{name:void 0,href:void 0,cover:void 0,photos:[],vehicle:void 0,eyebrow:void 0};const s=o.group?i.find(c=>c.name===o.group):void 0,u=o.finish?r.finishes.find(c=>c.name===o.finish&&c.src):void 0;let d,t=[];return s&&s.images.length?(d=s.images[0],t=s.images.slice(1)):(d=u?.src||r.coverImage||void 0,t=[]),{name:r.name,href:`/wheels/${r.slug}`,cover:d,photos:t,vehicle:s?.vehicle||void 0,eyebrow:void 0}}function B({value:o,onChange:a}){const i=N(()=>o??{},[o]),[r,s]=S(null),[u,d]=S([]),[t,c]=S(!1);P(()=>{let e=!1;return M().then(f=>{e||s(f)}),()=>{e=!0}},[]),P(()=>{let e=!1;if(!i.code){d([]);return}return c(!0),T(i.code).then(f=>{e||(d(j(f)),c(!1))}),()=>{e=!0}},[i.code]);const m=N(()=>r?.find(e=>e.slug===i.code)??null,[r,i.code]),x=N(()=>I(m),[m]),L=r===null;function g(e,f=u){const b={...i,...e};a({...b,...k(b,r,f)})}function z(e){if(!e){a({});return}const f=r?.find(b=>b.slug===e)??null;g({code:e,category:I(f)[0]??"",finish:"",group:""},[])}function p(e){a({...i,[e]:!i[e]})}return h("div",{children:[l(C,{label:n("Product"),icon:l(W,{}),children:l(v,{value:i.code??"",ariaLabel:n("Product"),readOnly:L,onChange:z,options:[{label:L?n("Loading…"):n("Select a product…"),value:""},...(r??[]).map(e=>({label:e.name,value:e.slug}))]})}),i.code&&h(F,{children:[h("div",{className:`sf-field${i.hideName?" is-hidden":""}`,children:[l(y,{label:n("Title / product"),hidden:i.hideName,onToggle:()=>p("hideName")}),h("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:[m?.name??i.name??"—",l("span",{style:{opacity:.6},children:n("(auto)")})]})]}),h("div",{className:`sf-field${i.hideProcess?" is-hidden":""}`,children:[l(y,{label:n("Category"),hidden:i.hideProcess,onToggle:()=>p("hideProcess")}),l(v,{value:i.category??"",ariaLabel:n("Category"),readOnly:x.length===0,onChange:e=>g({category:e}),options:x.length===0?[{label:n("No categories on this product"),value:""}]:x.map(e=>({label:e,value:e}))})]}),l(C,{label:n("Media group"),icon:l(G,{}),hint:n("Its photos become the card cover and lightbox, and its car fills the Vehicle below. No group → the product’s cover image."),children:l(v,{value:i.group??"",ariaLabel:n("Media group"),readOnly:t,onChange:e=>g({group:e}),options:[{label:t?n("Loading…"):u.length===0?n("Cover image only (no media groups)"):n("Cover image only"),value:""},...u.map(e=>({label:e.label,value:e.name}))]})}),h("div",{className:`sf-field${i.hideEyebrow?" is-hidden":""}`,children:[l(y,{label:h(F,{children:[n("Vehicle")," ",l("span",{style:{fontWeight:400,opacity:.6},children:n("(from media group)")})]}),hidden:i.hideEyebrow,onToggle:()=>p("hideEyebrow")}),l("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:i.vehicle||"—"})]}),h("div",{className:`sf-field${i.hideFinish?" is-hidden":""}`,children:[l(y,{label:n("Finish"),hidden:i.hideFinish,onToggle:()=>p("hideFinish")}),l(v,{value:i.finish??"",ariaLabel:n("Finish"),onChange:e=>g({finish:e}),options:[{label:n("Default (the product’s default finish)"),value:""},...(m?.finishes??[]).map(e=>({label:e.src?e.name:n("{name} — no render",{name:e.name}),value:e.name,disabled:!e.src}))]})]})]})]})}export{B as default};
@@ -1,4 +1,4 @@
1
- import type { GalleryShowcaseSourceValue } from "../../render/lib/content/source-values.js";
1
+ import { type GalleryShowcaseSourceValue } from "../../render/lib/content/source-values.js";
2
2
  interface Props {
3
3
  value?: GalleryShowcaseSourceValue | null;
4
4
  onChange: (value: GalleryShowcaseSourceValue | null) => void;