efficient-storefront-blocks 0.81.0 → 0.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -1
  3. package/dist/chunks/{EditorPreviewCheckout-OIN6G67Y.js → EditorPreviewCheckout-XM22X3CX.js} +1 -1
  4. package/dist/chunks/{SiteEditorProvider-PXXYEDUI.js → SiteEditorProvider-5YHSOW4Y.js} +1 -1
  5. package/dist/chunks/{chunk-EEBM2KUO.js → chunk-47L7KHRW.js} +1 -1
  6. package/dist/chunks/{chunk-K3VUREAB.js → chunk-NSBGNY7R.js} +1 -1
  7. package/dist/chunks/{chunk-SXRBNRRO.js → chunk-VIPMT34C.js} +1 -1
  8. package/dist/chunks/{fitment-data-WHDQR3A2.js → fitment-data-SZWTO4WT.js} +1 -1
  9. package/dist/editor/components/CategoryProductFields.d.ts +4 -1
  10. package/dist/editor/components/CategoryProductFields.js +1 -1
  11. package/dist/editor/components/EditReviewsLink.d.ts +4 -0
  12. package/dist/editor/components/EditReviewsLink.js +1 -0
  13. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  14. package/dist/editor/components/ProductHeroSource.js +1 -1
  15. package/dist/editor/components/ProductPicker.js +1 -1
  16. package/dist/editor/components/ReviewsProductSource.d.ts +26 -0
  17. package/dist/editor/components/ReviewsProductSource.js +1 -0
  18. package/dist/editor/components/SpecTableSource.js +1 -1
  19. package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -1
  20. package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -1
  21. package/dist/editor/lib/storefront-editor-words.d.ts +4 -1
  22. package/dist/editor/lib/storefront-editor-words.js +1 -1
  23. package/dist/index.js +36 -28
  24. package/dist/render/app/globals.css +52 -3
  25. package/dist/render/components/ChatContext.js +1 -1
  26. package/dist/render/lib/document/blocks/text-part-shapes.json +0 -14
  27. package/dist/render/lib/sections/reviews.d.ts +7 -0
  28. package/dist/render/lib/sections/reviews.js +1 -1
  29. package/dist/words.d.ts +4 -1
  30. package/dist/words.js +1 -1
  31. package/package.json +3 -3
  32. package/dist/editor/lib/document/blocks/service/placeholders.d.ts +0 -1
  33. package/dist/editor/lib/document/blocks/service/placeholders.js +0 -1
  34. /package/dist/chunks/{chunk-5O3W5AUB.js → chunk-T2R5CZ2F.js} +0 -0
  35. /package/dist/chunks/{chunk-SXRBNRRO.js.LEGAL.txt → chunk-VIPMT34C.js.LEGAL.txt} +0 -0
  36. /package/dist/chunks/{chunk-PBQWSV3B.js → chunk-VVWX2P2N.js} +0 -0
@@ -1 +1 @@
1
- import{a as d,b as p,c as S,p as b,r as T}from"./chunk-EEBM2KUO.js";import"./chunk-PBQWSV3B.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-47L7KHRW.js";import"./chunk-VVWX2P2N.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};
@@ -18,5 +18,8 @@ export interface CategoryProductFieldsProps extends CategoryFieldProps {
18
18
  value: string;
19
19
  }[];
20
20
  productReadOnly?: boolean;
21
+ categoryHidden?: boolean;
22
+ showPicked?: boolean;
23
+ allProducts: WheelSummary[];
21
24
  }
22
- export default function CategoryProductFields({ products, product, onProductChange, emptyLabel, extraOptions, productReadOnly, ...categoryRow }: CategoryProductFieldsProps): import("react").JSX.Element;
25
+ export default function CategoryProductFields({ products, product, onProductChange, emptyLabel, extraOptions, productReadOnly, categoryHidden, showPicked, allProducts, ...categoryRow }: CategoryProductFieldsProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as d,jsxs as p}from"react/jsx-runtime";import{SettingsField as s}from"efficient-easel/panel";import{FieldSelect as c}from"efficient-easel/fields";import{BlockProductIcon as g,CategoryIcon as f}from"efficient-easel/icons";import{ALL_CATEGORY as b}from"./useCategoryFilter.js";import{say as a}from"efficient-web-builder/format/lib/editor-words";function y({category:l,onChange:t,categoryNames:n,readOnly:i,label:o=a("Category"),allLabel:u=a("All products")}){return e(s,{label:o,icon:e(f,{}),children:e(c,{value:l,ariaLabel:o,onChange:t,readOnly:i,options:[{label:u,value:b},...n.map(r=>({label:r,value:r}))]})})}function C({products:l,product:t,onProductChange:n,emptyLabel:i,extraOptions:o=[],productReadOnly:u,...r}){return p(d,{children:[e(y,{...r}),e(s,{label:a("Product"),icon:e(g,{}),children:e(c,{value:t,ariaLabel:a("Product"),onChange:n,readOnly:u,options:[{label:i,value:""},...o,...l.map(m=>({label:m.name,value:m.slug}))]})})]})}export{y as CategoryField,C as default};
1
+ "use client";import{jsx as e,jsxs as u,Fragment as k}from"react/jsx-runtime";import{SettingsField as p}from"efficient-easel/panel";import{FieldSelect as g}from"efficient-easel/fields";import{BlockProductIcon as x,CategoryIcon as C}from"efficient-easel/icons";import{ALL_CATEGORY as F}from"./useCategoryFilter.js";import{say as s}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as w}from"efficient-web-builder/format/lib/sized-image";function I({category:n,onChange:a,categoryNames:d,readOnly:c,label:i=s("Category"),allLabel:m=s("All products")}){return e(p,{label:i,icon:e(C,{}),children:e(g,{value:n,ariaLabel:i,onChange:a,readOnly:c,options:[{label:m,value:F},...d.map(o=>({label:o,value:o}))]})})}function j({products:n,product:a,onProductChange:d,emptyLabel:c,extraOptions:i=[],productReadOnly:m,categoryHidden:o,showPicked:h,allProducts:v,...f}){const r=a?v.find(l=>l.slug===a)??null:null,b=r!==null&&(n.some(l=>l.slug===a)||i.some(l=>l.value===a)),y=r!==null&&!b?[{label:r.name,value:r.slug}]:[],t=h?r:null;return u(k,{children:[o?null:e(I,{...f}),e(p,{label:s("Product"),icon:e(x,{}),children:e(g,{value:a,ariaLabel:s("Product"),onChange:d,readOnly:m,options:[{label:c,value:""},...i,...y,...n.map(l=>({label:l.name,value:l.slug}))]})}),t?u("div",{"data-picked-product":"",style:{display:"flex",alignItems:"center",gap:"var(--space-8)",marginTop:"var(--space-8)"},children:[e("span",{"aria-hidden":"true",style:{flex:"none",width:"var(--space-32)",height:"var(--space-32)",overflow:"hidden",borderRadius:"var(--es-field-radius)",background:"var(--es-track-bg)"},children:t.coverImage?e("img",{...w(t.coverImage,{fallbackWidth:64,maxWidth:128}),sizes:"32px",alt:"",loading:"lazy",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"}}):null}),e("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name})]}):null]})}export{I as CategoryField,j as default};
@@ -0,0 +1,4 @@
1
+ export declare const OPEN_REVIEWS: readonly ["storefront-editor:open-site-section", {
2
+ readonly section: "reviews";
3
+ }];
4
+ export default function EditReviewsLink(): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import{Button as s}from"efficient-shell/ui";import{useEaselHost as i}from"efficient-easel/screen/lib/host";import{say as r}from"efficient-web-builder/format/lib/editor-words";const t=["storefront-editor:open-site-section",{section:"reviews"}];function n(){const o=i();return e(s,{variant:"link",size:"sm",onClick:()=>o.send(t[0],t[1]),children:r("Edit in Reviews →")})}export{t as OPEN_REVIEWS,n as default};
@@ -1 +1 @@
1
- "use client";import{jsx as G,jsxs as J}from"react/jsx-runtime";import{mediaGroupVehicle as K}from"../../render/lib/content/source-values.js";import{useEffect as R,useMemo as Q,useRef as k,useState as b}from"react";import{storefrontAdmin as U}from"../../render/lib/api/index.js";import{useEaselHost as X}from"efficient-easel/screen/lib/host";import{getEditorToken as Y}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as Z}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as F}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as v}from"./useStorefrontCategories.js";import{useCategoryFilter as ee}from"./useCategoryFilter.js";import te from"./CategoryProductFields.js";import{snapshotChanged as re}from"efficient-web-builder/editor/components/useSnapshotSource";import se from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as H}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function oe(e,r){return r===a?e:e.filter(o=>o.process===r)}function m(e,r){return e.map(o=>({image:o.items[0]?.url,photos:o.items.map(s=>({src:s.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:K(o),name:r.name,meta:o.finish})).filter(o=>!!o.image)}function T(e){const r=Y();return r?U.getWheelDetail(r,e,{siteId:Z()}):Promise.reject(new Error("editor not authenticated"))}async function ne(e){const r=await T(e),o={slug:r.slug,name:r.name,process:r.process},s=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...o,vehicleCards:m(s.lifestyle??[],o),wheelCards:m(s.photos??[],o),othersCards:m(s.others??[],o)}}async function ae(e,r){const o=await Promise.all(e.map(i=>T(i.slug).catch(()=>null))),s=[],p=[],h=[];for(const i of o){if(!i)continue;const l={slug:i.slug,name:i.name,process:i.process},d=i.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};s.push(...m(d.lifestyle??[],l)),p.push(...m(d.photos??[],l)),h.push(...m(d.others??[],l))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:s,wheelCards:p,othersCards:h,category:r}}function ie({value:e,onChange:r}){const o=X(),[s,p]=b(null),[h,i]=b(null),[l,d]=b(!1),[L,P]=b(!1),u=k(!0),g=k(e);g.current=e;const O=k(r);O.current=r;const x=(t,f=!1)=>{d(!0),f||P(!1),t().then(B=>{u.current&&(re(B,g.current)&&O.current(B),P(!1))}).catch(()=>{u.current&&!f&&P(!0)}).finally(()=>{u.current&&d(!1)})},A=(t,f=!1)=>x(()=>ne(t),f),y=(t,f=!1)=>x(()=>ae(oe(s??[],t),t),f);R(()=>(u.current=!0,F().then(t=>{u.current&&p(t)}),v().then(t=>{u.current&&i(t)}),()=>{u.current=!1}),[]);const C=k(!1);R(()=>{if(C.current)return;const t=g.current;if(!t?.slug){C.current=!0;return}if(t.slug===a){if(s===null)return;C.current=!0,y(t.category??a,!0)}else C.current=!0,A(t.slug,!0)},[s]);const c=e?.slug===a,w=Q(()=>s&&e?.slug&&!c?s.find(t=>t.slug===e.slug)??null:null,[s,e?.slug,c]),{category:N,setCategory:E,categoryNames:W,filtered:D}=ee(s,h);R(()=>{c?e?.category&&E(e.category):w?.process&&E(w.process)},[w,c,e?.category]);const S=s===null,_=!!e?.slug&&!c&&s!==null&&!w,I=t=>{if(!t){r(null);return}if(t===a){y(N);return}A(t)},M=t=>{E(t),g.current?.slug===a&&y(t)},V=()=>{e?.slug&&(F(!0).then(t=>{u.current&&p(t)}),c?y(e.category??a):A(e.slug))},$=()=>{e?.slug&&o.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),q=L?"error":l?"loading":"idle",z=L?n("Couldn’t reach the product catalog."):l?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):c?H("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):H("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return J("div",{children:[G(te,{category:N,onChange:M,categoryNames:W,readOnly:S,products:D,product:e?.slug??"",onProductChange:I,productReadOnly:S||l,emptyLabel:S?n("Loading…"):n("None (write the cards yourself)"),extraOptions:[{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]]}),e?.slug?G(se,{status:q,statusText:z,onRefresh:V,busy:l,edit:c?void 0:{label:n("Edit product ✎"),onClick:$},hint:c?n("Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."):n("Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: its name is the eyebrow, its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours.")}):G("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("Pick a product — or All products — to build the galleries from media groups, or keep “None” to author the cards yourself.")})]})}export{ie as default};
1
+ "use client";import{jsx as G,jsxs as J}from"react/jsx-runtime";import{mediaGroupVehicle as K}from"../../render/lib/content/source-values.js";import{useEffect as R,useMemo as Q,useRef as k,useState as b}from"react";import{storefrontAdmin as U}from"../../render/lib/api/index.js";import{useEaselHost as X}from"efficient-easel/screen/lib/host";import{getEditorToken as Y}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as Z}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as F}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as v}from"./useStorefrontCategories.js";import{useCategoryFilter as ee}from"./useCategoryFilter.js";import te from"./CategoryProductFields.js";import{snapshotChanged as re}from"efficient-web-builder/editor/components/useSnapshotSource";import se from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as H}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function oe(e,r){return r===a?e:e.filter(o=>o.process===r)}function m(e,r){return e.map(o=>({image:o.items[0]?.url,photos:o.items.map(s=>({src:s.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:K(o),name:r.name,meta:o.finish})).filter(o=>!!o.image)}function T(e){const r=Y();return r?U.getWheelDetail(r,e,{siteId:Z()}):Promise.reject(new Error("editor not authenticated"))}async function ne(e){const r=await T(e),o={slug:r.slug,name:r.name,process:r.process},s=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...o,vehicleCards:m(s.lifestyle??[],o),wheelCards:m(s.photos??[],o),othersCards:m(s.others??[],o)}}async function ae(e,r){const o=await Promise.all(e.map(i=>T(i.slug).catch(()=>null))),s=[],p=[],h=[];for(const i of o){if(!i)continue;const l={slug:i.slug,name:i.name,process:i.process},d=i.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};s.push(...m(d.lifestyle??[],l)),p.push(...m(d.photos??[],l)),h.push(...m(d.others??[],l))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:s,wheelCards:p,othersCards:h,category:r}}function ie({value:e,onChange:r}){const o=X(),[s,p]=b(null),[h,i]=b(null),[l,d]=b(!1),[L,P]=b(!1),u=k(!0),g=k(e);g.current=e;const O=k(r);O.current=r;const x=(t,f=!1)=>{d(!0),f||P(!1),t().then(B=>{u.current&&(re(B,g.current)&&O.current(B),P(!1))}).catch(()=>{u.current&&!f&&P(!0)}).finally(()=>{u.current&&d(!1)})},A=(t,f=!1)=>x(()=>ne(t),f),y=(t,f=!1)=>x(()=>ae(oe(s??[],t),t),f);R(()=>(u.current=!0,F().then(t=>{u.current&&p(t)}),v().then(t=>{u.current&&i(t)}),()=>{u.current=!1}),[]);const C=k(!1);R(()=>{if(C.current)return;const t=g.current;if(!t?.slug){C.current=!0;return}if(t.slug===a){if(s===null)return;C.current=!0,y(t.category??a,!0)}else C.current=!0,A(t.slug,!0)},[s]);const c=e?.slug===a,w=Q(()=>s&&e?.slug&&!c?s.find(t=>t.slug===e.slug)??null:null,[s,e?.slug,c]),{category:N,setCategory:E,categoryNames:W,filtered:D}=ee(s,h);R(()=>{c?e?.category&&E(e.category):w?.process&&E(w.process)},[w,c,e?.category]);const S=s===null,_=!!e?.slug&&!c&&s!==null&&!w,I=t=>{if(!t){r(null);return}if(t===a){y(N);return}A(t)},M=t=>{E(t),g.current?.slug===a&&y(t)},V=()=>{e?.slug&&(F(!0).then(t=>{u.current&&p(t)}),c?y(e.category??a):A(e.slug))},$=()=>{e?.slug&&o.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),q=L?"error":l?"loading":"idle",z=L?n("Couldn’t reach the product catalog."):l?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):c?H("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):H("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return J("div",{children:[G(te,{category:N,onChange:M,categoryNames:W,readOnly:S,products:D,allProducts:s??[],product:e?.slug??"",onProductChange:I,productReadOnly:S||l,emptyLabel:S?n("Loading…"):n("None (write the cards yourself)"),extraOptions:[{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]]}),e?.slug?G(se,{status:q,statusText:z,onRefresh:V,busy:l,edit:c?void 0:{label:n("Edit product ✎"),onClick:$},hint:c?n("Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."):n("Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: its name is the eyebrow, its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours.")}):G("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("Pick a product — or All products — to build the galleries from media groups, or keep “None” to author the cards yourself.")})]})}export{ie as default};
@@ -1 +1 @@
1
- "use client";import{jsx as y,jsxs as I}from"react/jsx-runtime";import{useEffect as $,useMemo as C,useState as z}from"react";import{useEaselHost as N}from"efficient-easel/screen/lib/host";import{formatPrice as w}from"../../render/lib/commerce.js";import{resolveWheelPrice as K}from"../../render/lib/wheels/price-display.js";import{isRenderableFinish as O}from"../../render/lib/wheels/renderable-finishes.js";import{loadUnifiedProductCatalog as W}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as _}from"./useStorefrontCategories.js";import{filterByCategory as M,useCategoryFilter as U}from"./useCategoryFilter.js";import{CategoryField as V}from"./CategoryProductFields.js";import{useSnapshotSource as q}from"efficient-web-builder/editor/components/useSnapshotSource";import{useCurrency as D}from"../../render/components/CurrencyContext.js";import G from"efficient-web-builder/editor/components/SearchSelectField";import J from"efficient-web-builder/editor/components/SourceStatus";import{say as s,sayCount as Q}from"efficient-web-builder/format/lib/editor-words";const S=e=>e.kind==="tyre"?"tyre":"alloy-wheel",u=e=>`${e.kind}:${e.slug}`;function P(e){return e.kind==="tyre"?{kind:"tyre",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.brand??"",image:e.coverImage??null,finishes:[],prices:e.prices,href:`/tyres/${e.slug}`}:{kind:"wheel",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.process,image:e.coverImage??null,finishes:e.finishes.filter(O).map(r=>({name:r.name,color:r.color,src:r.src})),prices:e.prices,href:`/wheels/${e.slug}`}}function x(e,r){const n=S(r);return e.find(o=>o.kind===n&&o.slug===r.slug)}function X(e){return L(e)?s("Category — wheels only"):s("Category")}const L=e=>!!(e?.some(r=>r.kind==="tyre")&&e.some(r=>r.kind==="alloy-wheel")),Y=e=>Q("{n} size","{n} sizes",e);function Z({rows:e,category:r,value:n,loading:o,currency:i}){const a=e??[],c=a.filter(t=>t.kind==="alloy-wheel"),m=a.filter(t=>t.kind==="tyre"),p=c.length>0&&m.length>0,k={value:"",label:o?s("Loading…"):s("Pick a product…")},h=n&&!(e!==null&&x(e,n))?[{value:u({kind:S(n),slug:n.slug}),label:o?n.name:s("{name} (unavailable)",{name:n.name})}]:[],d=M(c,r).map(t=>{const g=K(t.prices[i],t.msrpPrices?.[i]);return{value:u({kind:"alloy-wheel",slug:t.slug}),label:t.name,...p?{group:s("Wheels")}:{},thumb:t.coverImage??null,...g.priced?{meta:w(g.unit,i)}:{}}}),b=m.map(t=>({value:u(t),label:t.name,...p?{group:s("Tyres")}:{},thumb:t.coverImage??null,meta:Y(t.variantCount)}));return[k,...h,...d,...b]}function v({value:e,onChange:r}){const n=N(),{rows:o,loading:i,refreshing:a,errored:c,refresh:m}=q({load:W,resolve:x,snapshot:P,value:e,onChange:r}),[p,k]=z(null);$(()=>{let l=!1;return _().then(f=>{l||k(f)}),()=>{l=!0}},[]);const{currency:h}=D(),d=C(()=>o&&e?x(o,e)??null:null,[o,e]),b=C(()=>(o??[]).filter(l=>l.kind==="alloy-wheel"),[o]),{category:t,setCategory:g,categoryNames:R}=U(b,p,d?.kind==="alloy-wheel"?d:null),T=!!e?.slug&&o!==null&&!d,E=C(()=>Z({rows:o,category:t,value:e,loading:i,currency:h}),[o,t,e,i,h]),j=l=>{if(!l){r(null);return}const f=(o??[]).find(H=>u(H)===l);f&&r(P(f))},A=()=>{e?.slug&&n.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},B=c?"error":a?"loading":"idle",F=c?s("Couldn’t reach the product catalog."):a?s("Syncing from the catalog…"):T?s("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):s("Linked to “{name}” · title, description, category, price & image follow the product.",{name:e?.name??""});return I("div",{children:[y(G,{label:"Product",options:E,fallback:"",value:e?u({kind:S(e),slug:e.slug}):"",onChange:j,placeholder:"Search products…"}),y(V,{label:X(o),allLabel:L(o)?s("All wheel categories"):s("All products"),category:t,onChange:g,categoryNames:R,readOnly:i}),e?.slug?y(J,{status:B,statusText:F,onRefresh:m,busy:a,edit:{label:s("Edit product ✎"),onClick:A},hint:s("The whole hero comes from the product record — title, price, pictures, options and Add to Cart. Edit the product in the Products database and this hero updates to match.")}):y("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:s("This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.")})]})}export{v as default,X as heroCategoryLabel,Z as heroPickerOptions,x as heroResolve,P as heroSnapshot};
1
+ "use client";import{jsx as b,jsxs as H}from"react/jsx-runtime";import{useEffect as I,useMemo as L,useState as $}from"react";import{useEaselHost as z}from"efficient-easel/screen/lib/host";import{formatPrice as N}from"../../render/lib/commerce.js";import{resolveWheelPrice as K}from"../../render/lib/wheels/price-display.js";import{isRenderableFinish as O}from"../../render/lib/wheels/renderable-finishes.js";import{loadUnifiedProductCatalog as _}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as w}from"./useStorefrontCategories.js";import{filterByCategory as M,useCategoryFilter as U}from"./useCategoryFilter.js";import{CategoryField as V}from"./CategoryProductFields.js";import{useSnapshotSource as q}from"efficient-web-builder/editor/components/useSnapshotSource";import{useCurrency as D}from"../../render/components/CurrencyContext.js";import G from"efficient-web-builder/editor/components/SearchSelectField";import J from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as Q}from"efficient-web-builder/format/lib/editor-words";const R=e=>e.kind==="tyre"?"tyre":"alloy-wheel",m=e=>`${e.kind}:${e.slug}`;function T(e){return e.kind==="tyre"?{kind:"tyre",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.brand??"",image:e.coverImage??null,finishes:[],prices:e.prices,href:`/tyres/${e.slug}`}:{kind:"wheel",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.process,image:e.coverImage??null,finishes:e.finishes.filter(O).map(o=>({name:o.name,color:o.color,src:o.src})),prices:e.prices,href:`/wheels/${e.slug}`}}function C(e,o){const s=R(o);return e.find(t=>t.kind===s&&t.slug===o.slug)}function X(e){return E(e)?n("Category — wheels only"):n("Category")}const E=e=>!!(e?.some(o=>o.kind==="tyre")&&e.some(o=>o.kind==="alloy-wheel")),Y=e=>Q("{n} size","{n} sizes",e);function Z({rows:e,category:o,value:s,loading:t,currency:l}){const a=e??[],u=a.filter(r=>r.kind==="alloy-wheel"),p=a.filter(r=>r.kind==="tyre"),h=u.length>0&&p.length>0,S={value:"",label:t?n("Loading…"):n("Pick a product…")},g=s&&!(e!==null&&C(e,s))?[{value:m({kind:R(s),slug:s.slug}),label:t?s.name:n("{name} (unavailable)",{name:s.name})}]:[],c=M(u,o),d=s&&e!==null?C(e,s):void 0,x=[...d&&d.kind==="alloy-wheel"&&!c.includes(d)?[d]:[],...c].map(r=>{const y=K(r.prices[l],r.msrpPrices?.[l]);return{value:m({kind:"alloy-wheel",slug:r.slug}),label:r.name,...h?{group:n("Wheels")}:{},thumb:r.coverImage??null,...y.priced?{meta:N(y.unit,l)}:{}}}),P=p.map(r=>({value:m(r),label:r.name,...h?{group:n("Tyres")}:{},thumb:r.coverImage??null,meta:Y(r.variantCount)}));return[S,...g,...x,...P]}function v({value:e,onChange:o}){const s=z(),{rows:t,loading:l,refreshing:a,errored:u,refresh:p}=q({load:_,resolve:C,snapshot:T,value:e,onChange:o}),[h,S]=$(null);I(()=>{let i=!1;return w().then(k=>{i||S(k)}),()=>{i=!0}},[]);const{currency:g}=D(),c=L(()=>t&&e?C(t,e)??null:null,[t,e]),d=L(()=>(t??[]).filter(i=>i.kind==="alloy-wheel"),[t]),{category:f,setCategory:x,categoryNames:P}=U(d,h,c?.kind==="alloy-wheel"?c:null),r=!!e?.slug&&t!==null&&!c,y=L(()=>Z({rows:t,category:f,value:e,loading:l,currency:g}),[t,f,e,l,g]),W=i=>{if(!i){o(null);return}const k=(t??[]).find(F=>m(F)===i);k&&o(T(k))},j=()=>{e?.slug&&s.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},A=u?"error":a?"loading":"idle",B=u?n("Couldn’t reach the product catalog."):a?n("Syncing from the catalog…"):r?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):n("Linked to “{name}” · title, description, category, price & image follow the product.",{name:e?.name??""});return H("div",{children:[b(G,{label:"Product",options:y,fallback:"",value:e?m({kind:R(e),slug:e.slug}):"",onChange:W,placeholder:"Search products…"}),b(V,{label:X(t),allLabel:E(t)?n("All wheel categories"):n("All products"),category:f,onChange:x,categoryNames:P,readOnly:l}),e?.slug?b(J,{status:A,statusText:B,onRefresh:p,busy:a,edit:{label:n("Edit product ✎"),onClick:j},hint:n("The whole hero comes from the product record — title, price, pictures, options and Add to Cart. Edit the product in the Products database and this hero updates to match.")}):b("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.")})]})}export{v as default,X as heroCategoryLabel,Z as heroPickerOptions,C as heroResolve,T as heroSnapshot};
@@ -1 +1 @@
1
- "use client";import{jsx as c,jsxs as C}from"react/jsx-runtime";import{useEffect as N,useMemo as P,useState as d}from"react";import{loadProductCatalog as x}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as j}from"./useCategoryFilter.js";import S from"./CategoryProductFields.js";import{useGridSourceLock as L}from"./useGridSourceLock.js";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{sayWith as T}from"../lib/say-with.js";function W({value:r,onChange:u}){const[e,m]=d(null),[f,g]=d(null);N(()=>{let t=!1;return x().then(n=>{t||m(n)}),b().then(n=>{t||g(n)}),()=>{t=!0}},[]);const h=P(()=>e&&r?e.find(t=>t.slug===r)??null:null,[e,r]),{category:p,setCategory:y,categoryNames:k,filtered:a}=j(e,f,h),l=e===null,i=L(),s=i!==null;return C("div",{children:[s&&c("p",{className:"es-field-hint sf-hint-keep",style:{marginBottom:8},children:T(o("Disabled because this grid’s {source} is set to “{name}”. The grid fills itself from that source automatically. To pick wheels here, set {source} back to “Manual”.",{name:i??""}),{source:c("strong",{children:o("Product content")})})}),c("div",{className:s?"sf-locked":void 0,children:c(S,{category:p,onChange:y,categoryNames:k,readOnly:l||s,products:a,product:r??"",onProductChange:u,productReadOnly:l||s,emptyLabel:l?o("Loading…"):a.length===0?o("No products in this category"):o("Select a product…")})})]})}export{W as default};
1
+ "use client";import{jsx as l,jsxs as C}from"react/jsx-runtime";import{useEffect as P,useMemo as N,useState as d}from"react";import{loadProductCatalog as x}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as j}from"./useCategoryFilter.js";import S from"./CategoryProductFields.js";import{useGridSourceLock as L}from"./useGridSourceLock.js";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{sayWith as T}from"../lib/say-with.js";function W({value:r,onChange:u}){const[e,m]=d(null),[f,g]=d(null);P(()=>{let t=!1;return x().then(a=>{t||m(a)}),b().then(a=>{t||g(a)}),()=>{t=!0}},[]);const h=N(()=>e&&r?e.find(t=>t.slug===r)??null:null,[e,r]),{category:p,setCategory:y,categoryNames:k,filtered:n}=j(e,f,h),c=e===null,i=L(),s=i!==null;return C("div",{children:[s&&l("p",{className:"es-field-hint sf-hint-keep",style:{marginBottom:8},children:T(o("Disabled because this grid’s {source} is set to “{name}”. The grid fills itself from that source automatically. To pick wheels here, set {source} back to “Manual”.",{name:i??""}),{source:l("strong",{children:o("Product content")})})}),l("div",{className:s?"sf-locked":void 0,children:l(S,{category:p,onChange:y,categoryNames:k,readOnly:c||s,products:n,allProducts:e??[],product:r??"",onProductChange:u,productReadOnly:c||s,emptyLabel:c?o("Loading…"):n.length===0?o("No products in this category"):o("Select a product…")})})]})}export{W as default};
@@ -0,0 +1,26 @@
1
+ import { type AdminStorefrontCategory, type WheelSummary } from "../../render/lib/api/index.js";
2
+ import { type ReviewsSourceOptions } from "../../render/lib/sections/reviews.js";
3
+ export declare const REVIEWS_PRODUCT_CHOICE: {
4
+ readonly all: "";
5
+ readonly this: "@this";
6
+ readonly pick: "@pick";
7
+ readonly kept: "@kept";
8
+ };
9
+ export declare function reviewsProductChoice(value: ReviewsSourceOptions | null | undefined, wheels: readonly WheelSummary[] | null, onProductPage: boolean): string;
10
+ export declare function reviewsOnProductPage(appState: unknown): boolean;
11
+ export declare function reviewsSourceOptionsFor(choice: string, wheels: readonly WheelSummary[] | null, value: ReviewsSourceOptions | null | undefined): ReviewsSourceOptions;
12
+ interface RowsProps {
13
+ value: ReviewsSourceOptions | null | undefined;
14
+ onChange: (value: ReviewsSourceOptions) => void;
15
+ wheels: WheelSummary[] | null;
16
+ categories: AdminStorefrontCategory[] | null;
17
+ onProductPage: boolean;
18
+ loading: boolean;
19
+ }
20
+ export declare function ReviewsProductRows({ value, onChange, wheels, categories, onProductPage, loading }: RowsProps): import("react").JSX.Element;
21
+ interface Props {
22
+ value?: ReviewsSourceOptions | null;
23
+ onChange: (value: ReviewsSourceOptions) => void;
24
+ }
25
+ export default function ReviewsProductSource({ value, onChange }: Props): import("react").JSX.Element;
26
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as p,jsxs as _}from"react/jsx-runtime";import{useEffect as x,useMemo as g,useState as v}from"react";import{useProductCatalog as S}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as D}from"./useCategoryFilter.js";import F from"./CategoryProductFields.js";import{useEasel as N}from"efficient-easel/easel";import{isEditorOnDynamicPage as T}from"efficient-web-builder/format/lib/document/editor-page-context";import{editorPageDrawsOtherRecord as j}from"../../render/lib/document/current-record.js";import{say as u}from"efficient-web-builder/format/lib/editor-words";import{REVIEWS_OF_CHOSEN_PRODUCT as f,REVIEWS_OF_EVERY_PRODUCT as C}from"../../render/lib/sections/reviews.js";const o={all:"",this:"@this",pick:"@pick",kept:"@kept"},a=e=>typeof e=="string"?e.trim():"",m=e=>(e??[]).filter(s=>a(s.designCode)!=="");function I(e,s,n){const l=e?.product;if(l===C)return o.all;const c=a(e?.designCode);if(l===f||!n&&c!==""){if(c==="")return o.pick;const r=m(s).find(t=>a(t.designCode)===c);return r?r.slug:o.kept}return n?o.this:o.all}function V(e){return T()&&!j({appState:e})}function W(e,s,n){const{product:l,designCode:c,...r}=n??{};if(e===o.kept)return{...n??{}};if(e===o.all)return{...r,product:C};if(e===o.this)return r;const t=e===o.pick?null:m(s).find(i=>i.slug===e);return t?{...r,product:f,designCode:a(t.designCode)}:{...r,product:f}}function H(e,s,n){return[...e?[{label:u("This product"),value:o.this}]:[],{label:u("Choose a product"),value:o.pick},...s!==null?[{label:n?s:u("{name} (unavailable)",{name:s}),value:o.kept}]:[]]}function L({value:e,onChange:s,wheels:n,categories:l,onProductPage:c,loading:r}){const t=g(()=>m(n),[n]),i=I(e,t,c),h=g(()=>t.find(d=>d.slug===i)??null,[t,i]),{category:y,setCategory:w,categoryNames:P,filtered:O}=D(t,l,h),k=i!==o.all&&i!==o.this,E=i===o.kept,R=a(e?.designCode);return _("div",{children:[p(F,{category:y,onChange:w,categoryNames:P,allLabel:u("All categories"),categoryHidden:!k,readOnly:r,products:O,allProducts:t,product:i,onProductChange:d=>s(W(d,t,e)),productReadOnly:r,emptyLabel:r?u("Loading…"):u("All products"),extraOptions:H(c,E?R:null,r),showPicked:!0}),i===o.pick&&!r?p("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:"var(--space-8)"},children:u("No product chosen yet, so reviews of every product show.")}):null]})}function U({value:e,onChange:s}){const n=N(t=>V(t.appState)),l=S(),[c,r]=v(null);return x(()=>{let t=!1;return b().then(i=>{t||r(i)}),()=>{t=!0}},[]),p(L,{value:e,onChange:s,wheels:l,categories:c,onProductPage:n,loading:l===null})}export{o as REVIEWS_PRODUCT_CHOICE,L as ReviewsProductRows,U as default,V as reviewsOnProductPage,I as reviewsProductChoice,W as reviewsSourceOptionsFor};
@@ -1 +1 @@
1
- "use client";import{jsx as c,jsxs as N}from"react/jsx-runtime";import{useEffect as j,useMemo as T,useState as F}from"react";import{resolveMedia as O}from"efficient-web-builder/render/lib/media";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{loadProductCatalog as H}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as M}from"./useStorefrontCategories.js";import{useCategoryFilter as R}from"./useCategoryFilter.js";import _ from"./CategoryProductFields.js";import{useSnapshotSource as z}from"efficient-web-builder/editor/components/useSnapshotSource";import W from"efficient-web-builder/editor/components/SourceStatus";import{say as t}from"efficient-web-builder/format/lib/editor-words";function p(e){return{slug:e.slug,name:e.name,process:e.process,spokes:e.spokes,mesh:e.mesh,spec:e.spec,finishes:e.finishes.map(s=>({name:s.name,image:O(s.angles?.[0]??s.src)??null}))}}function Y({value:e,onChange:s}){const f=B(),{rows:r,loading:a,refreshing:i,errored:u,refresh:g}=z({load:H,resolve:(o,n)=>o.find(l=>l.slug===n.slug),snapshot:p,value:e,onChange:s}),[h,y]=F(null);j(()=>{let o=!1;return M().then(n=>{o||y(n)}),()=>{o=!0}},[]);const d=T(()=>r&&e?.slug?r.find(o=>o.slug===e.slug)??null:null,[r,e?.slug]),{category:b,setCategory:k,categoryNames:S,filtered:x}=R(r,h,d),m=!!e?.slug&&r!==null&&!d,C=o=>{if(!o){s(null);return}const n=(r??[]).find(l=>l.slug===o);n&&s(p(n))},P=()=>{e?.slug&&f.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},w=!!e?.spec,E=u?"error":i?"loading":"idle",L=u?t("Couldn’t reach the product catalog."):i?t("Syncing from the catalog…"):m?t("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):w?t("Linked to “{name}” · every spec row follows the product.",{name:e?.name??""}):t("Linked to “{name}” — this product has no spec data yet.",{name:e?.name??""});return N("div",{children:[c(_,{category:b,onChange:k,categoryNames:S,readOnly:a,products:x,product:e?.slug??"",onProductChange:C,productReadOnly:a,emptyLabel:a?t("Loading…"):t("None (write the rows yourself)"),extraOptions:m?[{label:t("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]}),e?.slug?c(W,{status:E,statusText:L,onRefresh:g,busy:i,edit:{label:t("Edit product ✎"),onClick:P},hint:t("Every spec row (lug count, bolt pattern, offset, center bore, load rating, bump profile…) comes from the product record — edit its part numbers in the Products database and this table updates to match. You still choose which finish to picture and an optional size.")}):c("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a product to fill the spec table from the catalog, or keep “None” to write the rows yourself.")})]})}export{Y as default};
1
+ "use client";import{jsx as c,jsxs as N}from"react/jsx-runtime";import{useEffect as j,useMemo as T,useState as F}from"react";import{resolveMedia as O}from"efficient-web-builder/render/lib/media";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{loadProductCatalog as H}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as M}from"./useStorefrontCategories.js";import{useCategoryFilter as R}from"./useCategoryFilter.js";import _ from"./CategoryProductFields.js";import{useSnapshotSource as z}from"efficient-web-builder/editor/components/useSnapshotSource";import W from"efficient-web-builder/editor/components/SourceStatus";import{say as t}from"efficient-web-builder/format/lib/editor-words";function p(e){return{slug:e.slug,name:e.name,process:e.process,spokes:e.spokes,mesh:e.mesh,spec:e.spec,finishes:e.finishes.map(s=>({name:s.name,image:O(s.angles?.[0]??s.src)??null}))}}function Y({value:e,onChange:s}){const f=B(),{rows:r,loading:a,refreshing:i,errored:u,refresh:g}=z({load:H,resolve:(o,n)=>o.find(l=>l.slug===n.slug),snapshot:p,value:e,onChange:s}),[h,y]=F(null);j(()=>{let o=!1;return M().then(n=>{o||y(n)}),()=>{o=!0}},[]);const d=T(()=>r&&e?.slug?r.find(o=>o.slug===e.slug)??null:null,[r,e?.slug]),{category:b,setCategory:k,categoryNames:S,filtered:x}=R(r,h,d),m=!!e?.slug&&r!==null&&!d,C=o=>{if(!o){s(null);return}const n=(r??[]).find(l=>l.slug===o);n&&s(p(n))},P=()=>{e?.slug&&f.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},w=!!e?.spec,E=u?"error":i?"loading":"idle",L=u?t("Couldn’t reach the product catalog."):i?t("Syncing from the catalog…"):m?t("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):w?t("Linked to “{name}” · every spec row follows the product.",{name:e?.name??""}):t("Linked to “{name}” — this product has no spec data yet.",{name:e?.name??""});return N("div",{children:[c(_,{category:b,onChange:k,categoryNames:S,readOnly:a,products:x,allProducts:r??[],product:e?.slug??"",onProductChange:C,productReadOnly:a,emptyLabel:a?t("Loading…"):t("None (write the rows yourself)"),extraOptions:m?[{label:t("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]}),e?.slug?c(W,{status:E,statusText:L,onRefresh:g,busy:i,edit:{label:t("Edit product ✎"),onClick:P},hint:t("Every spec row (lug count, bolt pattern, offset, center bore, load rating, bump profile…) comes from the product record — edit its part numbers in the Products database and this table updates to match. You still choose which finish to picture and an optional size.")}):c("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a product to fill the spec table from the catalog, or keep “None” to write the rows yourself.")})]})}export{Y as default};
@@ -1 +1 @@
1
- import{text as i,textarea as m,withOffPage as d,plainText as n}from"efficient-web-builder/editor/lib/document/controls";import{group as e}from"efficient-easel/screen/lib/document/box-fields";import{headFieldsForPlacement as s,SPLITTABLE_SECTIONS as a}from"efficient-web-builder/format/lib/sections/section-head-placement";import{REVIEWS_DESIGN_CODE_PH as l}from"../placeholders.js";import{REVIEW_FORM_PH as o}from"../../../../../../render/lib/document/blocks/service/ReviewForm/meta.js";const F={fields:{_gContent:e("Content"),eyebrow:i("Eyebrow",o.eyebrow),title:m("Heading",o.title),_gSource:e("Reviews"),designCode:d(n("Design code",l))},resolveFields:(t,{fields:r,parent:p})=>s(r,t.props.headPlacement,a.ReviewForm.headRows)};export{F as ReviewFormFields};
1
+ import{text as i,textarea as n,withOffPage as s,plainText as l}from"efficient-web-builder/editor/lib/document/controls";import{group as e}from"efficient-easel/screen/lib/document/box-fields";import{headFieldsForPlacement as a,SPLITTABLE_SECTIONS as d}from"efficient-web-builder/format/lib/sections/section-head-placement";import{REVIEW_FORM_PH as o}from"../../../../../../render/lib/document/blocks/service/ReviewForm/meta.js";const m="e.g. D00123 · blank = the whole store",_={fields:{_gContent:e("Content"),eyebrow:i("Eyebrow",o.eyebrow),title:n("Heading",o.title),_gSource:e("Reviews"),designCode:s(l("Design code",m))},resolveFields:(t,{fields:r,parent:p})=>a(r,t.props.headPlacement,d.ReviewForm.headRows)};export{_ as ReviewFormFields};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{StylesIcon as p,HashIcon as S,ColumnsIcon as c,StarIcon as d}from"efficient-easel/icons";import{text as R,textarea as f,withOffPage as u,plainText as r,plainTextarea as w}from"efficient-web-builder/editor/lib/document/controls";import{group as i}from"efficient-easel/screen/lib/document/box-fields";import{select as a,slider as m}from"efficient-web-builder/editor/lib/document/box-fields";import{blockSourceField as y,blockSourceFields as _}from"efficient-web-builder/editor/lib/document/block-source-fields";import{withShowWhen as l}from"efficient-web-builder/render/lib/document/show-when";import{BLOCK_SOURCE_PROP as I}from"efficient-web-builder/format/lib/content/block-sources";import{headFieldsForPlacement as O,SPLITTABLE_SECTIONS as g}from"efficient-web-builder/format/lib/sections/section-head-placement";import{SECTION_EYEBROW_LOOK_OPTIONS as E,eyebrowLookFor as b}from"efficient-web-builder/format/lib/sections/section-eyebrow-look";import{RATING_STARS as T}from"../../../../../../render/components/RatingStars.js";import{REVIEWS_DESIGN_CODE_PH as v}from"../placeholders.js";import{REVIEWS_PH as n,ReviewsSlots as P}from"../../../../../../render/lib/document/blocks/service/Reviews/meta.js";const s={field:I,set:!0},C=[{label:"None",value:""},...Array.from({length:T},(e,o)=>({label:String(o+1),value:String(o+1)}))],K={fields:{_gContent:i("Content"),eyebrow:R("Eyebrow",n.eyebrow),eyebrowLook:a("Eyebrow style",t(p,{}),[...E],b("Reviews")),title:f("Heading",n.title),_gSource:i("Reviews"),dataSource:y("Review content","Manual"),items:l({type:"array",label:"Typed reviews",arrayFields:{quote:w("Quote"),title:r("Title"),name:r("Name"),role:r("Role · location"),rating:a("Rating",t(d,{}),C,"")},defaultItemProps:{quote:"",title:"",name:"",role:"",rating:""},getItemSummary:e=>e?.name||e?.quote||"Review"},{not:s}),...P,limit:l(m("Reviews to display",t(S,{}),3,12,1,6),s),dataSourceOptions:l({type:"object",label:"Product",objectFields:{designCode:u(r("Design code",v))}},s),_gStyle:i("Style"),columns:m("Columns",t(c,{}),1,3,1,3)},resolveFields:(e,{fields:o,parent:h})=>_("Reviews",O(o,e.props.headPlacement,g.Reviews.headRows),e.props,{hides:["items"]})};export{K as ReviewsFields};
1
+ import{jsx as o}from"react/jsx-runtime";import{StylesIcon as p,HashIcon as S,ColumnsIcon as c,StarIcon as d}from"efficient-easel/icons";import{text as u,textarea as R,plainText as l,plainTextarea as w,sourceField as f}from"efficient-web-builder/editor/lib/document/controls";import{group as m}from"efficient-easel/screen/lib/document/box-fields";import{select as s,slider as a}from"efficient-web-builder/editor/lib/document/box-fields";import{blockSourceField as y,blockSourceFields as I}from"efficient-web-builder/editor/lib/document/block-source-fields";import{withShowWhen as r}from"efficient-web-builder/render/lib/document/show-when";import{BLOCK_SOURCE_PROP as _}from"efficient-web-builder/format/lib/content/block-sources";import{headFieldsForPlacement as v,SPLITTABLE_SECTIONS as O}from"efficient-web-builder/format/lib/sections/section-head-placement";import{SECTION_EYEBROW_LOOK_OPTIONS as T,eyebrowLookFor as g}from"efficient-web-builder/format/lib/sections/section-eyebrow-look";import{RATING_STARS as E}from"../../../../../../render/components/RatingStars.js";import b from"../../../../../components/ReviewsProductSource.js";import P from"../../../../../components/EditReviewsLink.js";import{REVIEWS_PH as n,ReviewsSlots as h}from"../../../../../../render/lib/document/blocks/service/Reviews/meta.js";const i={field:_,set:!0},C=[{label:"None",value:""},...Array.from({length:E},(e,t)=>({label:String(t+1),value:String(t+1)}))],Q={fields:{_gContent:m("Content"),eyebrow:u("Eyebrow",n.eyebrow),eyebrowLook:s("Eyebrow style",o(p,{}),[...T],g("Reviews")),title:R("Heading",n.title),_gSource:m("Reviews"),dataSource:y("Review content","Manual"),_editReviews:r({type:"custom",render:()=>o(P,{})},i),items:r({type:"array",label:"Typed reviews",arrayFields:{quote:w("Quote"),title:l("Title"),name:l("Name"),role:l("Role · location"),rating:s("Rating",o(d,{}),C,"")},defaultItemProps:{quote:"",title:"",name:"",role:"",rating:""},getItemSummary:e=>e?.name||e?.quote||"Review"},{not:i}),...h,limit:r(a("Items to display",o(S,{}),3,12,1,6),i),dataSourceOptions:r(f(b),i),_gStyle:m("Style"),columns:a("Columns",o(c,{}),1,3,1,3)},resolveFields:(e,{fields:t,parent:F})=>I("Reviews",v(t,e.props.headPlacement,O.Reviews.headRows),e.props,{hides:["items"]})};export{Q as ReviewsFields};
@@ -36,6 +36,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
36
36
  readonly "After close": "After close";
37
37
  readonly Alignment: "Alignment";
38
38
  readonly "All brands": "All brands";
39
+ readonly "All categories": "All categories";
39
40
  readonly "All media groups": "All media groups";
40
41
  readonly "All product types": "All product types";
41
42
  readonly "All products": "All products";
@@ -160,6 +161,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
160
161
  readonly "ET range": "ET range";
161
162
  readonly "Edit category \u270E": "Edit category ✎";
162
163
  readonly "Edit form \u270E": "Edit form ✎";
164
+ readonly "Edit in Reviews \u2192": "Edit in Reviews →";
163
165
  readonly "Edit menu \u2192": "Edit menu →";
164
166
  readonly "Edit product \u270E": "Edit product ✎";
165
167
  readonly "Edit social links \u2192": "Edit social links →";
@@ -369,6 +371,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
369
371
  readonly "No menus found": "No menus found";
370
372
  readonly "No menus yet. Create one in {place}, then pick it here.": "No menus yet. Create one in {place}, then pick it here.";
371
373
  readonly "No models listed": "No models listed";
374
+ readonly "No product chosen yet, so reviews of every product show.": "No product chosen yet, so reviews of every product show.";
372
375
  readonly "No products in this category": "No products in this category";
373
376
  readonly "No products in this website's catalog yet \u2014 curate products to see them here.": "No products in this website's catalog yet — curate products to see them here.";
374
377
  readonly "No products in \u201C{name}\u201D yet": "No products in “{name}” yet";
@@ -473,7 +476,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
473
476
  readonly "Review content": "Review content";
474
477
  readonly "Review title (optional)": "Review title (optional)";
475
478
  readonly "Reviews are collected by the Review Form section and wait for your approval before they show.": "Reviews are collected by the Review Form section and wait for your approval before they show.";
476
- readonly "Reviews to display": "Reviews to display";
477
479
  readonly "Right panel \u00B7 actions": "Right panel · actions";
478
480
  readonly "Right panel \u00B7 choices": "Right panel · choices";
479
481
  readonly "Right panel \u00B7 form": "Right panel · form";
@@ -621,6 +623,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
621
623
  readonly "This header uses the old layout": "This header uses the old layout";
622
624
  readonly "This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.": "This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.";
623
625
  readonly "This menu has no links yet \u2014 add them in {place}.": "This menu has no links yet — add them in {place}.";
626
+ readonly "This product": "This product";
624
627
  readonly "This product has no finishes yet, so its card falls back to the product image \u2014 or an empty placeholder when it has none. Add finishes to the product record, then give each one an image.": "This product has no finishes yet, so its card falls back to the product image — or an empty placeholder when it has none. Add finishes to the product record, then give each one an image.";
625
628
  readonly "This product\u2019s photos appear here on a product page. Add media groups in the product\u2019s Media tab.": "This product’s photos appear here on a product page. Add media groups in the product’s Media tab.";
626
629
  readonly "This product\u2019s sizes appear here on a product page.": "This product’s sizes appear here on a product page.";