efficient-storefront-blocks 0.65.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/README.md +0 -1
- package/dist/chunks/{EditorPreviewCheckout-4KZCYPQT.js → EditorPreviewCheckout-EXU5CRJ2.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-ZYGNRWSB.js → SiteEditorProvider-KOPR3UDU.js} +1 -1
- package/dist/chunks/{chunk-I7BIOONR.js → chunk-S66TL4Z3.js} +1 -1
- package/dist/chunks/{chunk-YAO6XQYA.js → chunk-TAGGXC3A.js} +1 -1
- package/dist/chunks/{chunk-GR7OHU32.js → chunk-VWO54PMT.js} +1 -1
- package/dist/chunks/{chunk-OU2WWXMT.js → chunk-Z7PJKX2P.js} +1 -1
- package/dist/chunks/{fitment-data-IKFCBT6E.js → fitment-data-UQDOQP66.js} +1 -1
- package/dist/consent.js +1 -1
- package/dist/editor/components/CollectionPicker.js +1 -1
- package/dist/editor/components/EditProductLink.js +1 -1
- package/dist/editor/components/FormPicker.js +1 -1
- package/dist/editor/components/GalleryProductBinding.d.ts +1 -1
- package/dist/editor/components/GalleryProductBinding.js +1 -1
- package/dist/editor/components/GalleryShowcaseSource.d.ts +1 -1
- package/dist/editor/components/GalleryShowcaseSource.js +1 -1
- package/dist/editor/components/HeaderSettingsPanel.js +1 -1
- package/dist/editor/components/MenuLinkRangeField.js +1 -1
- package/dist/editor/components/PerViewStepperField.js +1 -1
- package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +1 -1
- package/dist/editor/lib/puck/config.d.ts +0 -4
- package/dist/editor/lib/puck/config.js +1 -1
- package/dist/editor/lib/storefront-editor-words.d.ts +2 -4
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.js +43 -43
- package/dist/render/app/globals.css +18 -4
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/ContactRouting.d.ts +11 -1
- package/dist/render/components/ContactRouting.js +1 -1
- package/dist/render/components/GalleryGrid.js +1 -1
- package/dist/render/components/GalleryItem.d.ts +1 -0
- package/dist/render/components/GalleryItem.js +1 -1
- package/dist/render/components/ProductGallery.js +1 -1
- package/dist/render/components/ProductGridSection.js +1 -1
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
- package/dist/render/components/fitment/PickerField.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
- package/dist/render/lib/api/types.d.ts +1 -0
- package/dist/render/lib/consent/choice.d.ts +0 -2
- package/dist/render/lib/consent/choice.js +1 -1
- package/dist/render/lib/consent/rules.d.ts +0 -1
- package/dist/render/lib/consent/rules.js +1 -1
- package/dist/render/lib/content/source-values.d.ts +4 -0
- package/dist/render/lib/content/source-values.js +1 -0
- package/dist/render/lib/content/stock-words.d.ts +0 -4
- package/dist/render/lib/content/stock-words.js +1 -1
- package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +1 -1
- package/dist/render/lib/puck/blocks/text-part-shapes.json +6 -3
- package/dist/render/lib/sections/fill-row.d.ts +8 -0
- package/dist/render/lib/sections/fill-row.js +1 -1
- package/dist/render/lib/sections/grid-no-hole.d.ts +12 -0
- package/dist/render/lib/sections/grid-no-hole.js +1 -0
- package/dist/render/lib/wheels/catalog-filters-to-listing.d.ts +0 -1
- package/dist/render/lib/wheels/catalog-filters-to-listing.js +1 -1
- package/dist/render/lib/wheels/catalog-filters.d.ts +0 -1
- package/dist/render/lib/wheels/catalog-filters.js +1 -1
- package/dist/words.d.ts +3 -4
- package/dist/words.js +2 -2
- package/package.json +1 -1
- /package/dist/chunks/{chunk-B44XQA2J.js → chunk-IHYVLVY3.js} +0 -0
- /package/dist/chunks/{chunk-YAO6XQYA.js.LEGAL.txt → chunk-TAGGXC3A.js.LEGAL.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as d,b as p,c as S,p as b,r as T}from"./chunk-OU2WWXMT.js";import"./chunk-B44XQA2J.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
|
|
1
|
+
import{a as d,b as p,c as S,p as b,r as T}from"./chunk-Z7PJKX2P.js";import"./chunk-IHYVLVY3.js";import"./chunk-Y6SLVHK3.js";var v={generatedAt:"2026-06-28T04:33:14.721Z",region:"audm",upstreamHits:80,makes:[{slug:"abarth",name:"Abarth"},{slug:"aion",name:"Aion"},{slug:"alfa-romeo",name:"Alfa Romeo"},{slug:"alpine",name:"Alpine"},{slug:"aston-martin",name:"Aston Martin"},{slug:"audi",name:"Audi"},{slug:"bentley",name:"Bentley"},{slug:"bmw",name:"BMW"},{slug:"bmw-alpina",name:"BMW Alpina"},{slug:"byd",name:"BYD"},{slug:"cadillac",name:"Cadillac"},{slug:"chery",name:"Chery"},{slug:"citroen",name:"Citro\xEBn"},{slug:"cupra",name:"Cupra"},{slug:"daihatsu",name:"Daihatsu"},{slug:"datsun",name:"Datsun"},{slug:"deepal",name:"Deepal"},{slug:"denza",name:"Denza"},{slug:"dodge",name:"Dodge"},{slug:"ds",name:"DS"},{slug:"ferrari",name:"Ferrari"},{slug:"fiat",name:"Fiat"},{slug:"ford",name:"Ford"},{slug:"foton",name:"Foton"},{slug:"geely",name:"Geely"},{slug:"genesis",name:"Genesis"},{slug:"great-wall",name:"Great Wall (GWM)"},{slug:"haval",name:"Haval"},{slug:"holden",name:"Holden"},{slug:"honda",name:"Honda"},{slug:"hyundai",name:"Hyundai"},{slug:"ineos",name:"Ineos"},{slug:"isuzu",name:"Isuzu"},{slug:"iveco",name:"Iveco"},{slug:"jac",name:"JAC"},{slug:"jaecoo",name:"Jaecoo"},{slug:"jaguar",name:"Jaguar"},{slug:"jeep",name:"Jeep"},{slug:"kg-mobility",name:"KGM"},{slug:"kia",name:"Kia"},{slug:"lamborghini",name:"Lamborghini"},{slug:"land-rover",name:"Land Rover"},{slug:"ldv",name:"LDV"},{slug:"leapmotor",name:"Leapmotor"},{slug:"lexus",name:"Lexus"},{slug:"lotus",name:"Lotus"},{slug:"mahindra",name:"Mahindra"},{slug:"maserati",name:"Maserati"},{slug:"mazda",name:"Mazda"},{slug:"mclaren",name:"McLaren"},{slug:"mercedes",name:"Mercedes-Benz"},{slug:"mercedes-maybach",name:"Mercedes-Maybach"},{slug:"mg",name:"MG"},{slug:"mini",name:"MINI"},{slug:"mitsubishi",name:"Mitsubishi"},{slug:"nissan",name:"Nissan"},{slug:"omoda",name:"Omoda"},{slug:"opel",name:"Opel"},{slug:"ora",name:"Ora"},{slug:"peugeot",name:"Peugeot"},{slug:"polaris",name:"Polaris"},{slug:"polestar",name:"Polestar"},{slug:"porsche",name:"Porsche"},{slug:"proton",name:"Proton"},{slug:"ram",name:"Ram"},{slug:"renault",name:"Renault"},{slug:"seat",name:"Seat"},{slug:"skoda",name:"Skoda"},{slug:"smart",name:"Smart"},{slug:"ssangyong",name:"SsangYong"},{slug:"subaru",name:"Subaru"},{slug:"suzuki",name:"Suzuki"},{slug:"tank",name:"Tank"},{slug:"tesla",name:"Tesla"},{slug:"toyota",name:"Toyota"},{slug:"triumph",name:"Triumph"},{slug:"volkswagen",name:"Volkswagen"},{slug:"volvo",name:"Volvo"},{slug:"zeekr",name:"Zeekr"}],models:{abarth:[{slug:"500e",name:"500e"},{slug:"695",name:"695"},{slug:"695c",name:"695C"}],aion:[{slug:"ut",name:"UT"}],"alfa-romeo":[{slug:"giulia",name:"Giulia"},{slug:"junior",name:"Junior"},{slug:"stelvio",name:"Stelvio"},{slug:"tonale",name:"Tonale"}],alpine:[{slug:"a110",name:"A110"},{slug:"a390",name:"A390"}],"aston-martin":[{slug:"db11",name:"DB11"},{slug:"db12",name:"DB12"},{slug:"dbs-770-ultimate",name:"DBS 770 Ultimate"},{slug:"dbs-superleggera",name:"DBS Superleggera"},{slug:"dbx",name:"DBX"},{slug:"dbx-s",name:"DBX S"},{slug:"dbx707",name:"DBX707"},{slug:"v12-vantage",name:"V12 Vantage"},{slug:"valhalla",name:"Valhalla"},{slug:"valour",name:"Valour"},{slug:"vanquish",name:"Vanquish"},{slug:"vantage",name:"Vantage"},{slug:"vantage-s",name:"Vantage S"}],audi:[{slug:"5-5",name:"5+5"},{slug:"a1",name:"A1"},{slug:"a3",name:"A3"},{slug:"a4",name:"A4"},{slug:"a4-allroad",name:"A4 Allroad"},{slug:"a5",name:"A5"},{slug:"a6",name:"A6"},{slug:"a6-allroad",name:"A6 Allroad"},{slug:"a7",name:"A7"},{slug:"a8",name:"A8"},{slug:"allroad",name:"Allroad"},{slug:"e-tron",name:"e-tron"},{slug:"e-tron-gt",name:"e-tron GT"},{slug:"e-tron-s",name:"e-tron S"},{slug:"e-tron-s-sportback",name:"e-tron S Sportback"},{slug:"e-tron-sportback",name:"e-tron Sportback"},{slug:"q2",name:"Q2"},{slug:"q3",name:"Q3"},{slug:"q3-sportback",name:"Q3 Sportback"},{slug:"q4",name:"Q4 e-tron"},{slug:"q4-sportback",name:"Q4 Sportback e-tron"},{slug:"q5",name:"Q5"},{slug:"q5-sportback",name:"Q5 Sportback"},{slug:"q6-e-tron",name:"Q6 e-tron"},{slug:"q7",name:"Q7"},{slug:"q8",name:"Q8"},{slug:"q8-e-tron",name:"Q8 e-tron"},{slug:"q8-sportback-e-tron",name:"Q8 Sportback e-tron"},{slug:"r8",name:"R8"},{slug:"rs-e-tron-gt",name:"RS e-tron GT"},{slug:"rs-q3",name:"RS Q3"},{slug:"rs-q3-sportback",name:"RS Q3 Sportback"},{slug:"rs-q8",name:"RS Q8"},{slug:"rs3",name:"RS3"},{slug:"rs4",name:"RS4"},{slug:"rs5",name:"RS5"},{slug:"rs6",name:"RS6"},{slug:"rs7",name:"RS7"},{slug:"s-e-tron-gt",name:"S e-tron GT"},{slug:"s1",name:"S1"},{slug:"s3",name:"S3"},{slug:"s4",name:"S4"},{slug:"s5",name:"S5"},{slug:"s6",name:"S6"},{slug:"s7",name:"S7"},{slug:"s8",name:"S8"},{slug:"sq2",name:"SQ2"},{slug:"sq5",name:"SQ5"},{slug:"sq5-sportback",name:"SQ5 Sportback"},{slug:"sq6-e-tron",name:"SQ6 e-tron"},{slug:"sq7",name:"SQ7"},{slug:"sq8",name:"SQ8"},{slug:"sq8-e-tron",name:"SQ8 e-tron"},{slug:"sq8-sportback-e-tron",name:"SQ8 Sportback e-tron"},{slug:"tt",name:"TT"},{slug:"tt-rs",name:"TT RS"},{slug:"tts",name:"TT S"}],bentley:[{slug:"bentayga",name:"Bentayga"},{slug:"continental-gt",name:"Continental GT"},{slug:"continental-gtc",name:"Continental GTC"},{slug:"flying-spur",name:"Flying Spur"}],bmw:[{slug:"1-series",name:"1 Series"},{slug:"2-series",name:"2 Series"},{slug:"2-series-active-tourer",name:"2 Series Active Tourer"},{slug:"2-series-gran-coupe",name:"2 Series Gran Coupe"},{slug:"3-series",name:"3 Series"},{slug:"3-series-gran-turismo",name:"3 Series Gran Turismo"},{slug:"4-series",name:"4 Series"},{slug:"4-series-gran-coupe",name:"4 Series Gran Coupe"},{slug:"5-series",name:"5 Series"},{slug:"5-series-gran-turismo",name:"5 Series Gran Turismo"},{slug:"6-series",name:"6 Series"},{slug:"7-series",name:"7 Series"},{slug:"8-series",name:"8 Series"},{slug:"i4",name:"i4"},{slug:"i5",name:"i5"},{slug:"i7",name:"i7"},{slug:"ix",name:"iX"},{slug:"ix1",name:"iX1"},{slug:"ix2",name:"iX2"},{slug:"ix3",name:"iX3"},{slug:"m2",name:"M2"},{slug:"m3",name:"M3"},{slug:"m4",name:"M4"},{slug:"m5",name:"M5"},{slug:"m8",name:"M8"},{slug:"x1",name:"X1"},{slug:"x2",name:"X2"},{slug:"x3",name:"X3"},{slug:"x3-m",name:"X3 M"},{slug:"x4",name:"X4"},{slug:"x4-m",name:"X4 M"},{slug:"x5",name:"X5"},{slug:"x5-m",name:"X5 M"},{slug:"x6",name:"X6"},{slug:"x6-m",name:"X6 M"},{slug:"x7",name:"X7"},{slug:"xm",name:"XM"},{slug:"z4",name:"Z4"}],"bmw-alpina":[{slug:"b10",name:"B10"},{slug:"b3",name:"B3"},{slug:"b4",name:"B4"},{slug:"b8",name:"B8"},{slug:"xb7",name:"XB7"},{slug:"xd3",name:"XD3"}],byd:[{slug:"atto-1",name:"Atto 1"},{slug:"atto-3",name:"Atto 3"},{slug:"sea-lion-6",name:"Sealion 6"},{slug:"seal",name:"Seal"},{slug:"sealion-5",name:"Sealion 5"},{slug:"sealion-7",name:"Sealion 7"},{slug:"sealion-8",name:"Sealion 8"},{slug:"shark-6",name:"Shark 6"}],cadillac:[{slug:"lyriq",name:"Lyriq"}],chery:[{slug:"j1",name:"J1"},{slug:"j11",name:"J11"},{slug:"j3",name:"J3"},{slug:"omoda-5",name:"Omoda 5"},{slug:"omoda-5-gt",name:"Omoda 5 GT"},{slug:"omoda-e5",name:"Omoda E5"},{slug:"tiggo-4",name:"Tiggo 4"},{slug:"tiggo-4-pro",name:"Tiggo 4 Pro"},{slug:"tiggo-7",name:"Tiggo 7"},{slug:"tiggo-7-pro",name:"Tiggo 7 Pro"},{slug:"tiggo-8",name:"Tiggo 8"},{slug:"tiggo-8-pro-max",name:"Tiggo 8 Pro Max"}],citroen:[{slug:"c3",name:"C3"},{slug:"c3-aircross",name:"C3 Aircross"},{slug:"c4",name:"C4"},{slug:"c5-aircross",name:"C5 Aircross"}],cupra:[{slug:"ateca",name:"Ateca"},{slug:"born",name:"Born"},{slug:"formentor",name:"Formentor"},{slug:"leon",name:"Leon"},{slug:"tavascan",name:"Tavascan"},{slug:"terramar",name:"Terramar"}],daihatsu:[{slug:"charade",name:"Charade"}],datsun:[{slug:"240z",name:"240Z"},{slug:"260z",name:"260Z"},{slug:"280z",name:"280Z"},{slug:"280zx",name:"280ZX"}],deepal:[{slug:"e07",name:"E07"},{slug:"s07",name:"S07"}],denza:[{slug:"b5",name:"B5"},{slug:"b8",name:"B8"},{slug:"d9",name:"D9"}],dodge:[{slug:"avenger",name:"Avenger"}],ds:[{slug:"ds-3",name:"DS 3"},{slug:"ds-4",name:"DS 4"},{slug:"ds-7",name:"DS 7"}],ferrari:[{slug:"12cilindri",name:"12Cilindri"},{slug:"12cilindri-spider",name:"12Cilindri Spider"},{slug:"296-gt3",name:"296 GT3"},{slug:"296-gtb",name:"296 GTB"},{slug:"296-gts",name:"296 GTS"},{slug:"296-speciale",name:"296 Speciale"},{slug:"296-speciale-a",name:"296 Speciale A"},{slug:"458-italia",name:"458 Italia"},{slug:"458-speciale",name:"458 Speciale"},{slug:"458-speciale-a",name:"458 Speciale A"},{slug:"458-spider",name:"458 Spider"},{slug:"488-gtb",name:"488 GTB"},{slug:"488-pista",name:"488 Pista"},{slug:"488-pista-spider",name:"488 Pista Spider"},{slug:"488-spider",name:"488 Spider"},{slug:"812-competizione",name:"812 Competizione"},{slug:"812-competizione-a",name:"812 Competizione A"},{slug:"812-gts",name:"812 GTS"},{slug:"812-superfast",name:"812 Superfast"},{slug:"849-testarossa",name:"849 Testarossa"},{slug:"amalfi",name:"Amalfi"},{slug:"daytona-sp3",name:"Daytona SP3"},{slug:"f8-spider",name:"F8 Spider"},{slug:"f8-tributo",name:"F8 Tributo"},{slug:"f80",name:"F80"},{slug:"ff",name:"FF"},{slug:"gtc4-lusso",name:"GTC4Lusso"},{slug:"monza-sp1",name:"Monza SP1"},{slug:"monza-sp2",name:"Monza SP2"},{slug:"portofino",name:"Portofino"},{slug:"roma",name:"Roma"},{slug:"sf90-spider",name:"SF90 Spider"},{slug:"sf90-stradale",name:"SF90 Stradale"},{slug:"sf90-xx-spider",name:"SF90 XX Spider"},{slug:"sf90-xx-stradale",name:"SF90 XX Stradale"}],fiat:[{slug:"500",name:"500"},{slug:"500c",name:"500C"},{slug:"500e",name:"500e"},{slug:"595",name:"595"},{slug:"695",name:"695"},{slug:"ducato",name:"Ducato"},{slug:"ritmo",name:"Ritmo"}],ford:[{slug:"capri",name:"Capri"},{slug:"cougar",name:"Cougar"},{slug:"courier",name:"Courier"},{slug:"e-transit",name:"E-Transit"},{slug:"endura",name:"Endura"},{slug:"escape",name:"Escape"},{slug:"everest",name:"Everest"},{slug:"f-150",name:"F-150"},{slug:"fairlane",name:"Fairlane"},{slug:"fairmont",name:"Fairmont"},{slug:"falcon",name:"Falcon"},{slug:"fiesta",name:"Fiesta"},{slug:"laser",name:"Laser"},{slug:"ltd",name:"LTD"},{slug:"mustang",name:"Mustang"},{slug:"mustang-mach-e",name:"Mustang Mach-E"},{slug:"probe",name:"Probe"},{slug:"puma",name:"Puma"},{slug:"ranger",name:"Ranger"},{slug:"taurus",name:"Taurus"},{slug:"territory",name:"Territory"},{slug:"tourneo-custom",name:"Tourneo Custom"},{slug:"transit",name:"Transit"},{slug:"transit-custom",name:"Transit Custom"}],foton:[{slug:"tunland",name:"Tunland"}],geely:[{slug:"ex5",name:"EX5"},{slug:"riddara-rd6",name:"Riddara RD6"},{slug:"starray-em-i",name:"Starray EM-i"}],genesis:[{slug:"g70",name:"G70"},{slug:"g80",name:"G80"},{slug:"gv60",name:"GV60"},{slug:"gv70",name:"GV70"},{slug:"gv80",name:"GV80"}],"great-wall":[{slug:"cannon",name:"Cannon"},{slug:"cannon-alpha",name:"Cannon Alpha"},{slug:"ora",name:"Ora"},{slug:"steed",name:"Steed"},{slug:"ute",name:"Ute"}],haval:[{slug:"h6",name:"H6"},{slug:"h6gt",name:"H6 GT"},{slug:"jolion",name:"Jolion"},{slug:"jolion-s",name:"Jolion S"}],holden:[{slug:"acadia",name:"Acadia"},{slug:"adventra",name:"Adventra"},{slug:"apollo",name:"Apollo"},{slug:"astra",name:"Astra"},{slug:"astra-gtc",name:"Astra GTC"},{slug:"astra-vxr",name:"Astra VXR"},{slug:"barina",name:"Barina"},{slug:"barina-spark",name:"Barina Spark"},{slug:"caprice",name:"Caprice"},{slug:"captiva",name:"Captiva"},{slug:"captiva-5",name:"Captiva 5"},{slug:"captiva-7",name:"Captiva 7"},{slug:"cascada",name:"Cascada"},{slug:"colorado",name:"Colorado"},{slug:"colorado-7",name:"Colorado 7"},{slug:"commodore",name:"Commodore"},{slug:"crewman",name:"Crewman"},{slug:"cruze",name:"Cruze"},{slug:"equinox",name:"Equinox"},{slug:"frontera",name:"Frontera"},{slug:"insignia-vxr",name:"Insignia VXR"},{slug:"jackaroo",name:"Jackaroo"},{slug:"malibu",name:"Malibu"},{slug:"monaro",name:"Monaro"},{slug:"one-tonner",name:"One Tonner"},{slug:"rodeo",name:"Rodeo"},{slug:"spark",name:"Spark"},{slug:"suburban",name:"Suburban"},{slug:"tigra",name:"Tigra"},{slug:"trailblazer",name:"Trailblazer"},{slug:"trax",name:"Trax"},{slug:"ute",name:"Ute"},{slug:"vectra",name:"Vectra"},{slug:"viva",name:"Viva"},{slug:"volt",name:"Volt"},{slug:"zafira",name:"Zafira"}],honda:[{slug:"accord",name:"Accord"},{slug:"accord-euro",name:"Accord Euro"},{slug:"city",name:"City"},{slug:"civic",name:"Civic"},{slug:"civic-5d",name:"Civic 5d"},{slug:"civic-type-r",name:"Civic Type R"},{slug:"cr-v",name:"CR-V"},{slug:"hr-v",name:"HR-V"},{slug:"jazz",name:"Jazz"},{slug:"jazz-crosstar",name:"Jazz Crosstar"},{slug:"legend",name:"Legend"},{slug:"odyssey",name:"Odyssey"},{slug:"s2000",name:"S2000"},{slug:"zr-v",name:"ZR-V"}],hyundai:[{slug:"accent",name:"Accent"},{slug:"elantra",name:"Elantra"},{slug:"elantra-lavita",name:"Elantra LaVita"},{slug:"i20-n",name:"i20 N"},{slug:"i30",name:"i30"},{slug:"i30-fastback-n",name:"i30 Fastback N"},{slug:"i30-n",name:"i30 N"},{slug:"i30-sedan",name:"i30 Sedan"},{slug:"i30-sedan-n",name:"i30 Sedan N"},{slug:"i45",name:"i45"},{slug:"iload",name:"iLoad"},{slug:"imax",name:"iMax"},{slug:"inster",name:"Inster"},{slug:"ioniq",name:"IONIQ"},{slug:"ioniq-5",name:"IONIQ 5"},{slug:"ioniq-5-n",name:"IONIQ 5 N"},{slug:"ioniq-6",name:"IONIQ 6"},{slug:"ioniq-6-n",name:"IONIQ 6 N"},{slug:"ioniq-9",name:"IONIQ 9"},{slug:"ix35",name:"ix35"},{slug:"kona",name:"Kona"},{slug:"kona-n",name:"Kona N"},{slug:"mighty",name:"Mighty"},{slug:"nexo",name:"Nexo"},{slug:"palisade",name:"Palisade"},{slug:"santa-fe",name:"Santa Fe"},{slug:"sonata",name:"Sonata"},{slug:"staria",name:"Staria"},{slug:"tucson",name:"Tucson"},{slug:"venue",name:"Venue"}],ineos:[{slug:"grenadier",name:"Grenadier"}],isuzu:[{slug:"d-max",name:"D-MAX"},{slug:"mu-x",name:"mu-X"}],iveco:[{slug:"daily",name:"Daily"}],jac:[{slug:"t9",name:"T9"}],jaecoo:[{slug:"j5",name:"J5"},{slug:"j7",name:"J7"}],jaguar:[{slug:"e-pace",name:"E-Pace"},{slug:"f-pace",name:"F-Pace"},{slug:"f-type",name:"F-Type"},{slug:"i-pace",name:"I-Pace"},{slug:"xe",name:"XE"},{slug:"xf",name:"XF"}],jeep:[{slug:"avenger",name:"Avenger"},{slug:"cherokee",name:"Cherokee"},{slug:"compass",name:"Compass"},{slug:"gladiator",name:"Gladiator"},{slug:"grand-cherokee",name:"Grand Cherokee"},{slug:"grand-cherokee-l",name:"Grand Cherokee L"},{slug:"renegade",name:"Renegade"},{slug:"wrangler",name:"Wrangler"}],"kg-mobility":[{slug:"actyon",name:"Actyon"},{slug:"korando",name:"Korando"},{slug:"musso",name:"Musso"},{slug:"musso-ev",name:"Musso EV"},{slug:"rexton",name:"Rexton"},{slug:"torres",name:"Torres"}],kia:[{slug:"carnival",name:"Carnival"},{slug:"cerato",name:"Cerato"},{slug:"ev3",name:"EV3"},{slug:"ev4",name:"EV4"},{slug:"ev5",name:"EV5"},{slug:"ev6",name:"EV6"},{slug:"ev9",name:"EV9"},{slug:"grand-carnival",name:"Grand Carnival"},{slug:"k4",name:"K4"},{slug:"mentor",name:"Mentor"},{slug:"niro",name:"Niro"},{slug:"niro-plus",name:"Niro Plus"},{slug:"optima",name:"Optima"},{slug:"picanto",name:"Picanto"},{slug:"picanto-x-line",name:"Picanto X-Line"},{slug:"rio",name:"Rio"},{slug:"rondo",name:"Rondo"},{slug:"seltos",name:"Seltos"},{slug:"sorento",name:"Sorento"},{slug:"sportage",name:"Sportage"},{slug:"stinger",name:"Stinger"},{slug:"stonic",name:"Stonic"},{slug:"tasman",name:"Tasman"}],lamborghini:[{slug:"aventador",name:"Aventador"},{slug:"countach",name:"Countach"},{slug:"huracan",name:"Huracan"},{slug:"revuelto",name:"Revuelto"},{slug:"sian",name:"Sian"},{slug:"temerario",name:"Temerario"},{slug:"urus",name:"Urus"}],"land-rover":[{slug:"defender",name:"Defender"},{slug:"discovery-5",name:"Discovery 5"},{slug:"discovery-sport",name:"Discovery Sport"},{slug:"range-rover",name:"Range Rover"},{slug:"range-rover-evoque",name:"Range Rover Evoque"},{slug:"range-rover-sport",name:"Range Rover Sport"},{slug:"range-rover-velar",name:"Range Rover Velar"}],ldv:[{slug:"d90",name:"D90"},{slug:"deliver-7",name:"Deliver 7"},{slug:"deliver-9",name:"Deliver 9"},{slug:"edeliver-3",name:"eDeliver 3"},{slug:"edeliver-7",name:"eDeliver 7"},{slug:"edeliver-9",name:"eDeliver 9"},{slug:"et60",name:"eT60"},{slug:"g10",name:"G10"},{slug:"mifa",name:"Mifa People Mover"},{slug:"mifa-9",name:"Mifa 9"},{slug:"t60",name:"T60"},{slug:"terron-9",name:"Terron 9"},{slug:"v80",name:"V80"}],leapmotor:[{slug:"b10",name:"B10"},{slug:"c10",name:"C10"}],lexus:[{slug:"es",name:"ES"},{slug:"gx",name:"GX"},{slug:"is",name:"IS"},{slug:"lbx",name:"LBX"},{slug:"lc",name:"LC"},{slug:"lm",name:"LM"},{slug:"ls",name:"LS"},{slug:"lx",name:"LX"},{slug:"nx",name:"NX"},{slug:"rc-f",name:"RC F"},{slug:"rx",name:"RX"},{slug:"rz",name:"RZ"},{slug:"ux",name:"UX"}],lotus:[{slug:"eletre",name:"Eletre"},{slug:"emeya",name:"Emeya"},{slug:"emira",name:"Emira"},{slug:"evija",name:"Evija"}],mahindra:[{slug:"genio",name:"Genio"},{slug:"pik-up",name:"Pik Up"},{slug:"scorpio-n",name:"Scorpio-N"},{slug:"xuv500",name:"XUV500"},{slug:"xuv700",name:"XUV700"}],maserati:[{slug:"ghibli",name:"Ghibli"},{slug:"gran-turismo",name:"GranTurismo"},{slug:"grancabrio",name:"GranCabrio"},{slug:"grecale",name:"Grecale"},{slug:"gt2-stradale",name:"GT2 Stradale"},{slug:"levante",name:"Levante"},{slug:"mc20",name:"MC20"},{slug:"mcpura",name:"MCPura"},{slug:"quattroporte",name:"Quattroporte"}],mazda:[{slug:"6e",name:"6e"},{slug:"929",name:"929"},{slug:"bravo",name:"Bravo"},{slug:"bt-50",name:"BT-50"},{slug:"cx-3",name:"CX-3"},{slug:"cx-30",name:"CX-30"},{slug:"cx-5",name:"CX-5"},{slug:"cx-60",name:"CX-60"},{slug:"cx-70",name:"CX-70"},{slug:"cx-8",name:"CX-8"},{slug:"cx-80",name:"CX-80"},{slug:"cx-9",name:"CX-9"},{slug:"cx-90",name:"CX-90"},{slug:"mazda2",name:"Mazda2"},{slug:"mazda3",name:"Mazda3"},{slug:"mazda3-mps",name:"Mazda3 MPS"},{slug:"mazda6",name:"Mazda6"},{slug:"mx-30",name:"MX-30"},{slug:"mx-5",name:"MX-5"},{slug:"mx-5-rf",name:"MX-5 RF"},{slug:"rx-7",name:"RX-7"}],mclaren:[{slug:"720s",name:"720S"},{slug:"720s-spider",name:"720S Spider"},{slug:"750s",name:"750S"},{slug:"765lt",name:"765LT"},{slug:"765lt-spider",name:"765LT Spider"},{slug:"artura",name:"Artura"},{slug:"gt",name:"GT"},{slug:"gts",name:"GTS"},{slug:"mp4-12c",name:"Mp4-12C"},{slug:"senna",name:"Senna"},{slug:"speedtail",name:"Speedtail"},{slug:"w1",name:"W1"}],mercedes:[{slug:"a-class",name:"A-Class"},{slug:"a-class-amg",name:"A-Class AMG"},{slug:"c-class",name:"C-Class"},{slug:"c-class-amg",name:"C-Class AMG"},{slug:"cla-class",name:"CLA-Class"},{slug:"cla-class-amg",name:"CLA-Class AMG"},{slug:"cle-class",name:"CLE-Class"},{slug:"cls-class-amg",name:"CLS-Class AMG"},{slug:"e-class",name:"E-Class"},{slug:"e-class-amg",name:"E-Class AMG"},{slug:"e-class-cabrio",name:"E-Class Cabriolet"},{slug:"e-class-coupe",name:"E-Class Coupe"},{slug:"eqa",name:"EQA"},{slug:"eqb",name:"EQB"},{slug:"eqc",name:"EQC"},{slug:"eqe",name:"EQE"},{slug:"eqe-amg",name:"EQE AMG"},{slug:"eqe-suv",name:"EQE SUV"},{slug:"eqe-suv-amg",name:"EQE SUV AMG"},{slug:"eqs",name:"EQS"},{slug:"eqs-amg",name:"EQS AMG"},{slug:"eqs-suv",name:"EQS SUV"},{slug:"eqv",name:"EQV"},{slug:"g-class",name:"G-Class"},{slug:"g-class-amg",name:"G-Class AMG"},{slug:"gla",name:"GLA-Class"},{slug:"gla-class-amg",name:"GLA-Class AMG"},{slug:"glb",name:"GLB-Class"},{slug:"glb-class-amg",name:"GLB-Class AMG"},{slug:"glc",name:"GLC-Class"},{slug:"glc-class-amg",name:"GLC-Class AMG"},{slug:"glc-class-coupe",name:"GLC-Class Coupe"},{slug:"glc-class-coupe-amg",name:"GLC-Class Coupe AMG"},{slug:"gle-class",name:"GLE-Class"},{slug:"gle-class-amg",name:"GLE-Class AMG"},{slug:"gle-class-coupe",name:"GLE-Class Coupe"},{slug:"gle-class-coupe-amg",name:"GLE-Class Coupe AMG"},{slug:"gls-class",name:"GLS-Class"},{slug:"gls-class-amg",name:"GLS-Class AMG"},{slug:"s-class",name:"S-Class"},{slug:"sprinter",name:"Sprinter"},{slug:"v-class",name:"V-Class"},{slug:"x-class",name:"X-Class"}],"mercedes-maybach":[{slug:"eqs",name:"EQS"},{slug:"gls-class",name:"GLS-Class"},{slug:"s-class",name:"S-Class"}],mg:[{slug:"3",name:"3"},{slug:"350",name:"350"},{slug:"4",name:"4"},{slug:"5",name:"5"},{slug:"6",name:"6"},{slug:"cyberster",name:"Cyberster"},{slug:"gs",name:"GS"},{slug:"hs",name:"HS"},{slug:"im5",name:"IM5"},{slug:"im6",name:"IM6"},{slug:"qs",name:"QS"},{slug:"s5",name:"S5"},{slug:"u9",name:"MGU9"},{slug:"zs",name:"ZS"},{slug:"zs-ev",name:"ZS EV"},{slug:"zst",name:"ZST"}],mini:[{slug:"aceman",name:"Aceman"},{slug:"clubman",name:"Clubman"},{slug:"convertible",name:"Convertible"},{slug:"cooper",name:"Cooper"},{slug:"countryman",name:"Countryman"},{slug:"hatch",name:"Hatch"}],mitsubishi:[{slug:"asx",name:"ASX"},{slug:"challenger",name:"Challenger"},{slug:"eclipse-cross",name:"Eclipse Cross"},{slug:"express",name:"Express"},{slug:"l200",name:"L200"},{slug:"magna",name:"Magna"},{slug:"mirage",name:"Mirage"},{slug:"nimbus",name:"Nimbus"},{slug:"outlander",name:"Outlander"},{slug:"pajero-sport",name:"Pajero Sport"},{slug:"triton",name:"Triton"},{slug:"verada",name:"Verada"}],nissan:[{slug:"200sx",name:"200SX"},{slug:"280zx",name:"280ZX"},{slug:"300zx",name:"300ZX"},{slug:"370z",name:"370Z"},{slug:"almera",name:"Almera"},{slug:"altima",name:"Altima"},{slug:"ariya",name:"Ariya"},{slug:"bluebird",name:"Bluebird"},{slug:"dualis",name:"Dualis"},{slug:"dualis-2",name:"Dualis+2"},{slug:"gt-r",name:"GT-R"},{slug:"juke",name:"Juke"},{slug:"leaf",name:"Leaf"},{slug:"maxima",name:"Maxima"},{slug:"micra",name:"Micra"},{slug:"navara",name:"Navara"},{slug:"np300-navara",name:"NP300 Navara"},{slug:"pathfinder",name:"Pathfinder"},{slug:"patrol",name:"Patrol"},{slug:"patrol-cab-chassis",name:"Patrol Cab Chassis"},{slug:"pulsar",name:"Pulsar"},{slug:"qashqai",name:"Qashqai"},{slug:"x-trail",name:"X-Trail"},{slug:"z",name:"Z"}],omoda:[{slug:"9",name:"9"},{slug:"c5",name:"C5"},{slug:"e5",name:"E5"}],opel:[{slug:"astra",name:"Astra"},{slug:"grandland",name:"Grandland"},{slug:"mokka",name:"Mokka"}],ora:[{slug:"03",name:"03"}],peugeot:[{slug:"2008",name:"2008"},{slug:"208",name:"208"},{slug:"3008",name:"3008"},{slug:"308",name:"308"},{slug:"408",name:"408"},{slug:"5008",name:"5008"},{slug:"508",name:"508"},{slug:"boxer",name:"Boxer"},{slug:"expert",name:"Expert"},{slug:"partner",name:"Partner"}],polaris:[{slug:"general-xp",name:"General XP 1000"},{slug:"general-xp-4",name:"General XP 4 1000"},{slug:"ranger-crew-xd",name:"Ranger Crew XD 1500"},{slug:"ranger-crew-xp",name:"Ranger Crew XP 1000"},{slug:"ranger-xd",name:"Ranger XD 1500"},{slug:"ranger-xp",name:"Ranger XP 1000"},{slug:"rzr-pro-r",name:"RZR Pro R"},{slug:"rzr-pro-r-4",name:"RZR Pro R 4"},{slug:"rzr-pro-xp",name:"RZR Pro XP"},{slug:"rzr-xp",name:"RZR XP 1000"},{slug:"rzr-xp-4",name:"RZR XP 4 1000"},{slug:"xpedition-adv",name:"Xpedition ADV"},{slug:"xpedition-adv-5",name:"Xpedition ADV 5"},{slug:"xpedition-xp",name:"Xpedition XP"},{slug:"xpedition-xp-5",name:"Xpedition XP 5"}],polestar:[{slug:"polestar-1",name:"Polestar 1"},{slug:"polestar-2",name:"Polestar 2"},{slug:"polestar-3",name:"Polestar 3"},{slug:"polestar-4",name:"Polestar 4"},{slug:"polestar-5",name:"Polestar 5"}],porsche:[{slug:"718",name:"718"},{slug:"911",name:"911"},{slug:"928",name:"928"},{slug:"cayenne",name:"Cayenne"},{slug:"macan",name:"Macan"},{slug:"panamera",name:"Panamera"},{slug:"taycan",name:"Taycan"}],proton:[{slug:"exora",name:"Exora"},{slug:"gen-2",name:"Gen-2"},{slug:"jumbuck",name:"Jumbuck"},{slug:"persona",name:"Persona"},{slug:"preve",name:"Preve"},{slug:"s16",name:"S16"},{slug:"satria",name:"Satria"},{slug:"savvy",name:"Savvy"},{slug:"suprima",name:"Suprima S"},{slug:"waja",name:"Waja"}],ram:[{slug:"1500",name:"1500"},{slug:"1500-classic",name:"1500 Classic"},{slug:"1500-trx",name:"1500 TRX"},{slug:"2500",name:"2500"},{slug:"3500",name:"3500"}],renault:[{slug:"arkana",name:"Arkana"},{slug:"captur",name:"Captur"},{slug:"duster",name:"Duster"},{slug:"kangoo",name:"Kangoo"},{slug:"kangoo-van",name:"Kangoo Van"},{slug:"koleos",name:"Koleos"},{slug:"latitude",name:"Latitude"},{slug:"master",name:"Master"},{slug:"megane-e-tech",name:"Megane E-Tech"},{slug:"scenic-e-tech",name:"Scenic E-Tech"},{slug:"trafic",name:"Trafic"}],seat:[{slug:"arona",name:"Arona"},{slug:"ateca",name:"Ateca"},{slug:"leon",name:"Leon"},{slug:"tarraco",name:"Tarraco"}],skoda:[{slug:"elroq",name:"Elroq"},{slug:"enyaq-iv",name:"Enyaq"},{slug:"fabia",name:"Fabia"},{slug:"kamiq",name:"Kamiq"},{slug:"karoq",name:"Karoq"},{slug:"kodiaq",name:"Kodiaq"},{slug:"octavia",name:"Octavia"},{slug:"rapid",name:"Rapid"},{slug:"scala",name:"Scala"},{slug:"superb",name:"Superb"},{slug:"superb-scout",name:"Superb Scout"},{slug:"yeti",name:"Yeti"}],smart:[{slug:"1",name:"#1"},{slug:"3",name:"#3"},{slug:"roadster",name:"Roadster"}],ssangyong:[{slug:"korando",name:"Korando"},{slug:"kyron",name:"Kyron"},{slug:"musso",name:"Musso"},{slug:"rexton",name:"Rexton"},{slug:"rhino",name:"Rhino"},{slug:"stavic",name:"Stavic"},{slug:"tivoli",name:"Tivoli"}],subaru:[{slug:"brz",name:"BRZ"},{slug:"crosstrek",name:"Crosstrek"},{slug:"forester",name:"Forester"},{slug:"impreza",name:"Impreza"},{slug:"liberty",name:"Liberty"},{slug:"outback",name:"Outback"},{slug:"solterra",name:"Solterra"},{slug:"wrx",name:"WRX"},{slug:"wrx-sti",name:"WRX STI"},{slug:"xv",name:"XV"}],suzuki:[{slug:"baleno",name:"Baleno"},{slug:"fronx",name:"Fronx"},{slug:"ignis",name:"Ignis"},{slug:"jimny",name:"Jimny"},{slug:"s-cross",name:"S-Cross"},{slug:"swift",name:"Swift"},{slug:"swift-sport",name:"Swift Sport"},{slug:"vitara",name:"Vitara"}],tank:[{slug:"300",name:"300"},{slug:"500",name:"500"}],tesla:[{slug:"cybertruck",name:"Cybertruck"},{slug:"model-3",name:"Model 3"},{slug:"model-s",name:"Model S"},{slug:"model-x",name:"Model X"},{slug:"model-y",name:"Model Y"}],toyota:[{slug:"86",name:"86"},{slug:"aurion",name:"Aurion"},{slug:"avalon",name:"Avalon"},{slug:"avensis-verso",name:"Avensis Verso"},{slug:"bz4x",name:"bZ4X"},{slug:"c-hr",name:"C-HR"},{slug:"camry",name:"Camry"},{slug:"corolla",name:"Corolla"},{slug:"corolla-cross",name:"Corolla Cross"},{slug:"echo",name:"Echo"},{slug:"fortuner",name:"Fortuner"},{slug:"gr-corolla",name:"GR Corolla"},{slug:"gr-yaris",name:"GR Yaris"},{slug:"gr86",name:"GR86"},{slug:"granvia",name:"Granvia"},{slug:"hiace",name:"Hiace"},{slug:"hilux",name:"Hilux"},{slug:"kluger",name:"Kluger"},{slug:"land-cruiser",name:"Land Cruiser"},{slug:"land-cruiser-prado",name:"Land Cruiser Prado"},{slug:"prius",name:"Prius"},{slug:"prius-c",name:"Prius c"},{slug:"prius-v",name:"Prius v"},{slug:"rav4",name:"RAV4"},{slug:"rukus",name:"Rukus"},{slug:"supra",name:"Supra"},{slug:"tarago",name:"Tarago"},{slug:"tundra",name:"Tundra"},{slug:"vienta",name:"Vienta"},{slug:"yaris",name:"Yaris"},{slug:"yaris-cross",name:"Yaris Cross"}],triumph:[{slug:"tr7",name:"TR7"}],volkswagen:[{slug:"amarok",name:"Amarok"},{slug:"beetle",name:"Beetle"},{slug:"caddy",name:"Caddy"},{slug:"california",name:"California"},{slug:"caravelle",name:"Caravelle"},{slug:"cc",name:"CC"},{slug:"crafter",name:"Crafter"},{slug:"golf",name:"Golf"},{slug:"golf-alltrack",name:"Golf Alltrack"},{slug:"golf-gti",name:"Golf GTI"},{slug:"golf-r",name:"Golf R"},{slug:"grand-california",name:"Grand California"},{slug:"id-buzz",name:"ID. Buzz"},{slug:"id4",name:"ID.4"},{slug:"id5",name:"ID.5"},{slug:"multivan",name:"Multivan"},{slug:"passat",name:"Passat"},{slug:"passat-alltrack",name:"Passat Alltrack"},{slug:"polo",name:"Polo"},{slug:"polo-gti",name:"Polo GTI"},{slug:"t-cross",name:"T-Cross"},{slug:"t-roc",name:"T-Roc"},{slug:"t-roc-r",name:"T-Roc R"},{slug:"tiguan",name:"Tiguan"},{slug:"tiguan-allspace",name:"Tiguan Allspace"},{slug:"touareg",name:"Touareg"},{slug:"transporter",name:"Transporter"}],volvo:[{slug:"c40",name:"C40"},{slug:"es90",name:"ES90"},{slug:"ex30",name:"EX30"},{slug:"ex40",name:"EX40"},{slug:"ex90",name:"EX90"},{slug:"s60",name:"S60"},{slug:"s60-cross-country",name:"S60 Cross Country"},{slug:"s90",name:"S90"},{slug:"v60-cross-country",name:"V60 Cross Country"},{slug:"v90-cross-country",name:"V90 Cross Country"},{slug:"xc40",name:"XC40"},{slug:"xc60",name:"XC60"},{slug:"xc90",name:"XC90"}],zeekr:[{slug:"009",name:"009"},{slug:"x",name:"X"}]},years:{"audi/rs6":[2026,2025,2024,2023,2022,2021,2020],"bmw/m3":[2026,2025,2024,2023,2022,2021,2020,2018,2017,2016,2015,2014],"ferrari/296-gtb":[2026,2025,2024,2023,2022],"lamborghini/huracan":[2024,2023,2022,2021,2020,2019],"mclaren/750s":[2026,2025,2024,2023],"mercedes/c-class-amg":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017,2016],"nissan/gt-r":[2023,2022,2021,2020,2019,2018,2017,2016],"tesla/model-3":[2026,2025,2024,2023,2022,2021,2020,2019,2018,2017],"toyota/supra":[2026,2025,2024,2023,2022,2021,1993,1992,1991,1990,1989,1988,1987,1986]},modifications:{"audi/rs6/2024":[{slug:"a28ff79ddf",name:"4.0 TFSi quattro",trim:"4.0 TFSi quattro",body:null}],"bmw/m3/2024":[{slug:"0aaf0bb46d",name:"M3",trim:"M3",body:null},{slug:"402e65e913",name:"M3 Competition",trim:"M3 Competition",body:null},{slug:"4c760df5c5",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"6250847bc8",name:"M3 Competition xDrive",trim:"M3 Competition xDrive",body:null},{slug:"82f59cadb0",name:"M3",trim:"M3",body:null}],"ferrari/296-gtb/2024":[{slug:"c412dafd12",name:"3.0",trim:"3.0",body:null}],"lamborghini/huracan/2024":[{slug:"aab49a3dae",name:"Evo 5.2",trim:"Evo 5.2",body:null},{slug:"f81a37ca20",name:"Evo 5.2",trim:"Evo 5.2",body:null}],"mclaren/750s/2024":[{slug:"f8f346c327",name:"4.0T",trim:"4.0T",body:null}],"mercedes/c-class-amg/2024":[{slug:"038122904b",name:"C 43 4Matic",trim:"C 43 4Matic",body:null},{slug:"a403e6b64c",name:"C 63 S E",trim:"C 63 S E",body:null}],"nissan/gt-r/2024":[],"tesla/model-3/2024":[{slug:"026e4ab9d6",name:"Long Range",trim:"Long Range",body:null},{slug:"4296c050a9",name:"Performance",trim:"Performance",body:null},{slug:"50f0c93d66",name:"Performance",trim:"Performance",body:null},{slug:"be5b2b9767",name:"Standard Range",trim:"Standard Range",body:null},{slug:"d4960b3833",name:"Long Range",trim:"Long Range",body:null}],"toyota/supra/2024":[{slug:"eabbd747b7",name:"3.0i",trim:"3.0i",body:null}]},meta:{modelsFetchedAt:{abarth:"2026-06-28T04:33:00.474Z",aion:"2026-06-28T04:33:01.415Z","alfa-romeo":"2026-06-28T04:33:02.355Z",alpine:"2026-06-28T04:33:03.290Z","aston-martin":"2026-06-28T04:33:04.229Z",audi:"2026-06-28T04:33:05.195Z",bentley:"2026-06-28T04:33:06.135Z",bmw:"2026-06-28T04:33:07.112Z","bmw-alpina":"2026-06-28T04:33:08.062Z",byd:"2026-06-28T04:33:09.004Z",cadillac:"2026-06-28T04:33:09.958Z",chery:"2026-06-28T04:33:10.944Z",citroen:"2026-06-28T04:33:11.887Z",cupra:"2026-06-28T04:33:12.827Z",daihatsu:"2026-06-28T04:33:13.770Z",datsun:"2026-06-28T04:33:14.721Z",deepal:"2026-06-27T04:23:59.381Z",denza:"2026-06-27T04:24:00.200Z",dodge:"2026-06-27T04:24:01.018Z",ds:"2026-06-27T04:24:01.843Z",ferrari:"2026-06-27T04:24:02.667Z",fiat:"2026-06-27T04:24:03.492Z",ford:"2026-06-27T04:24:04.311Z",foton:"2026-06-27T04:24:05.129Z",geely:"2026-06-27T04:24:05.946Z",genesis:"2026-06-27T04:24:06.764Z","great-wall":"2026-06-27T04:24:07.584Z",haval:"2026-06-27T04:24:08.402Z",holden:"2026-06-27T04:24:09.221Z",honda:"2026-06-27T04:24:10.039Z",hyundai:"2026-06-27T04:24:10.861Z",ineos:"2026-06-27T04:24:11.677Z",isuzu:"2026-06-27T04:24:12.495Z",iveco:"2026-06-28T04:32:51.940Z",jac:"2026-06-27T04:24:13.314Z",jaecoo:"2026-06-28T04:32:17.949Z",jaguar:"2026-06-28T04:32:18.902Z",jeep:"2026-06-28T04:32:19.838Z","kg-mobility":"2026-06-28T04:32:20.769Z",kia:"2026-06-28T04:32:21.710Z",lamborghini:"2026-06-28T04:32:22.641Z","land-rover":"2026-06-28T04:32:23.589Z",ldv:"2026-06-28T04:32:24.525Z",leapmotor:"2026-06-28T04:32:25.463Z",lexus:"2026-06-28T04:32:26.401Z",lotus:"2026-06-28T04:32:27.336Z",mahindra:"2026-06-28T04:32:28.278Z",maserati:"2026-06-28T04:32:29.225Z",mazda:"2026-06-28T04:32:30.189Z",mclaren:"2026-06-28T04:32:31.133Z",mercedes:"2026-06-28T04:32:32.103Z","mercedes-maybach":"2026-06-28T04:32:33.041Z",mg:"2026-06-28T04:32:33.991Z",mini:"2026-06-28T04:32:34.935Z",mitsubishi:"2026-06-28T04:32:35.884Z",nissan:"2026-06-28T04:32:36.836Z",omoda:"2026-06-28T04:32:37.789Z",opel:"2026-06-28T04:32:38.731Z",ora:"2026-06-28T04:32:39.684Z",peugeot:"2026-06-28T04:32:40.631Z",polaris:"2026-06-28T04:32:52.902Z",polestar:"2026-06-28T04:32:41.575Z",porsche:"2026-06-28T04:32:42.516Z",proton:"2026-06-28T04:32:43.459Z",ram:"2026-06-28T04:32:44.398Z",renault:"2026-06-28T04:32:45.351Z",seat:"2026-06-28T04:32:46.297Z",skoda:"2026-06-28T04:32:47.233Z",smart:"2026-06-28T04:32:48.178Z",ssangyong:"2026-06-28T04:32:49.114Z",subaru:"2026-06-28T04:32:50.052Z",suzuki:"2026-06-28T04:32:50.996Z",tank:"2026-06-28T04:32:53.840Z",tesla:"2026-06-28T04:32:54.775Z",toyota:"2026-06-28T04:32:55.749Z",triumph:"2026-06-28T04:32:56.677Z",volkswagen:"2026-06-28T04:32:57.635Z",volvo:"2026-06-28T04:32:58.582Z",zeekr:"2026-06-28T04:32:59.524Z"},popularFetchedAt:"2026-06-28T04:32:16.984Z",coverage:{covered:79,total:79}}};var u=v,k=(d||""||"http://localhost:8000").replace(/\/+$/,""),M=3600,Z="x-efficient-shop-hop",C="".trim();async function g(a,e){let s=new URLSearchParams;for(let[h,i]of Object.entries(e))i!==void 0&&i!==""&&s.set(h,String(i));let n=s.toString(),l=`${k}/api/fitment${a}${n?`?${n}`:""}`,m={next:{revalidate:M}},[f,y]=await Promise.all([b(),T()]),o=p(f,y,S(m));C&&(o[Z]=C);let t=await fetch(l,{...m,...Object.keys(o).length>0?{headers:o}:{}});if(!t.ok)throw new Error(`backend fitment ${t.status} on ${a}`);let c=await t.text();return c?JSON.parse(c):null}function r(a){return a!==void 0&&u.region===a&&(u.makes?.length??0)>0}function A(a){if(!a)return null;let e=a.et_range;return{pcd:a.pcd||void 0,boltPattern:a.bolt_pattern||void 0,centreBore:a.centre_bore??void 0,frontWheels:a.front_wheels??[],rearWheels:a.rear_wheels??[],frontTyres:a.front_tyres??[],rearTyres:a.rear_tyres??[],etRange:e&&e[0]!==null&&e[1]!==null?[e[0],e[1]]:void 0}}var z={async makes(a){try{return await g("/makes/",{region:a})}catch(e){if(r(a))return u.makes;throw e}},async models(a,e){try{return await g("/models/",{make:a,region:e})}catch(s){let n=r(e)?u.models[a]:void 0;if(n)return n;throw s}},async years(a,e,s){try{return await g("/years/",{make:a,model:e,region:s})}catch(n){let l=r(s)?u.years[`${a}/${e}`]:void 0;if(l)return l;throw n}},async modifications(a,e,s,n){try{return await g("/modifications/",{make:a,model:e,year:s,region:n})}catch(l){let m=r(n)?u.modifications[`${a}/${e}/${s}`]:void 0;if(m)return m;throw l}},async stockFitment(a,e,s,n,l){return A(await g("/stock-fitment/",{make:a,model:e,year:s,modification:n,region:l}))}};export{z as fitmentData};
|
package/dist/consent.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var i="Ads on. Shopper can opt out.",n="Ads and analytics off until Accept",r={us:{region:"us",name:"United States",model:"opt-out",law:"California CCPA / CPRA, other state laws",beforeChoice:i,footerLink:"Do Not Sell or Share My Personal Information",panelEyebrow:"Do not sell or share",adsRowName:"Sale or sharing for ads"},ca:{region:"ca",name:"Canada",model:"opt-in",law:"PIPEDA, Quebec Law 25",beforeChoice:n,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},au:{region:"au",name:"Australia",model:"opt-out",law:"Privacy Act 1988 (APPs)",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},nz:{region:"nz",name:"New Zealand",model:"opt-out",law:"Privacy Act 2020",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},uk:{region:"uk",name:"United Kingdom",model:"opt-in",law:"PECR, UK GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},eu:{region:"eu",name:"European Union",model:"opt-in",law:"ePrivacy Directive, GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},other:{region:"other",name:"All other countries",model:"opt-in",law:"Safe default",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"}},l="Honoured: ads off",d=new Set(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO"]),s={US:"us",PR:"us",GU:"us",VI:"us",AS:"us",MP:"us",CA:"ca",AU:"au",NZ:"nz",GB:"uk"};function c(t){let e=(t??"").trim().toUpperCase();return e?s[e]?s[e]:d.has(e)?"eu":"other":"other"}function
|
|
1
|
+
var i="Ads on. Shopper can opt out.",n="Ads and analytics off until Accept",r={us:{region:"us",name:"United States",model:"opt-out",law:"California CCPA / CPRA, other state laws",beforeChoice:i,footerLink:"Do Not Sell or Share My Personal Information",panelEyebrow:"Do not sell or share",adsRowName:"Sale or sharing for ads"},ca:{region:"ca",name:"Canada",model:"opt-in",law:"PIPEDA, Quebec Law 25",beforeChoice:n,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},au:{region:"au",name:"Australia",model:"opt-out",law:"Privacy Act 1988 (APPs)",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},nz:{region:"nz",name:"New Zealand",model:"opt-out",law:"Privacy Act 2020",beforeChoice:i,footerLink:"Privacy choices",panelEyebrow:"Privacy choices",adsRowName:"Advertising"},uk:{region:"uk",name:"United Kingdom",model:"opt-in",law:"PECR, UK GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},eu:{region:"eu",name:"European Union",model:"opt-in",law:"ePrivacy Directive, GDPR",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"},other:{region:"other",name:"All other countries",model:"opt-in",law:"Safe default",beforeChoice:n,footerLink:"Cookie settings",panelEyebrow:"Cookie settings",adsRowName:"Advertising"}},l="Honoured: ads off",d=new Set(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO"]),s={US:"us",PR:"us",GU:"us",VI:"us",AS:"us",MP:"us",CA:"ca",AU:"au",NZ:"nz",GB:"uk"};function c(t){let e=(t??"").trim().toUpperCase();return e?s[e]?s[e]:d.has(e)?"eu":"other":"other"}function g(t){let e=new Set,a=[];for(let u of t){let o=c(u);o==="other"||e.has(o)||(e.add(o),a.push(r[o]))}return a.push(r.other),a}export{l as CONSENT_GPC_RULE,r as CONSENT_RULES,c as regionOfCountry,g as rulesForCountries};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as i,jsxs as n}from"react/jsx-runtime";import{Button as j}from"efficient-shell/ui";import{SettingsField as z}from"efficient-easel/panel";import{FieldSelect as E}from"efficient-easel/fields";import{CategoryIcon as I}from"efficient-easel/icons";import{useEffect as b,useRef as d,useState as T}from"react";import{loadStorefrontCategories as F}from"./useStorefrontCategories.js";import{snapshotChanged as W}from"efficient-web-builder/editor/components/useSnapshotSource";import{onCollectionCategoriesChanged as D}from"efficient-web-builder/format/lib/editor-events";import{useEaselHost as H}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as L}from"efficient-web-builder/format/lib/sized-image";import{resolveCategoryImage as P}from"../../render/components/CollectionCard.js";function C(e){return{id:e.id,name:e.name,slug:e.slug,description:e.description??"",image:e.image??""}}function _({value:e,onChange:s}){const N=H(),[a,x]=T(null),l=d(!0),m=d(e);m.current=e;const f=d(s);f.current=s;const p=(o=!1)=>F(o).then(r=>(l.current&&x(r),r)),h=o=>{const r=m.current;if(!r?.id)return;const c=o.find(R=>R.id===r.id);if(!c)return;const y=C(c);W(y,r)&&f.current(y)};b(()=>(l.current=!0,p().then(h),()=>{l.current=!1}),[]),b(()=>D(()=>{p(!0).then(h)}),[]);const v=o=>{if(!o){s(null);return}const r=(a??[]).find(c=>c.id===o);r&&s(C(r))},S=()=>{e?.id&&N.send("storefront-editor:open-category",{categoryId:e.id,name:e.name})},g=a===null,k=!!e?.id&&!(a??[]).some(o=>o.id===e.id),u=P(e?.image);return n("div",{children:[i(z,{label:t("Collection"),icon:i(I,{}),children:i(E,{value:e?.id??"",ariaLabel:t("Collection"),onChange:v,readOnly:g,options:[{label:g?t("Loading…"):t("None"),value:""},...k?[{label:t("{name} (unavailable)",{name:e.name}),value:e.id}]:[],...(a??[]).map(o=>({label:o.name,value:o.id}))]})}),e?.id?n("div",{className:"sf-blogsource",style:{marginTop:9},children:[n("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Name")}),i("div",{style:{fontWeight:600},children:e.name})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Description")}),i("div",{style:{fontSize:13,opacity:e.description?.85:.5},children:e.description||t("No description yet")})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Image")}),u?i("img",{...L(u,{fallbackWidth:640,maxWidth:960}),sizes:"320px",alt:"",style:{width:"100%",height:96,objectFit:"cover",borderRadius:8}}):i("div",{style:{fontSize:13,opacity:.5},children:t("No image yet")})]})]}),i(j,{variant:"secondary",size:"
|
|
1
|
+
"use client";import{jsx as i,jsxs as n}from"react/jsx-runtime";import{Button as j}from"efficient-shell/ui";import{SettingsField as z}from"efficient-easel/panel";import{FieldSelect as E}from"efficient-easel/fields";import{CategoryIcon as I}from"efficient-easel/icons";import{useEffect as b,useRef as d,useState as T}from"react";import{loadStorefrontCategories as F}from"./useStorefrontCategories.js";import{snapshotChanged as W}from"efficient-web-builder/editor/components/useSnapshotSource";import{onCollectionCategoriesChanged as D}from"efficient-web-builder/format/lib/editor-events";import{useEaselHost as H}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sizedImage as L}from"efficient-web-builder/format/lib/sized-image";import{resolveCategoryImage as P}from"../../render/components/CollectionCard.js";function C(e){return{id:e.id,name:e.name,slug:e.slug,description:e.description??"",image:e.image??""}}function _({value:e,onChange:s}){const N=H(),[a,x]=T(null),l=d(!0),m=d(e);m.current=e;const f=d(s);f.current=s;const p=(o=!1)=>F(o).then(r=>(l.current&&x(r),r)),h=o=>{const r=m.current;if(!r?.id)return;const c=o.find(R=>R.id===r.id);if(!c)return;const y=C(c);W(y,r)&&f.current(y)};b(()=>(l.current=!0,p().then(h),()=>{l.current=!1}),[]),b(()=>D(()=>{p(!0).then(h)}),[]);const v=o=>{if(!o){s(null);return}const r=(a??[]).find(c=>c.id===o);r&&s(C(r))},S=()=>{e?.id&&N.send("storefront-editor:open-category",{categoryId:e.id,name:e.name})},g=a===null,k=!!e?.id&&!(a??[]).some(o=>o.id===e.id),u=P(e?.image);return n("div",{children:[i(z,{label:t("Collection"),icon:i(I,{}),children:i(E,{value:e?.id??"",ariaLabel:t("Collection"),onChange:v,readOnly:g,options:[{label:g?t("Loading…"):t("None"),value:""},...k?[{label:t("{name} (unavailable)",{name:e.name}),value:e.id}]:[],...(a??[]).map(o=>({label:o.name,value:o.id}))]})}),e?.id?n("div",{className:"sf-blogsource",style:{marginTop:9},children:[n("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Name")}),i("div",{style:{fontWeight:600},children:e.name})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Description")}),i("div",{style:{fontSize:13,opacity:e.description?.85:.5},children:e.description||t("No description yet")})]}),n("div",{children:[i("div",{className:"sf-field-label",style:{opacity:.6},children:t("Image")}),u?i("img",{...L(u,{fallbackWidth:640,maxWidth:960}),sizes:"320px",alt:"",style:{width:"100%",height:96,objectFit:"cover",borderRadius:8}}):i("div",{style:{fontSize:13,opacity:.5},children:t("No image yet")})]})]}),i(j,{variant:"secondary",size:"md",className:"sf-blogsource-action",style:{marginTop:10},onClick:S,children:t("Edit category ✎")}),i("p",{className:"es-field-hint sf-hint-keep",children:t("Name, description and image come from {place}. Edit them there — this card updates to match.",{place:t("Storefront → Categories")})})]}):i("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a category from {place} to fill this card’s name, description and image. That content is edited in the category.",{place:t("Storefront → Categories")})})]})}export{_ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as s,jsxs as l}from"react/jsx-runtime";import{Button as a}from"efficient-shell/ui";import{useEasel as u}from"efficient-easel/easel";import{useEaselHost as m}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{useProductCatalog as p}from"../../render/components/useProductCatalog.js";import{useGridSourceLock as f}from"./useGridSourceLock.js";function h(){const r=m(),n=p(),{selectedItem:c}=u(o=>o),d=c?.props?.code??"",e=(n??[]).find(o=>o.slug===d)??null,i=f()!==null;return!e||i?null:l("div",{className:"sf-blogsource",children:[s(a,{variant:"secondary",size:"
|
|
1
|
+
"use client";import{jsx as s,jsxs as l}from"react/jsx-runtime";import{Button as a}from"efficient-shell/ui";import{useEasel as u}from"efficient-easel/easel";import{useEaselHost as m}from"efficient-easel/screen/lib/host";import{say as t}from"efficient-web-builder/format/lib/editor-words";import{useProductCatalog as p}from"../../render/components/useProductCatalog.js";import{useGridSourceLock as f}from"./useGridSourceLock.js";function h(){const r=m(),n=p(),{selectedItem:c}=u(o=>o),d=c?.props?.code??"",e=(n??[]).find(o=>o.slug===d)??null,i=f()!==null;return!e||i?null:l("div",{className:"sf-blogsource",children:[s(a,{variant:"secondary",size:"md",className:"sf-blogsource-action",onClick:()=>r.send("storefront-editor:open-product",{slug:e.slug,name:e.name}),children:t("Edit product ✎")}),s("p",{className:"es-field-hint sf-hint-keep",children:t("Price and details come from the product record — edit them in the Products database and this block updates to match. The name follows the product’s design name unless it’s overridden per storefront in {place}.",{place:t("Storefront → Catalog")})})]})}export{h as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useContext as D,useEffect as R,useRef as N,useState as w}from"react";import{Button as v}from"efficient-shell/ui";import q from"efficient-web-builder/editor/components/SearchSelectField";import{ScreenDocumentContext as A}from"efficient-easel/screen/components/ScreenDocumentContext";import{loadStorefrontForms as H}from"./useStorefrontForms.js";import{onStorefrontFormsChanged as I}from"efficient-web-builder/format/lib/editor-events";import{openFormBuilder as J,requestFormEdit as G}from"efficient-web-builder/format/lib/editor-form-window";import{useEaselHost as O}from"efficient-easel/screen/lib/host";import{say as s,sayCount as W}from"efficient-web-builder/format/lib/editor-words";const P="__create-a-new-form__";function K({value:e,forms:o,loadFailed:i,emptyLabel:m}){const d=o??[],b=e?d.some(r=>r.slug===e):!0,f=o===null&&!i,g={value:"",label:f?s("Loading…"):i?s("Forms couldn’t be loaded"):m===void 0?s("No form yet"):s(m)},_=e&&!b?[{value:e,label:f||i?e:s("{slug} — no form with this name",{slug:e})}]:[],u=d.map(r=>({value:r.slug,label:r.is_active?r.title:s("{title} (switched off)",{title:r.title})})),k=f?[]:[{value:P,label:s("Create a new form")}];return[g,..._,...u,...k]}function M(e){return e===P?{action:"create"}:{action:"store",slug:e}}function Q({value:e,pickedId:o,forms:i}){if(!e||!o||i.some(d=>d.slug===e))return null;const m=i.find(d=>d.id===o);return m&&m.slug&&m.slug!==e?m.slug:null}function U(e){const o=[s("Goes to {place}",{place:s("Storefront → Forms")})],i=(e.notify_email??"").trim();return i&&o.push(s("Emails a copy to {email}",{email:i})),e.mailing_list_name&&o.push(e.subscribe_mode==="checkbox"?s("Joins the “{audience}” audience, but only when the consent box is ticked",{audience:e.mailing_list_name}):s("Joins the “{audience}” audience",{audience:e.mailing_list_name})),e.kind==="account_signup"&&o.push(e.signup_customer_type==="importer"?s("Creates a wholesale account"):s("Creates a retail account")),o}function V({value:e,onChange:o,label:i="Form",emptyLabel:m}){const d=O(),b=D(A),f=b?b.capabilities.hasForms:!0,[g,_]=w(null),[u,k]=w(!1),[r,E]=w(!1),[j,F]=w(!1),h=N(!0),x=N(e);x.current=e;const C=N(o);C.current=o;const S=N(null),y=(n=!1)=>H(n).then(c=>{if(h.current){_(c),k(!1);const p=Q({value:x.current,pickedId:S.current,forms:c});p&&C.current(p)}return c},()=>(h.current&&k(!0),[]));R(()=>(h.current=!0,f&&y(),()=>{h.current=!1}),[f]),R(()=>f?I(()=>{y(!0)}):void 0,[f]);const a=e?(g??[]).find(n=>n.slug===e)??null:null;a?S.current=a.id:e||(S.current=null);const z=!!e&&!a&&g!==null&&!u,L=K({value:e,forms:g,loadFailed:u,emptyLabel:m}),T=async()=>{E(!0),F(!1);try{const n=await G(d,{mode:"create"}),c=await y(!0);if(!h.current)return;if(n.status==="timeout"){F(!0);return}if(n.status!=="saved")return;const{form:p}=n;p.slug!==x.current&&C.current(p.slug),c.some(B=>B.id===p.id)||y(!0)}finally{h.current&&E(!1)}},$=n=>{const c=M(n);c.action==="create"?T():(F(!1),o(c.slug))};return f?l("div",{className:"sf-formpicker",children:[t(q,{label:i,options:L,fallback:"",value:e??"",onChange:$,placeholder:s("Search forms…")}),j&&t("p",{className:"sf-formsummary-warn",children:s("That didn’t come back — pick the form from the list, or try again.")}),a?l("div",{className:"sf-blogsource sf-formsummary",children:[l("div",{children:[t("div",{className:"sf-formsummary-caption",children:W("{n} field","{n} fields",a.fields.length)}),a.fields.length?t("ol",{className:"sf-formsummary-fields",children:a.fields.map((n,c)=>t("li",{children:n.label},n.key||`${n.label}-${c}`))}):t("p",{className:"es-field-hint sf-hint-keep",children:s("This form has no fields yet, so there is nothing for a visitor to fill in.")})]}),l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s("Where the answers go")}),t("ul",{className:"sf-formsummary-fields",children:U(a).map(n=>t("li",{children:n},n))})]}),!a.is_active&&t("p",{className:"sf-formsummary-warn",children:s("This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.",{place:s("Storefront → Forms")})}),l("div",{className:"sf-formsummary-actions",children:[t(v,{variant:"secondary",size:"
|
|
1
|
+
"use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import{useContext as D,useEffect as R,useRef as N,useState as w}from"react";import{Button as v}from"efficient-shell/ui";import q from"efficient-web-builder/editor/components/SearchSelectField";import{ScreenDocumentContext as A}from"efficient-easel/screen/components/ScreenDocumentContext";import{loadStorefrontForms as H}from"./useStorefrontForms.js";import{onStorefrontFormsChanged as I}from"efficient-web-builder/format/lib/editor-events";import{openFormBuilder as J,requestFormEdit as G}from"efficient-web-builder/format/lib/editor-form-window";import{useEaselHost as O}from"efficient-easel/screen/lib/host";import{say as s,sayCount as W}from"efficient-web-builder/format/lib/editor-words";const P="__create-a-new-form__";function K({value:e,forms:o,loadFailed:i,emptyLabel:m}){const d=o??[],b=e?d.some(r=>r.slug===e):!0,f=o===null&&!i,g={value:"",label:f?s("Loading…"):i?s("Forms couldn’t be loaded"):m===void 0?s("No form yet"):s(m)},_=e&&!b?[{value:e,label:f||i?e:s("{slug} — no form with this name",{slug:e})}]:[],u=d.map(r=>({value:r.slug,label:r.is_active?r.title:s("{title} (switched off)",{title:r.title})})),k=f?[]:[{value:P,label:s("Create a new form")}];return[g,..._,...u,...k]}function M(e){return e===P?{action:"create"}:{action:"store",slug:e}}function Q({value:e,pickedId:o,forms:i}){if(!e||!o||i.some(d=>d.slug===e))return null;const m=i.find(d=>d.id===o);return m&&m.slug&&m.slug!==e?m.slug:null}function U(e){const o=[s("Goes to {place}",{place:s("Storefront → Forms")})],i=(e.notify_email??"").trim();return i&&o.push(s("Emails a copy to {email}",{email:i})),e.mailing_list_name&&o.push(e.subscribe_mode==="checkbox"?s("Joins the “{audience}” audience, but only when the consent box is ticked",{audience:e.mailing_list_name}):s("Joins the “{audience}” audience",{audience:e.mailing_list_name})),e.kind==="account_signup"&&o.push(e.signup_customer_type==="importer"?s("Creates a wholesale account"):s("Creates a retail account")),o}function V({value:e,onChange:o,label:i="Form",emptyLabel:m}){const d=O(),b=D(A),f=b?b.capabilities.hasForms:!0,[g,_]=w(null),[u,k]=w(!1),[r,E]=w(!1),[j,F]=w(!1),h=N(!0),x=N(e);x.current=e;const C=N(o);C.current=o;const S=N(null),y=(n=!1)=>H(n).then(c=>{if(h.current){_(c),k(!1);const p=Q({value:x.current,pickedId:S.current,forms:c});p&&C.current(p)}return c},()=>(h.current&&k(!0),[]));R(()=>(h.current=!0,f&&y(),()=>{h.current=!1}),[f]),R(()=>f?I(()=>{y(!0)}):void 0,[f]);const a=e?(g??[]).find(n=>n.slug===e)??null:null;a?S.current=a.id:e||(S.current=null);const z=!!e&&!a&&g!==null&&!u,L=K({value:e,forms:g,loadFailed:u,emptyLabel:m}),T=async()=>{E(!0),F(!1);try{const n=await G(d,{mode:"create"}),c=await y(!0);if(!h.current)return;if(n.status==="timeout"){F(!0);return}if(n.status!=="saved")return;const{form:p}=n;p.slug!==x.current&&C.current(p.slug),c.some(B=>B.id===p.id)||y(!0)}finally{h.current&&E(!1)}},$=n=>{const c=M(n);c.action==="create"?T():(F(!1),o(c.slug))};return f?l("div",{className:"sf-formpicker",children:[t(q,{label:i,options:L,fallback:"",value:e??"",onChange:$,placeholder:s("Search forms…")}),j&&t("p",{className:"sf-formsummary-warn",children:s("That didn’t come back — pick the form from the list, or try again.")}),a?l("div",{className:"sf-blogsource sf-formsummary",children:[l("div",{children:[t("div",{className:"sf-formsummary-caption",children:W("{n} field","{n} fields",a.fields.length)}),a.fields.length?t("ol",{className:"sf-formsummary-fields",children:a.fields.map((n,c)=>t("li",{children:n.label},n.key||`${n.label}-${c}`))}):t("p",{className:"es-field-hint sf-hint-keep",children:s("This form has no fields yet, so there is nothing for a visitor to fill in.")})]}),l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s("Where the answers go")}),t("ul",{className:"sf-formsummary-fields",children:U(a).map(n=>t("li",{children:n},n))})]}),!a.is_active&&t("p",{className:"sf-formsummary-warn",children:s("This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.",{place:s("Storefront → Forms")})}),l("div",{className:"sf-formsummary-actions",children:[t(v,{variant:"secondary",size:"md",onClick:()=>J(d,a.id),children:s("Edit form ✎")}),t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),t("p",{className:"es-field-hint sf-hint-keep",children:s("The questions, the button text and the thank-you message all come from {place}. Edit them there — this section updates to match.",{place:s("Storefront → Forms")})})]}):l("div",{className:"sf-blogsource sf-formsummary",children:[u?l("p",{className:"es-field-hint sf-hint-keep",children:[s("This website’s forms couldn’t be loaded, so there is nothing to choose from yet."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]}):z&&t("p",{className:"sf-formsummary-warn",children:s("This section points at “{slug}”, and this website has no form with that name. Pick one from the list above, or leave it — nothing has been changed.",{slug:e??""})}),l("div",{className:"sf-formsummary-actions",children:[u&&t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{y(!0)},children:s("Try again")}),t(v,{variant:"secondary",size:"md",disabled:r,onClick:()=>{T()},children:s("New form +")})]}),!u&&t("p",{className:"es-field-hint sf-hint-keep",children:s("Pick a form to show here, or build a new one. Forms are made once in {place} and can be shown on any number of pages.",{place:s("Storefront → Forms")})})]})]}):t("div",{className:"sf-formpicker",children:t("div",{className:"sf-blogsource sf-formsummary",children:l("div",{children:[t("div",{className:"sf-formsummary-caption",children:s(i)}),l("p",{className:"es-field-hint sf-hint-keep",children:[s("Forms aren’t available in this editor, so there is nothing to choose here."),e?` ${s("This section still points at “{slug}”, and that is unchanged.",{slug:e})}`:""]})]})})})}export{P as CREATE_SENTINEL,V as default,Q as followRenamedForm,U as formDestinationLines,K as formPickerOptions,M as resolveFormPick};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type GalleryProductValue } from "../../render/lib/content/source-values.js";
|
|
2
2
|
interface Props {
|
|
3
3
|
value?: GalleryProductValue;
|
|
4
4
|
onChange: (value: GalleryProductValue) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as l,jsxs as h,Fragment as F}from"react/jsx-runtime";import{mediaGroupVehicle as O}from"../../render/lib/content/source-values.js";import{useEffect as P,useMemo as N,useState as S}from"react";import{IconButton as E,Tooltip as H}from"efficient-shell/ui";import{SettingsField as C}from"efficient-easel/panel";import{FieldSelect as v}from"efficient-easel/fields";import{BlockProductIcon as W,MediaIcon as G}from"efficient-easel/icons";import{loadProductCatalog as M}from"../../render/components/useProductCatalog.js";import{loadWheelMediaGroups as T}from"./useWheelMediaGroups.js";import $ from"efficient-easel/screen/components/UiIcon";import{say as n}from"efficient-web-builder/format/lib/editor-words";function y({label:o,hidden:a,onToggle:i}){return h("div",{className:"sf-field-head",children:[l("span",{className:"sf-field-label sf-field-label--inline",children:o}),i&&l(H,{content:a?n("Show on the card"):n("Hide on the card"),children:l(E,{size:"md","aria-pressed":!!a,"aria-label":a?n("Show on the card"):n("Hide on the card"),onClick:i,children:a?l($,{name:"eye-off",size:14}):l($,{name:"eye",size:14})})})]})}const V=[["photos","Photos"],["lifestyle","Lifestyle"],["accessories","Accessories"],["others","Others"],["videos","Videos"]];function w(o){switch(o){case"photos":return n("Photos");case"lifestyle":return n("Lifestyle");case"accessories":return n("Accessories");case"others":return n("Others");case"videos":return n("Videos");default:return String(o)}}function j(o){if(!o)return[];const a=[];for(const[i,r]of V)(o[i]??[]).forEach((s,u)=>{const d=(s.items??[]).filter(t=>t.kind==="image").map(t=>t.url);d.length!==0&&a.push({key:`${String(i)}:${u}`,label:s.name?`${w(i)} · ${s.name}`:w(i),name:s.name||r,vehicle:O(s),images:d})});return a}function I(o){return o?o.categories&&o.categories.length?o.categories:o.process?[o.process]:[]:[]}function k(o,a,i){const r=a?.find(c=>c.slug===o.code)??null;if(!r)return{name:void 0,href:void 0,cover:void 0,photos:[],vehicle:void 0,eyebrow:void 0};const s=o.group?i.find(c=>c.name===o.group):void 0,u=o.finish?r.finishes.find(c=>c.name===o.finish&&c.src):void 0;let d,t=[];return s&&s.images.length?(d=s.images[0],t=s.images.slice(1)):(d=u?.src||r.coverImage||void 0,t=[]),{name:r.name,href:`/wheels/${r.slug}`,cover:d,photos:t,vehicle:s?.vehicle||void 0,eyebrow:void 0}}function B({value:o,onChange:a}){const i=N(()=>o??{},[o]),[r,s]=S(null),[u,d]=S([]),[t,c]=S(!1);P(()=>{let e=!1;return M().then(f=>{e||s(f)}),()=>{e=!0}},[]),P(()=>{let e=!1;if(!i.code){d([]);return}return c(!0),T(i.code).then(f=>{e||(d(j(f)),c(!1))}),()=>{e=!0}},[i.code]);const m=N(()=>r?.find(e=>e.slug===i.code)??null,[r,i.code]),x=N(()=>I(m),[m]),L=r===null;function g(e,f=u){const b={...i,...e};a({...b,...k(b,r,f)})}function z(e){if(!e){a({});return}const f=r?.find(b=>b.slug===e)??null;g({code:e,category:I(f)[0]??"",finish:"",group:""},[])}function p(e){a({...i,[e]:!i[e]})}return h("div",{children:[l(C,{label:n("Product"),icon:l(W,{}),children:l(v,{value:i.code??"",ariaLabel:n("Product"),readOnly:L,onChange:z,options:[{label:L?n("Loading…"):n("Select a product…"),value:""},...(r??[]).map(e=>({label:e.name,value:e.slug}))]})}),i.code&&h(F,{children:[h("div",{className:`sf-field${i.hideName?" is-hidden":""}`,children:[l(y,{label:n("Title / product"),hidden:i.hideName,onToggle:()=>p("hideName")}),h("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:[m?.name??i.name??"—",l("span",{style:{opacity:.6},children:n("(auto)")})]})]}),h("div",{className:`sf-field${i.hideProcess?" is-hidden":""}`,children:[l(y,{label:n("Category"),hidden:i.hideProcess,onToggle:()=>p("hideProcess")}),l(v,{value:i.category??"",ariaLabel:n("Category"),readOnly:x.length===0,onChange:e=>g({category:e}),options:x.length===0?[{label:n("No categories on this product"),value:""}]:x.map(e=>({label:e,value:e}))})]}),l(C,{label:n("Media group"),icon:l(G,{}),hint:n("Its photos become the card cover and lightbox, and its car fills the Vehicle below. No group → the product’s cover image."),children:l(v,{value:i.group??"",ariaLabel:n("Media group"),readOnly:t,onChange:e=>g({group:e}),options:[{label:t?n("Loading…"):u.length===0?n("Cover image only (no media groups)"):n("Cover image only"),value:""},...u.map(e=>({label:e.label,value:e.name}))]})}),h("div",{className:`sf-field${i.hideEyebrow?" is-hidden":""}`,children:[l(y,{label:h(F,{children:[n("Vehicle")," ",l("span",{style:{fontWeight:400,opacity:.6},children:n("(from media group)")})]}),hidden:i.hideEyebrow,onToggle:()=>p("hideEyebrow")}),l("div",{style:{display:"flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:6,border:"1px solid var(--sf-field-border, rgba(128,128,128,0.3))",opacity:.75,fontSize:13},children:i.vehicle||"—"})]}),h("div",{className:`sf-field${i.hideFinish?" is-hidden":""}`,children:[l(y,{label:n("Finish"),hidden:i.hideFinish,onToggle:()=>p("hideFinish")}),l(v,{value:i.finish??"",ariaLabel:n("Finish"),onChange:e=>g({finish:e}),options:[{label:n("Default (the product’s default finish)"),value:""},...(m?.finishes??[]).map(e=>({label:e.src?e.name:n("{name} — no render",{name:e.name}),value:e.name,disabled:!e.src}))]})]})]})]})}export{B as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type GalleryShowcaseSourceValue } from "../../render/lib/content/source-values.js";
|
|
2
2
|
interface Props {
|
|
3
3
|
value?: GalleryShowcaseSourceValue | null;
|
|
4
4
|
onChange: (value: GalleryShowcaseSourceValue | null) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as d,jsxs as
|
|
1
|
+
"use client";import{jsx as d,jsxs as Q}from"react/jsx-runtime";import{mediaGroupVehicle as U}from"../../render/lib/content/source-values.js";import{SettingsField as N}from"efficient-easel/panel";import{FieldSelect as H}from"efficient-easel/fields";import{BlockProductIcon as X,CategoryIcon as Y}from"efficient-easel/icons";import{useEffect as L,useMemo as Z,useRef as w,useState as P}from"react";import{storefrontAdmin as v}from"../../render/lib/api/index.js";import{useEaselHost as ee}from"efficient-easel/screen/lib/host";import{getEditorToken as te}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as re}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as I}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as oe}from"./useStorefrontCategories.js";import{useCategoryFilter as se}from"./useCategoryFilter.js";import{snapshotChanged as ne}from"efficient-web-builder/editor/components/useSnapshotSource";import ae from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as T}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function ie(e,r){return r===a?e:e.filter(s=>s.process===r)}function p(e,r){return e.map(s=>({image:s.items[0]?.url,photos:s.items.map(o=>({src:o.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:U(s),name:r.name,meta:s.finish})).filter(s=>!!s.image)}function W(e){const r=te();return r?v.getWheelDetail(r,e,{siteId:re()}):Promise.reject(new Error("editor not authenticated"))}async function le(e){const r=await W(e),s={slug:r.slug,name:r.name,process:r.process},o=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...s,vehicleCards:p(o.lifestyle??[],s),wheelCards:p(o.photos??[],s),othersCards:p(o.others??[],s)}}async function ce(e,r){const s=await Promise.all(e.map(i=>W(i.slug).catch(()=>null))),o=[],h=[],g=[];for(const i of s){if(!i)continue;const c={slug:i.slug,name:i.name,process:i.process},m=i.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};o.push(...p(m.lifestyle??[],c)),h.push(...p(m.photos??[],c)),g.push(...p(m.others??[],c))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:o,wheelCards:h,othersCards:g,category:r}}function ue({value:e,onChange:r}){const s=ee(),[o,h]=P(null),[g,i]=P(null),[c,m]=P(!1),[R,A]=P(!1),u=w(!0),y=w(e);y.current=e;const B=w(r);B.current=r;const F=(t,f=!1)=>{m(!0),f||A(!1),t().then(x=>{u.current&&(ne(x,y.current)&&B.current(x),A(!1))}).catch(()=>{u.current&&!f&&A(!0)}).finally(()=>{u.current&&m(!1)})},S=(t,f=!1)=>F(()=>le(t),f),C=(t,f=!1)=>F(()=>ce(ie(o??[],t),t),f);L(()=>(u.current=!0,I().then(t=>{u.current&&h(t)}),oe().then(t=>{u.current&&i(t)}),()=>{u.current=!1}),[]);const b=w(!1);L(()=>{if(b.current)return;const t=y.current;if(!t?.slug){b.current=!0;return}if(t.slug===a){if(o===null)return;b.current=!0,C(t.category??a,!0)}else b.current=!0,S(t.slug,!0)},[o]);const l=e?.slug===a,k=Z(()=>o&&e?.slug&&!l?o.find(t=>t.slug===e.slug)??null:null,[o,e?.slug,l]),{category:O,setCategory:E,categoryNames:D,filtered:M}=se(o,g);L(()=>{l?e?.category&&E(e.category):k?.process&&E(k.process)},[k,l,e?.category]);const G=o===null,_=!!e?.slug&&!l&&o!==null&&!k,V=t=>{if(!t){r(null);return}if(t===a){C(O);return}S(t)},$=t=>{E(t),y.current?.slug===a&&C(t)},q=()=>{e?.slug&&(I(!0).then(t=>{u.current&&h(t)}),l?C(e.category??a):S(e.slug))},z=()=>{e?.slug&&s.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),J=R?"error":c?"loading":"idle",K=R?n("Couldn’t reach the product catalog."):c?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):l?T("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):T("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return Q("div",{children:[d(N,{label:n("Category"),icon:d(Y,{}),children:d(H,{value:O,ariaLabel:n("Category"),onChange:$,readOnly:G,options:[{label:n("All products"),value:a},...D.map(t=>({label:t,value:t}))]})}),d(N,{label:n("Product"),icon:d(X,{}),children:d(H,{value:e?.slug??"",ariaLabel:n("Product"),onChange:V,readOnly:G||c,options:[{label:G?n("Loading…"):n("None (write the cards yourself)"),value:""},{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[],...M.map(t=>({label:t.name,value:t.slug}))]})}),e?.slug?d(ae,{status:J,statusText:K,onRefresh:q,busy:c,edit:l?void 0:{label:n("Edit product ✎"),onClick:z},hint:l?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.")}):d("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{ue as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as r,Fragment as G}from"react/jsx-runtime";import{useCallback as L,useEffect as X,useRef as le,useState as E}from"react";import{ApiError as Te,storefrontAdmin as A}from"../../render/lib/api/index.js";import{requestMediaPick as Ee}from"efficient-easel/screen/lib/media-picker";import{refreshSiteLiveState as Ae}from"efficient-web-builder/editor/lib/site-live-state";import{useEaselHost as fe}from"efficient-easel/screen/lib/host";import{onHeaderMenusChanged as Pe}from"efficient-web-builder/format/lib/editor-events";import{loadAllSitesMenus as Oe,refreshAllSitesMenus as Me}from"../../render/lib/menu-source.js";import{headerMenuMissingWarning as Re}from"../../render/lib/content/menu-placeholder.js";import{say as l,sayCount as De}from"efficient-web-builder/format/lib/editor-words";import{sayWith as ne}from"../lib/say-with.js";import{NEUTRAL_SITE_NAME as ze}from"../../render/lib/content/site.js";import{WIDTH_CHOICE_LABEL as ge}from"efficient-web-builder/format/lib/content/section-width";import{usePreviewHeader as Be}from"efficient-web-builder/render/components/PreviewHeaderContext";import{HEADER_LOGO_PX as be,HEADER_LOGO_PX_MIN as Ge,HEADER_LOGO_PX_MAX as Ie}from"efficient-web-builder/render/components/Logo";import{HEADER_HEIGHT_PX as $,HEADER_MENU_GAP_PX as V}from"efficient-web-builder/render/lib/puck/header-clearance";import Fe from"efficient-web-builder/editor/components/SectionThemePicker";import{HEADER_THEME_FOLLOW as xe}from"../../render/lib/content/header-theme.js";import{resolveHeaderInkMode as We}from"efficient-web-builder/render/lib/puck/header-ink";import{absolutizeApiUrl as Ue}from"efficient-web-builder/render/lib/media";import{loadHeaderSettings as je,primeHeaderSettings as Xe,clearHeaderSettingsCache as Ve,toPreviewHeaderSettings as Ke}from"../lib/header-settings-source.js";import{Banner as qe,Button as ae,Drawer as Ye,InputNumber as $e,LoadingSpinner as Ze,MediaUploadField as Je,ShowWhen as K,Slider as Qe,Tabs as et,tabButtonId as tt,tabPanelId as lt}from"efficient-shell/ui";import{CountryShowAsTiles as nt}from"./CountryShowAsTiles.js";import{truthy as at,visibleFields as ot}from"efficient-web-builder/render/lib/puck/show-when";const it={field:"country_selector_enabled",is:!0},oe={not:{context:"placeholderMode",is:!0}},st={field:"menu_position",is:"beside"},rt={all:[{field:"logo_position",is:"center"},{not:{field:"menu_position",is:"center"}}]},ct={all:[oe,at("country_selector_enabled")]};import{SettingsDefaultReset as ie,SettingsSwitch as q}from"efficient-easel/panel";import{FieldSelect as se}from"efficient-easel/fields";import{useEaselStrings as dt}from"efficient-easel/strings";import{ListIcon as ut,LogoIcon as ht,SettingsIcon as mt,StylesIcon as pt}from"efficient-easel/icons";import{GroupLabel as ft,Segmented as P}from"efficient-web-builder/editor/lib/puck/controls";import{HintsToggle as re,SHOW_HINTS_DEFAULT as gt}from"efficient-web-builder/editor/components/WebsiteSettingsPanel";const ce="sf-header",_e="sf-header-size-label",ve="sf-header-gap-label",we="sf-header-height-label",Se=[{id:"logo",label:"Logo",icon:e(ht,{})},{id:"menu",label:"Menu",icon:e(ut,{}),showWhen:oe},{id:"tools",label:"Tools",icon:e(mt,{})},{id:"look",label:"Look",icon:e(pt,{})}];function bt({tokenRef:a,siteId:o,onClose:b,onAuthExpired:_,inline:O,placeholderMode:y,websiteName:v,onOpenWebsiteSettings:C}){const m=fe(),M=dt(),[n,x]=E(null),[R,w]=E(null),[D,Y]=E(!1),[d,k]=E(Se[0].id),[u,T]=E(gt),F=n,Z={placeholderMode:y},J=Object.values(ot(Object.fromEntries(Se.map(t=>[t.id,t])),F,Z)),z=J.find(t=>t.id===d)??J[0],[ye,Ce]=E(0),{setSettings:ue}=Be(),W=le(null),U=le(null),j=le(null);X(()=>{let t=!1,s=null,h=null;const c=3,H=(I,B=0)=>{t||w(null),je(I,o,B>0).then(He=>!t&&x(He)).catch(()=>{t||(B+1<c?h=setTimeout(()=>H(I,B+1),600*(B+1)):w(l("Could not load header settings.")))})},pe=a.current;if(pe)H(pe);else{let I=0;s=setInterval(()=>{const B=a.current;if(B){s&&clearInterval(s),s=null,t||w(null),H(B);return}I+=250,I===5e3&&!t&&w(l("Waiting for editor authorization…")),I>=3e4&&(s&&clearInterval(s),s=null,t||w(l("Not authorized yet — reopen once the editor has loaded.")))},250)}return()=>{t=!0,s&&clearInterval(s),h&&clearTimeout(h)}},[a,ye,o]),X(()=>{n&&ue(Ke(n))},[n,ue]),X(()=>()=>{W.current&&clearTimeout(W.current),U.current&&clearTimeout(U.current),j.current&&clearTimeout(j.current)},[]);const g=L(async(t,s)=>{const h=a.current;if(!h||!n)return;const c=n;s&&x({...n,...s}),Y(!0),w(null);try{const H=await t(h);x(H),Xe(H,o),Ae()}catch(H){x(c),H instanceof Te&&H.status===401?(Ve(o),_?.(),w(l("Authorization expired — try again in a moment."))):w(l("Could not save. Please retry."))}finally{Y(!1)}},[n,a,_,o]),p=L(t=>g(s=>A.updateHeaderSettings(t,s,o??void 0),t),[g,o]),he=L(t=>{g(s=>A.setHeaderLogoFromAsset(t,s,o??void 0))},[g,o]),Le=L(()=>{Ee(m,{accept:"image/svg+xml",title:l("Logo (SVG)")}).then(t=>{t&&he(t.id)})},[he]),Q=L((t,s=!0)=>{x(c=>c&&{...c,logo_size_px:t}),W.current&&clearTimeout(W.current);const h=()=>{g(c=>A.updateHeaderSettings({logo_size_px:t},c,o??void 0))};s?h():W.current=setTimeout(h,400)},[g,o]),ee=L((t,s=!0)=>{x(c=>c&&{...c,height_px:t}),U.current&&clearTimeout(U.current);const h=()=>{g(c=>A.updateHeaderSettings({height_px:t},c,o??void 0))};s?h():U.current=setTimeout(h,400)},[g,o]),te=L((t,s=!0)=>{x(c=>c&&{...c,menu_gap_px:t}),j.current&&clearTimeout(j.current);const h=()=>{g(c=>A.updateHeaderSettings({menu_gap_px:t},c,o??void 0))};s?h():j.current=setTimeout(h,400)},[g,o]),Ne=L(()=>{g(async t=>{const s=await A.clearHeaderLogo(t,o??void 0);return s.reverse_logo?A.updateHeaderSettings({reverse_logo:!1},t,o??void 0):s})},[g,o]),ke=L(t=>{x(s=>s&&{...s,menu:t?.id??null,menu_handle:t?.handle??null,menu_name:t?.name??null,menu_items:t?t.items.map(h=>({label:h.label,url:h.url,dropdown_menu:h.dropdown_menu??null,dropdown_items:h.dropdown_items??[]})):[]}),g(s=>A.updateHeaderSettings({menu:t?.id??null},s,o??void 0))},[g,o]),me=r(G,{children:[R&&e(qe,{tone:"danger",className:"mx-4 mt-3",action:n?void 0:e(ae,{variant:"secondary",size:"sm",onClick:()=>Ce(t=>t+1),children:l("Retry")}),children:R}),n?r(G,{children:[e(Tt,{tabs:J,activeId:z.id,onSelect:k}),r("div",{id:lt(ce,z.id),role:"tabpanel","aria-labelledby":tt(ce,z.id),className:"flex flex-col p-4 [&>*+*]:mt-3",children:[z.id==="logo"&&r(G,{children:[e(S,{label:"Image"}),e(K,{rule:oe,values:F,context:Z,children:e(xt,{settings:n,websiteName:v,onPick:Le,onClear:Ne,showHint:u})}),e(f,{label:"Reverse the Logo",children:e(q,{checked:n.reverse_logo,onChange:t=>p({reverse_logo:t}),ariaLabel:l("Reverse the Logo")})}),e(N,{shown:u,children:l("Keeps the logo readable on any header — flips just its black & white parts to contrast the bar behind it (in both light and dark themes). Any other colors are kept as-is.")}),e(S,{label:"Placement"}),e(vt,{label:i.logoPosition.label,value:i.logoPosition.options.find(t=>t.value===i.logoPosition.choose(n.logo_position))?.label,children:e(P,{value:i.logoPosition.choose(n.logo_position),options:i.logoPosition.options,onChange:t=>p({logo_position:t}),ariaLabel:i.logoPosition.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:_e,className:"text-xs text-[var(--ink-muted)]",children:l("Size")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.logo_size_px!=null||void 0,children:[n.logo_size_px??be[n.logo_size],"px"]}),e(ie,{label:l("Size"),words:M.panel,changed:n.logo_size_px!=null,onReset:()=>Q(null)})]})]}),e(de,{labelledBy:_e,min:Ge,max:Ie,step:2,value:n.logo_size_px??be[n.logo_size],onPreview:t=>Q(t,!1),onCommit:t=>Q(t,!0)}),e(N,{shown:u,children:l("Sets the logo’s height; the width follows the logo’s own proportions.")})]}),e(re,{shown:u,onChange:T})]}),z.id==="menu"&&r(G,{children:[e(S,{label:"Links"}),e(_t,{token:a.current,menuId:n.menu,menuName:n.menu_name,itemCount:n.menu_items?.length??0,onPick:ke}),e(f,{label:i.menuAlign.label,children:e(P,{value:i.menuAlign.choose(n.menu_position),options:i.menuAlign.options.filter(t=>t.value!=="beside"||n.logo_position!=="center"),onChange:t=>p({menu_position:t}),ariaLabel:i.menuAlign.label})}),e(K,{rule:st,values:F,children:r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:ve,className:"text-xs text-[var(--ink-muted)]",children:l("Space from the logo")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.menu_gap_px!=null||void 0,children:[n.menu_gap_px??V.default,"px"]}),e(ie,{label:l("Space from the logo"),words:M.panel,changed:n.menu_gap_px!=null,onReset:()=>te(null)})]})]}),e(de,{labelledBy:ve,min:V.min,max:V.max,step:V.step,value:n.menu_gap_px??V.default,onPreview:t=>te(t,!1),onCommit:t=>te(t,!0)}),e(N,{shown:u,children:l("How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.")})]})}),e(f,{label:i.menuRow.label,children:e(P,{value:i.menuRow.choose(n.menu_row),options:i.menuRow.options,onChange:t=>p({menu_row:t}),ariaLabel:i.menuRow.label})}),e(K,{rule:rt,values:F,children:e(f,{label:"Left items",children:e("div",{className:"w-16",children:e(se,{value:n.menu_split??3,ariaLabel:l("Left items"),onChange:t=>p({menu_split:t}),options:[1,2,3,4].map(t=>({label:String(t),value:t}))})})})}),e(f,{label:i.navTextCase.label,children:e(P,{value:i.navTextCase.choose(n.nav_text_case),options:i.navTextCase.options,onChange:t=>p({nav_text_case:t}),ariaLabel:i.navTextCase.label})}),e(N,{shown:u,children:ne(l("{uppercase} draws SEARCH and BAG; {capitalised} draws Search and Bag. It covers the menu links and the Tools words together, and it leaves a name like FusionForge exactly as you typed it."),{uppercase:e("strong",{children:l("Uppercase")}),capitalised:e("strong",{children:l("Capitalised")})})})]}),z.id==="tools"&&r(G,{children:[e(S,{label:"Style"}),e(f,{label:i.utilStyle.label,children:e(P,{value:i.utilStyle.choose(n.util_style),options:i.utilStyle.options,onChange:t=>p({util_style:t}),ariaLabel:i.utilStyle.label})}),e(N,{shown:u,children:ne(l("{text} draws the words — Search, Account, Bag — instead of the little pictures. It changes how they look, not whether they are shown: that stays with the switches below."),{text:e("strong",{children:l("Text")})})}),e(S,{label:"Search"}),e(f,{label:"Search",children:e(q,{checked:n.search_enabled,onChange:t=>p({search_enabled:t}),ariaLabel:l("Search")})}),e(f,{label:i.searchPosition.label,children:e(P,{value:i.searchPosition.choose(n.search_position),options:i.searchPosition.options,onChange:t=>p({search_position:t}),ariaLabel:i.searchPosition.label})}),e(S,{label:"Country selector"}),e(f,{label:"Show selector",children:e(q,{checked:n.country_selector_enabled,onChange:t=>p({country_selector_enabled:t}),ariaLabel:l("Show selector")})}),e(K,{rule:it,values:{country_selector_enabled:n.country_selector_enabled},children:e(f,{label:"Show as",stacked:!0,children:e(nt,{value:n.country_selector_show_as,onChange:t=>p({country_selector_show_as:t})})})}),e(K,{rule:ct,values:F,context:Z,children:e(N,{shown:u,children:ne(l("Which countries this website serves — and each region's own URL — is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration."),{place:e("strong",{children:l("Storefront › Settings › Regions & currencies")})})})}),e(S,{label:"Account and cart"}),e(f,{label:"Account",children:e(q,{checked:n.account_enabled??!0,onChange:t=>p({account_enabled:t}),ariaLabel:l("Account")})}),e(f,{label:"Cart",children:e(q,{checked:n.cart_enabled??!0,onChange:t=>p({cart_enabled:t}),ariaLabel:l("Cart")})}),e(re,{shown:u,onChange:T})]}),z.id==="look"&&r(G,{children:[e(S,{label:"Dimensions"}),e(f,{label:i.width.label,children:e(P,{value:i.width.choose(n.width),options:i.width.options,onChange:t=>p({width:t}),ariaLabel:i.width.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:we,className:"text-xs text-[var(--ink-muted)]",children:l("Height")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.height_px!=null||void 0,children:[n.height_px??$.default,"px"]}),e(ie,{label:l("Height"),words:M.panel,changed:n.height_px!=null,onReset:()=>ee(null)})]})]}),e(de,{labelledBy:we,min:$.min,max:$.max,step:2,value:n.height_px??$.default,onPreview:t=>ee(t,!1),onCommit:t=>ee(t,!0)}),e(N,{shown:u,children:l("Sets how tall the header bar is; the content below it shifts down to match.")})]}),e(f,{label:"Border thickness",children:e("div",{className:"w-24",children:e($e,{value:n.border_thickness,min:0,max:20,precision:0,size:"sm",suffix:"px","aria-label":l("Border thickness"),onChange:t=>p({border_thickness:Math.max(0,t??0)})})})}),e(S,{label:"Color"}),e(f,{label:"Theme",children:e(Fe,{value:n.theme??xe,onChange:t=>p({theme:t===xe?null:t}),followLabel:l("Follow the site theme")})}),e(N,{shown:u,children:l("The color the bar paints once it is solid — after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.")}),e(f,{label:i.topTextColor.label,children:e(P,{value:i.topTextColor.choose(n.top_text_color),options:i.topTextColor.options,onChange:t=>p({top_text_color:t}),ariaLabel:i.topTextColor.label})}),e(N,{shown:u,children:l("Auto reads what the first section on each page says it is — dark, light or accent — and picks the text that can be read on it. Set Light or Dark to decide it yourself when Auto reads a page wrong.")}),e(S,{label:"Behavior"}),e(f,{label:"Sticky header",children:e("div",{className:"w-32",children:e(se,{value:n.sticky,ariaLabel:l("Sticky header"),onChange:t=>p({sticky:t}),options:[{label:l("None"),value:"none"},{label:l("Always"),value:"always"},{label:l("On scroll up"),value:"on_scroll_up"}]})})}),C&&r(G,{children:[e(S,{label:"Display mode"}),e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:l("Set the default Light / Dark / Auto mode and show or hide the light↔dark switch in Appearance.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:C,children:l("Set up display mode →")})]}),e(re,{shown:u,onChange:T})]})]})]}):R?null:e(Ze,{size:"sm",padding:"p-4",label:l("Loading…")})]});return O?r("div",{className:"flex flex-col",children:[D&&e("div",{className:"px-4 pt-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]}):r(Ye,{open:!0,onClose:b??(()=>{}),side:"right",size:"sm",title:l("Header"),children:[D&&e("div",{className:"pb-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]})}function xt({settings:a,websiteName:o,onPick:b,onClear:_,showHint:O}){const y=!!a.logo_url,v=!y&&!!a.default_logo_url,C=Ue(a.effective_logo_url),m=o&&o.trim()?o.trim():ze;return r("div",{className:"flex flex-col gap-2",children:[e(Je,{value:C||"",onChange:M=>{M||_()},onPick:b,accept:"image/svg+xml,.svg",acceptHint:"SVG",fit:"contain",height:80,placeholder:l("No logo — “{name}” wordmark shown",{name:m}),replaceLabel:y?l("Replace SVG logo"):l("Upload SVG logo"),allowRemove:y,removeLabel:l("Use company default")}),e(N,{shown:O,children:y?l("Custom SVG logo uploaded for this store."):v?l("Using your company logo from the database."):l("No company logo on file — upload an SVG or the wordmark is used.")})]})}function _t({token:a,menuId:o,menuName:b,itemCount:_,onPick:O}){const y=fe(),[v,C]=E(null),[m,M]=E(!1),n=L(d=>{C(d),M(!0)},[]);X(()=>{let d=!1;return Oe(a).then(k=>!d&&n(k)).catch(()=>!d&&C([])),()=>{d=!0}},[a,n]),X(()=>{let d=!1;const k=Pe(()=>{Me(a).then(u=>!d&&n(u)).catch(()=>{})});return()=>{d=!0,k()}},[a,n]);const x=v===null,R=!x&&(v?.length??0)===0,w=!x&&(v??[]).some(d=>d.id===o),D=w?o:"",Y=m&&!!o&&!w;return r("div",{className:"flex flex-col gap-2",children:[e(f,{label:"Menu",children:e("div",{className:"w-[170px] max-w-full",children:e(se,{value:D,ariaLabel:l("Menu"),readOnly:x||R,onChange:d=>{const k=d?(v??[]).find(u=>u.id===d):null;O(k?{...k,items:k.items.map(u=>({...u,dropdown_items:(v??[]).find(T=>T.id===u.dropdown_menu)?.items.map(T=>({label:T.label,url:T.url}))??[]}))}:null)},options:[{label:x?l("Loading…"):R?l("No menus"):l("Default links"),value:""},...(v??[]).map(d=>({label:`${d.name} (${d.item_count??d.items.length})`,value:d.id}))]})})}),Y?e("p",{className:"text-[12px] text-[var(--sf-warning,#b45309)]",children:Re()}):e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:D?De("Header shows “{name}” — {n} link.","Header shows “{name}” — {n} links.",_,{name:b??l("the linked menu")}):R?l("No menus yet. Create one in {place}, then pick it here.",{place:l("Storefront → Menus")}):l("Pick a menu to drive the header links, or keep the built-in default links.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:()=>y.send("storefront-editor:open-menus",{menuId:D||null}),children:D?l("Edit menu →"):l("Manage menus →")})]})}function N({shown:a,children:o}){return a?e("p",{className:"text-[11px] text-[var(--sf-muted)]",children:o}):null}function de({labelledBy:a,value:o,min:b,max:_,step:O,onPreview:y,onCommit:v}){const C=m=>{m instanceof HTMLInputElement&&m.type==="range"&&v(Number(m.value))};return e("div",{onPointerUp:m=>C(m.target),onKeyUp:m=>{/^(Arrow|Home|End|Page)/.test(m.key)&&C(m.target)},children:e(Qe,{value:o,min:b,max:_,step:O,showInput:!1,size:"sm","aria-labelledby":a,valueText:m=>l("{n} pixels",{n:m}),onChange:m=>{m!=null&&y(m)}})})}function vt({label:a,value:o,children:b}){return r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{className:"text-xs text-[var(--ink-muted)]",children:l(a)}),o&&e("span",{className:"text-[12px] text-[var(--ink-faint)]",children:l(o)})]}),b]})}function S({label:a}){return e(ft,{label:a})}function f({label:a,children:o,stacked:b=!1}){return b?r("div",{className:"flex flex-col gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),o]}):r("div",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),e("div",{className:"flex-shrink-0",children:o})]})}const wt=[{label:"Left",value:"left"},{label:"Center",value:"center"}],St=[{label:"Left",value:"left"},{label:"Right",value:"right"}],yt=[{label:"Right",value:"left"},{label:"Centered",value:"center"},{label:"Beside logo",value:"beside"}],Ct=[{label:"Own row",value:"top"},{label:"Same row",value:"inline"}],Lt=[{label:ge.page,value:"page"},{label:ge.full,value:"full"}],Nt=[{label:"Icon",value:"icon"},{label:"Text",value:"text"}],kt=[{label:"Uppercase",value:"uppercase"},{label:"Capitalised",value:"capitalised"}],Ht=[{label:"Auto",value:"auto"},{label:"Light",value:"light"},{label:"Dark",value:"dark"}],i={logoPosition:{label:"Position",options:wt,choose:a=>a==="right"?"center":a},menuAlign:{label:"Alignment",options:yt,choose:a=>a==="center"?"center":a==="beside"?"beside":"left"},menuRow:{label:"Row",options:Ct,choose:a=>a==="inline"?"inline":"top"},searchPosition:{label:"Position",options:St,choose:a=>a},width:{label:"Width",options:Lt,choose:a=>a},navTextCase:{label:"Letters",options:kt,choose:a=>a==="capitalised"?"capitalised":"uppercase"},utilStyle:{label:"Show as",options:Nt,choose:a=>a==="text"?"text":"icon"},topTextColor:{label:"Text color at the top",options:Ht,choose:a=>We(a)}};function Tt({tabs:a,activeId:o,onSelect:b}){return e("div",{className:"es-insp-tabs",children:e(et,{variant:"underline",block:!0,labelsFit:!0,"aria-label":l("Header settings"),idPrefix:ce,value:o,onChange:b,items:a.map(_=>({id:_.id,icon:_.icon,label:l(_.label)}))})})}export{f as Field,i as HEADER_SEGMENTED,Se as HEADER_TABS,ce as HEADER_TABS_ID_PREFIX,Tt as HeaderTabStrip,oe as OFF_PLACEHOLDER,bt as default};
|
|
1
|
+
"use client";import{jsx as e,jsxs as r,Fragment as G}from"react/jsx-runtime";import{useCallback as L,useEffect as X,useRef as le,useState as E}from"react";import{ApiError as Te,storefrontAdmin as A}from"../../render/lib/api/index.js";import{requestMediaPick as Ee}from"efficient-easel/screen/lib/media-picker";import{refreshSiteLiveState as Ae}from"efficient-web-builder/editor/lib/site-live-state";import{useEaselHost as fe}from"efficient-easel/screen/lib/host";import{onHeaderMenusChanged as Pe}from"efficient-web-builder/format/lib/editor-events";import{loadAllSitesMenus as Oe,refreshAllSitesMenus as Me}from"../../render/lib/menu-source.js";import{headerMenuMissingWarning as Re}from"../../render/lib/content/menu-placeholder.js";import{say as l,sayCount as De}from"efficient-web-builder/format/lib/editor-words";import{sayWith as ne}from"../lib/say-with.js";import{NEUTRAL_SITE_NAME as ze}from"../../render/lib/content/site.js";import{WIDTH_CHOICE_LABEL as ge}from"efficient-web-builder/format/lib/content/section-width";import{usePreviewHeader as Be}from"efficient-web-builder/render/components/PreviewHeaderContext";import{HEADER_LOGO_PX as be,HEADER_LOGO_PX_MIN as Ge,HEADER_LOGO_PX_MAX as Ie}from"efficient-web-builder/render/components/Logo";import{HEADER_HEIGHT_PX as $,HEADER_MENU_GAP_PX as V}from"efficient-web-builder/render/lib/puck/header-clearance";import Fe from"efficient-web-builder/editor/components/SectionThemePicker";import{HEADER_THEME_FOLLOW as xe}from"../../render/lib/content/header-theme.js";import{resolveHeaderInkMode as We}from"efficient-web-builder/render/lib/puck/header-ink";import{absolutizeApiUrl as Ue}from"efficient-web-builder/render/lib/media";import{loadHeaderSettings as je,primeHeaderSettings as Xe,clearHeaderSettingsCache as Ve,toPreviewHeaderSettings as Ke}from"../lib/header-settings-source.js";import{Banner as qe,Button as ae,Drawer as Ye,InputNumber as $e,LoadingSpinner as Ze,MediaUploadField as Je,ShowWhen as K,Slider as Qe,Tabs as et,tabButtonId as tt,tabPanelId as lt}from"efficient-shell/ui";import{CountryShowAsTiles as nt}from"./CountryShowAsTiles.js";import{truthy as at,visibleFields as ot}from"efficient-web-builder/render/lib/puck/show-when";const it={field:"country_selector_enabled",is:!0},oe={not:{context:"placeholderMode",is:!0}},st={field:"menu_position",is:"beside"},rt={all:[{field:"logo_position",is:"center"},{not:{field:"menu_position",is:"center"}}]},ct={all:[oe,at("country_selector_enabled")]};import{SettingsDefaultReset as ie,SettingsSwitch as q}from"efficient-easel/panel";import{FieldSelect as se}from"efficient-easel/fields";import{useEaselStrings as dt}from"efficient-easel/strings";import{ListIcon as ut,LogoIcon as ht,SettingsIcon as mt,StylesIcon as pt}from"efficient-easel/icons";import{GroupLabel as ft,Segmented as P}from"efficient-web-builder/editor/lib/puck/controls";import{HintsToggle as re,SHOW_HINTS_DEFAULT as gt}from"efficient-web-builder/editor/components/WebsiteSettingsPanel";const ce="sf-header",_e="sf-header-size-label",ve="sf-header-gap-label",we="sf-header-height-label",Se=[{id:"logo",label:"Logo",icon:e(ht,{})},{id:"menu",label:"Menu",icon:e(ut,{}),showWhen:oe},{id:"tools",label:"Tools",icon:e(mt,{})},{id:"look",label:"Look",icon:e(pt,{})}];function bt({tokenRef:a,siteId:o,onClose:b,onAuthExpired:_,inline:O,placeholderMode:y,websiteName:v,onOpenWebsiteSettings:C}){const m=fe(),M=dt(),[n,x]=E(null),[R,w]=E(null),[D,Y]=E(!1),[d,k]=E(Se[0].id),[u,T]=E(gt),F=n,Z={placeholderMode:y},J=Object.values(ot(Object.fromEntries(Se.map(t=>[t.id,t])),F,Z)),z=J.find(t=>t.id===d)??J[0],[ye,Ce]=E(0),{setSettings:ue}=Be(),W=le(null),U=le(null),j=le(null);X(()=>{let t=!1,s=null,h=null;const c=3,H=(I,B=0)=>{t||w(null),je(I,o,B>0).then(He=>!t&&x(He)).catch(()=>{t||(B+1<c?h=setTimeout(()=>H(I,B+1),600*(B+1)):w(l("Could not load header settings.")))})},pe=a.current;if(pe)H(pe);else{let I=0;s=setInterval(()=>{const B=a.current;if(B){s&&clearInterval(s),s=null,t||w(null),H(B);return}I+=250,I===5e3&&!t&&w(l("Waiting for editor authorization…")),I>=3e4&&(s&&clearInterval(s),s=null,t||w(l("Not authorized yet — reopen once the editor has loaded.")))},250)}return()=>{t=!0,s&&clearInterval(s),h&&clearTimeout(h)}},[a,ye,o]),X(()=>{n&&ue(Ke(n))},[n,ue]),X(()=>()=>{W.current&&clearTimeout(W.current),U.current&&clearTimeout(U.current),j.current&&clearTimeout(j.current)},[]);const g=L(async(t,s)=>{const h=a.current;if(!h||!n)return;const c=n;s&&x({...n,...s}),Y(!0),w(null);try{const H=await t(h);x(H),Xe(H,o),Ae()}catch(H){x(c),H instanceof Te&&H.status===401?(Ve(o),_?.(),w(l("Authorization expired — try again in a moment."))):w(l("Could not save. Please retry."))}finally{Y(!1)}},[n,a,_,o]),p=L(t=>g(s=>A.updateHeaderSettings(t,s,o??void 0),t),[g,o]),he=L(t=>{g(s=>A.setHeaderLogoFromAsset(t,s,o??void 0))},[g,o]),Le=L(()=>{Ee(m,{accept:"image/svg+xml",title:l("Logo (SVG)")}).then(t=>{t&&he(t.id)})},[he]),Q=L((t,s=!0)=>{x(c=>c&&{...c,logo_size_px:t}),W.current&&clearTimeout(W.current);const h=()=>{g(c=>A.updateHeaderSettings({logo_size_px:t},c,o??void 0))};s?h():W.current=setTimeout(h,400)},[g,o]),ee=L((t,s=!0)=>{x(c=>c&&{...c,height_px:t}),U.current&&clearTimeout(U.current);const h=()=>{g(c=>A.updateHeaderSettings({height_px:t},c,o??void 0))};s?h():U.current=setTimeout(h,400)},[g,o]),te=L((t,s=!0)=>{x(c=>c&&{...c,menu_gap_px:t}),j.current&&clearTimeout(j.current);const h=()=>{g(c=>A.updateHeaderSettings({menu_gap_px:t},c,o??void 0))};s?h():j.current=setTimeout(h,400)},[g,o]),Ne=L(()=>{g(async t=>{const s=await A.clearHeaderLogo(t,o??void 0);return s.reverse_logo?A.updateHeaderSettings({reverse_logo:!1},t,o??void 0):s})},[g,o]),ke=L(t=>{x(s=>s&&{...s,menu:t?.id??null,menu_handle:t?.handle??null,menu_name:t?.name??null,menu_items:t?t.items.map(h=>({label:h.label,url:h.url,dropdown_menu:h.dropdown_menu??null,dropdown_items:h.dropdown_items??[]})):[]}),g(s=>A.updateHeaderSettings({menu:t?.id??null},s,o??void 0))},[g,o]),me=r(G,{children:[R&&e(qe,{tone:"danger",className:"mx-4 mt-3",action:n?void 0:e(ae,{variant:"secondary",size:"md",onClick:()=>Ce(t=>t+1),children:l("Retry")}),children:R}),n?r(G,{children:[e(Tt,{tabs:J,activeId:z.id,onSelect:k}),r("div",{id:lt(ce,z.id),role:"tabpanel","aria-labelledby":tt(ce,z.id),className:"flex flex-col p-4 [&>*+*]:mt-3",children:[z.id==="logo"&&r(G,{children:[e(S,{label:"Image"}),e(K,{rule:oe,values:F,context:Z,children:e(xt,{settings:n,websiteName:v,onPick:Le,onClear:Ne,showHint:u})}),e(f,{label:"Reverse the Logo",children:e(q,{checked:n.reverse_logo,onChange:t=>p({reverse_logo:t}),ariaLabel:l("Reverse the Logo")})}),e(N,{shown:u,children:l("Keeps the logo readable on any header — flips just its black & white parts to contrast the bar behind it (in both light and dark themes). Any other colors are kept as-is.")}),e(S,{label:"Placement"}),e(vt,{label:i.logoPosition.label,value:i.logoPosition.options.find(t=>t.value===i.logoPosition.choose(n.logo_position))?.label,children:e(P,{value:i.logoPosition.choose(n.logo_position),options:i.logoPosition.options,onChange:t=>p({logo_position:t}),ariaLabel:i.logoPosition.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:_e,className:"text-xs text-[var(--ink-muted)]",children:l("Size")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.logo_size_px!=null||void 0,children:[n.logo_size_px??be[n.logo_size],"px"]}),e(ie,{label:l("Size"),words:M.panel,changed:n.logo_size_px!=null,onReset:()=>Q(null)})]})]}),e(de,{labelledBy:_e,min:Ge,max:Ie,step:2,value:n.logo_size_px??be[n.logo_size],onPreview:t=>Q(t,!1),onCommit:t=>Q(t,!0)}),e(N,{shown:u,children:l("Sets the logo’s height; the width follows the logo’s own proportions.")})]}),e(re,{shown:u,onChange:T})]}),z.id==="menu"&&r(G,{children:[e(S,{label:"Links"}),e(_t,{token:a.current,menuId:n.menu,menuName:n.menu_name,itemCount:n.menu_items?.length??0,onPick:ke}),e(f,{label:i.menuAlign.label,children:e(P,{value:i.menuAlign.choose(n.menu_position),options:i.menuAlign.options.filter(t=>t.value!=="beside"||n.logo_position!=="center"),onChange:t=>p({menu_position:t}),ariaLabel:i.menuAlign.label})}),e(K,{rule:st,values:F,children:r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:ve,className:"text-xs text-[var(--ink-muted)]",children:l("Space from the logo")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.menu_gap_px!=null||void 0,children:[n.menu_gap_px??V.default,"px"]}),e(ie,{label:l("Space from the logo"),words:M.panel,changed:n.menu_gap_px!=null,onReset:()=>te(null)})]})]}),e(de,{labelledBy:ve,min:V.min,max:V.max,step:V.step,value:n.menu_gap_px??V.default,onPreview:t=>te(t,!1),onCommit:t=>te(t,!0)}),e(N,{shown:u,children:l("How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.")})]})}),e(f,{label:i.menuRow.label,children:e(P,{value:i.menuRow.choose(n.menu_row),options:i.menuRow.options,onChange:t=>p({menu_row:t}),ariaLabel:i.menuRow.label})}),e(K,{rule:rt,values:F,children:e(f,{label:"Left items",children:e("div",{className:"w-16",children:e(se,{value:n.menu_split??3,ariaLabel:l("Left items"),onChange:t=>p({menu_split:t}),options:[1,2,3,4].map(t=>({label:String(t),value:t}))})})})}),e(f,{label:i.navTextCase.label,children:e(P,{value:i.navTextCase.choose(n.nav_text_case),options:i.navTextCase.options,onChange:t=>p({nav_text_case:t}),ariaLabel:i.navTextCase.label})}),e(N,{shown:u,children:ne(l("{uppercase} draws SEARCH and BAG; {capitalised} draws Search and Bag. It covers the menu links and the Tools words together, and it leaves a name like FusionForge exactly as you typed it."),{uppercase:e("strong",{children:l("Uppercase")}),capitalised:e("strong",{children:l("Capitalised")})})})]}),z.id==="tools"&&r(G,{children:[e(S,{label:"Style"}),e(f,{label:i.utilStyle.label,children:e(P,{value:i.utilStyle.choose(n.util_style),options:i.utilStyle.options,onChange:t=>p({util_style:t}),ariaLabel:i.utilStyle.label})}),e(N,{shown:u,children:ne(l("{text} draws the words — Search, Account, Bag — instead of the little pictures. It changes how they look, not whether they are shown: that stays with the switches below."),{text:e("strong",{children:l("Text")})})}),e(S,{label:"Search"}),e(f,{label:"Search",children:e(q,{checked:n.search_enabled,onChange:t=>p({search_enabled:t}),ariaLabel:l("Search")})}),e(f,{label:i.searchPosition.label,children:e(P,{value:i.searchPosition.choose(n.search_position),options:i.searchPosition.options,onChange:t=>p({search_position:t}),ariaLabel:i.searchPosition.label})}),e(S,{label:"Country selector"}),e(f,{label:"Show selector",children:e(q,{checked:n.country_selector_enabled,onChange:t=>p({country_selector_enabled:t}),ariaLabel:l("Show selector")})}),e(K,{rule:it,values:{country_selector_enabled:n.country_selector_enabled},children:e(f,{label:"Show as",stacked:!0,children:e(nt,{value:n.country_selector_show_as,onChange:t=>p({country_selector_show_as:t})})})}),e(K,{rule:ct,values:F,context:Z,children:e(N,{shown:u,children:ne(l("Which countries this website serves — and each region's own URL — is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration."),{place:e("strong",{children:l("Storefront › Settings › Regions & currencies")})})})}),e(S,{label:"Account and cart"}),e(f,{label:"Account",children:e(q,{checked:n.account_enabled??!0,onChange:t=>p({account_enabled:t}),ariaLabel:l("Account")})}),e(f,{label:"Cart",children:e(q,{checked:n.cart_enabled??!0,onChange:t=>p({cart_enabled:t}),ariaLabel:l("Cart")})}),e(re,{shown:u,onChange:T})]}),z.id==="look"&&r(G,{children:[e(S,{label:"Dimensions"}),e(f,{label:i.width.label,children:e(P,{value:i.width.choose(n.width),options:i.width.options,onChange:t=>p({width:t}),ariaLabel:i.width.label})}),r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{id:we,className:"text-xs text-[var(--ink-muted)]",children:l("Height")}),r("span",{className:"flex items-center gap-1",children:[r("span",{className:"sf-header-value text-[12px] tabular-nums text-[var(--ink-faint)]","data-changed":n.height_px!=null||void 0,children:[n.height_px??$.default,"px"]}),e(ie,{label:l("Height"),words:M.panel,changed:n.height_px!=null,onReset:()=>ee(null)})]})]}),e(de,{labelledBy:we,min:$.min,max:$.max,step:2,value:n.height_px??$.default,onPreview:t=>ee(t,!1),onCommit:t=>ee(t,!0)}),e(N,{shown:u,children:l("Sets how tall the header bar is; the content below it shifts down to match.")})]}),e(f,{label:"Border thickness",children:e("div",{className:"w-24",children:e($e,{value:n.border_thickness,min:0,max:20,precision:0,size:"md",suffix:"px","aria-label":l("Border thickness"),onChange:t=>p({border_thickness:Math.max(0,t??0)})})})}),e(S,{label:"Color"}),e(f,{label:"Theme",children:e(Fe,{value:n.theme??xe,onChange:t=>p({theme:t===xe?null:t}),followLabel:l("Follow the site theme")})}),e(N,{shown:u,children:l("The color the bar paints once it is solid — after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.")}),e(f,{label:i.topTextColor.label,children:e(P,{value:i.topTextColor.choose(n.top_text_color),options:i.topTextColor.options,onChange:t=>p({top_text_color:t}),ariaLabel:i.topTextColor.label})}),e(N,{shown:u,children:l("Auto reads what the first section on each page says it is — dark, light or accent — and picks the text that can be read on it. Set Light or Dark to decide it yourself when Auto reads a page wrong.")}),e(S,{label:"Behavior"}),e(f,{label:"Sticky header",children:e("div",{className:"w-32",children:e(se,{value:n.sticky,ariaLabel:l("Sticky header"),onChange:t=>p({sticky:t}),options:[{label:l("None"),value:"none"},{label:l("Always"),value:"always"},{label:l("On scroll up"),value:"on_scroll_up"}]})})}),C&&r(G,{children:[e(S,{label:"Display mode"}),e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:l("Set the default Light / Dark / Auto mode and show or hide the light↔dark switch in Appearance.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:C,children:l("Set up display mode →")})]}),e(re,{shown:u,onChange:T})]})]})]}):R?null:e(Ze,{size:"sm",padding:"p-4",label:l("Loading…")})]});return O?r("div",{className:"flex flex-col",children:[D&&e("div",{className:"px-4 pt-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]}):r(Ye,{open:!0,onClose:b??(()=>{}),side:"right",size:"sm",title:l("Header"),children:[D&&e("div",{className:"pb-2 text-[11px] text-[var(--ink-faintest)]",children:l("Saving…")}),me]})}function xt({settings:a,websiteName:o,onPick:b,onClear:_,showHint:O}){const y=!!a.logo_url,v=!y&&!!a.default_logo_url,C=Ue(a.effective_logo_url),m=o&&o.trim()?o.trim():ze;return r("div",{className:"flex flex-col gap-2",children:[e(Je,{value:C||"",onChange:M=>{M||_()},onPick:b,accept:"image/svg+xml,.svg",acceptHint:"SVG",fit:"contain",height:80,placeholder:l("No logo — “{name}” wordmark shown",{name:m}),replaceLabel:y?l("Replace SVG logo"):l("Upload SVG logo"),allowRemove:y,removeLabel:l("Use company default")}),e(N,{shown:O,children:y?l("Custom SVG logo uploaded for this store."):v?l("Using your company logo from the database."):l("No company logo on file — upload an SVG or the wordmark is used.")})]})}function _t({token:a,menuId:o,menuName:b,itemCount:_,onPick:O}){const y=fe(),[v,C]=E(null),[m,M]=E(!1),n=L(d=>{C(d),M(!0)},[]);X(()=>{let d=!1;return Oe(a).then(k=>!d&&n(k)).catch(()=>!d&&C([])),()=>{d=!0}},[a,n]),X(()=>{let d=!1;const k=Pe(()=>{Me(a).then(u=>!d&&n(u)).catch(()=>{})});return()=>{d=!0,k()}},[a,n]);const x=v===null,R=!x&&(v?.length??0)===0,w=!x&&(v??[]).some(d=>d.id===o),D=w?o:"",Y=m&&!!o&&!w;return r("div",{className:"flex flex-col gap-2",children:[e(f,{label:"Menu",children:e("div",{className:"w-[170px] max-w-full",children:e(se,{value:D,ariaLabel:l("Menu"),readOnly:x||R,onChange:d=>{const k=d?(v??[]).find(u=>u.id===d):null;O(k?{...k,items:k.items.map(u=>({...u,dropdown_items:(v??[]).find(T=>T.id===u.dropdown_menu)?.items.map(T=>({label:T.label,url:T.url}))??[]}))}:null)},options:[{label:x?l("Loading…"):R?l("No menus"):l("Default links"),value:""},...(v??[]).map(d=>({label:`${d.name} (${d.item_count??d.items.length})`,value:d.id}))]})})}),Y?e("p",{className:"text-[12px] text-[var(--sf-warning,#b45309)]",children:Re()}):e("p",{className:"text-[12px] text-[var(--ink-faint)]",children:D?De("Header shows “{name}” — {n} link.","Header shows “{name}” — {n} links.",_,{name:b??l("the linked menu")}):R?l("No menus yet. Create one in {place}, then pick it here.",{place:l("Storefront → Menus")}):l("Pick a menu to drive the header links, or keep the built-in default links.")}),e(ae,{variant:"link",size:"sm",className:"self-start",onClick:()=>y.send("storefront-editor:open-menus",{menuId:D||null}),children:D?l("Edit menu →"):l("Manage menus →")})]})}function N({shown:a,children:o}){return a?e("p",{className:"text-[11px] text-[var(--sf-muted)]",children:o}):null}function de({labelledBy:a,value:o,min:b,max:_,step:O,onPreview:y,onCommit:v}){const C=m=>{m instanceof HTMLInputElement&&m.type==="range"&&v(Number(m.value))};return e("div",{onPointerUp:m=>C(m.target),onKeyUp:m=>{/^(Arrow|Home|End|Page)/.test(m.key)&&C(m.target)},children:e(Qe,{value:o,min:b,max:_,step:O,showInput:!1,size:"sm","aria-labelledby":a,valueText:m=>l("{n} pixels",{n:m}),onChange:m=>{m!=null&&y(m)}})})}function vt({label:a,value:o,children:b}){return r("div",{className:"flex flex-col gap-2",children:[r("div",{className:"flex items-center justify-between",children:[e("span",{className:"text-xs text-[var(--ink-muted)]",children:l(a)}),o&&e("span",{className:"text-[12px] text-[var(--ink-faint)]",children:l(o)})]}),b]})}function S({label:a}){return e(ft,{label:a})}function f({label:a,children:o,stacked:b=!1}){return b?r("div",{className:"flex flex-col gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),o]}):r("div",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-2",children:[e("span",{className:"text-xs text-[var(--sf-text-secondary)]",children:l(a)}),e("div",{className:"flex flex-shrink-0 grow justify-end",children:o})]})}const wt=[{label:"Left",value:"left"},{label:"Center",value:"center"}],St=[{label:"Left",value:"left"},{label:"Right",value:"right"}],yt=[{label:"Right",value:"left"},{label:"Centered",value:"center"},{label:"Beside logo",value:"beside"}],Ct=[{label:"Own row",value:"top"},{label:"Same row",value:"inline"}],Lt=[{label:ge.page,value:"page"},{label:ge.full,value:"full"}],Nt=[{label:"Icon",value:"icon"},{label:"Text",value:"text"}],kt=[{label:"Uppercase",value:"uppercase"},{label:"Capitalised",value:"capitalised"}],Ht=[{label:"Auto",value:"auto"},{label:"Light",value:"light"},{label:"Dark",value:"dark"}],i={logoPosition:{label:"Position",options:wt,choose:a=>a==="right"?"center":a},menuAlign:{label:"Alignment",options:yt,choose:a=>a==="center"?"center":a==="beside"?"beside":"left"},menuRow:{label:"Row",options:Ct,choose:a=>a==="inline"?"inline":"top"},searchPosition:{label:"Position",options:St,choose:a=>a},width:{label:"Width",options:Lt,choose:a=>a},navTextCase:{label:"Letters",options:kt,choose:a=>a==="capitalised"?"capitalised":"uppercase"},utilStyle:{label:"Show as",options:Nt,choose:a=>a==="text"?"text":"icon"},topTextColor:{label:"Text color at the top",options:Ht,choose:a=>We(a)}};function Tt({tabs:a,activeId:o,onSelect:b}){return e("div",{className:"es-insp-tabs",children:e(et,{variant:"underline",block:!0,labelsFit:!0,"aria-label":l("Header settings"),idPrefix:ce,value:o,onChange:b,items:a.map(_=>({id:_.id,icon:_.icon,label:l(_.label)}))})})}export{f as Field,i as HEADER_SEGMENTED,Se as HEADER_TABS,ce as HEADER_TABS_ID_PREFIX,Tt as HeaderTabStrip,oe as OFF_PLACEHOLDER,bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as o,jsxs as c}from"react/jsx-runtime";import{Inline as u,InputNumber as l}from"efficient-shell/ui";import{SettingsField as h}from"efficient-easel/panel";import{ListIcon as d}from"efficient-easel/icons";import{say as n}from"efficient-web-builder/format/lib/editor-words";import{resolveMenuLinkRange as m}from"../../render/lib/content/menu-row.js";function g({value:a,onChange:p}){const i=m(a),r=i?.from??1,s=i?.to??null,t=(e,f)=>p(m({from:e??1,to:f??void 0}));return o(h,{label:n("Show links"),icon:o(d,{}),changed:i!==null,hint:n("The links this menu shows on a computer. Empty To means to the end."),children:c(u,{gap:2,wrap:!1,children:[o(l,{size:"
|
|
1
|
+
"use client";import{jsx as o,jsxs as c}from"react/jsx-runtime";import{Inline as u,InputNumber as l}from"efficient-shell/ui";import{SettingsField as h}from"efficient-easel/panel";import{ListIcon as d}from"efficient-easel/icons";import{say as n}from"efficient-web-builder/format/lib/editor-words";import{resolveMenuLinkRange as m}from"../../render/lib/content/menu-row.js";function g({value:a,onChange:p}){const i=m(a),r=i?.from??1,s=i?.to??null,t=(e,f)=>p(m({from:e??1,to:f??void 0}));return o(h,{label:n("Show links"),icon:o(d,{}),changed:i!==null,hint:n("The links this menu shows on a computer. Empty To means to the end."),children:c(u,{gap:2,wrap:!1,children:[o(l,{size:"md",prefix:n("From"),min:1,precision:0,value:r,"aria-label":n("Show links from"),onChange:e=>t(e,s)}),o(l,{size:"md",prefix:n("To"),min:1,precision:0,placeholder:n("End"),value:s,"aria-label":n("Show links to"),onChange:e=>t(r,e)})]})})}export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as n,jsxs as d,Fragment as v}from"react/jsx-runtime";import{IconButton as u}from"efficient-shell/ui";import{SettingsField as x}from"efficient-easel/panel";import{ColumnsIcon as g}from"efficient-easel/icons";import{usePreviewDevice as b}from"efficient-easel/screen/components/PreviewDeviceContext";import{VIEW_TIER_LABEL as f}from"efficient-easel/screen/lib/content/view-tiers";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{sayWith as F}from"../lib/say-with.js";function _(r,t,e,a){const s=e.indexOf(r[t]),l=s>=0?s:0,c=e[Math.min(Math.max(l+a,0),e.length-1)];return{...r,[t]:c}}function j({label:r,unit:t,steps:e,value:a,onChange:s,format:l=String,note:c}){const o=b(),h=e.indexOf(a[o]),m=h>=0?h:0,p=w=>s(_(a,o,e,w));return n(x,{label:i(r),icon:n(g,{}),action:d("div",{className:"sf-colstep",children:[n(u,{variant:"secondary",size:"
|
|
1
|
+
"use client";import{jsx as n,jsxs as d,Fragment as v}from"react/jsx-runtime";import{IconButton as u}from"efficient-shell/ui";import{SettingsField as x}from"efficient-easel/panel";import{ColumnsIcon as g}from"efficient-easel/icons";import{usePreviewDevice as b}from"efficient-easel/screen/components/PreviewDeviceContext";import{VIEW_TIER_LABEL as f}from"efficient-easel/screen/lib/content/view-tiers";import{say as i}from"efficient-web-builder/format/lib/editor-words";import{sayWith as F}from"../lib/say-with.js";function _(r,t,e,a){const s=e.indexOf(r[t]),l=s>=0?s:0,c=e[Math.min(Math.max(l+a,0),e.length-1)];return{...r,[t]:c}}function j({label:r,unit:t,steps:e,value:a,onChange:s,format:l=String,note:c}){const o=b(),h=e.indexOf(a[o]),m=h>=0?h:0,p=w=>s(_(a,o,e,w));return n(x,{label:i(r),icon:n(g,{}),action:d("div",{className:"sf-colstep",children:[n(u,{variant:"secondary",size:"md","aria-label":i("Fewer {unit} on {view}",{unit:t,view:i(f[o])}),disabled:m<=0,onClick:()=>p(-1),children:"−"}),n("span",{className:"sf-colstep-value","aria-live":"polite",children:l(e[m])}),n(u,{variant:"secondary",size:"md","aria-label":i("More {unit} on {view}",{unit:t,view:i(f[o])}),disabled:m>=e.length-1,onClick:()=>p(1),children:"+"})]}),hint:d(v,{children:[F(i("Sets the {view} view — switch views in the top bar to set each one."),{view:n("strong",{children:i(f[o])})}),c?d(v,{children:[" ",c]}):null]})})}export{j as default,_ as stepPerView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as s}from"react/jsx-runtime";import{CONTACT_ROUTING_DEFAULTS as t,slugifyGroupId as
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{CONTACT_ROUTING_DEFAULTS as t,slugifyGroupId as y}from"efficient-web-builder/format/lib/content/contact";import{EyeIcon as S,LinkIcon as c,EyeOffIcon as w}from"efficient-easel/icons";import{FieldGlyph as I}from"efficient-web-builder/editor/components/FieldGlyph";import{group as u,text as p,plainText as a,plainTextarea as f,textarea as b,textList as O,toggle as N,withOffPage as v,select as T}from"efficient-web-builder/editor/lib/puck/controls";import{formPicker as x}from"../controls.js";import{CHANNEL_HINTS as h}from"../../../../../../render/components/ContactRouting.js";import{say as m}from"efficient-web-builder/format/lib/editor-words";const R={fields:{_gTop:u("Routing groups"),routingNumber:p("Section number",t.routingNumber),routingTagline:p("Eyebrow",t.routingTagline),groups:{type:"array",label:"Groups",arrayFields:{eyebrow:a("Eyebrow"),title:f("Title"),copy:f("Body"),response:a("Response time")},getItemSummary:e=>e?.title||e?.eyebrow||m("Group")},_gForm:u("Message form"),formSlug:x(),formNumber:p("Section number",t.formNumber),formHeading:b("Heading",t.formHeading),metaItems:O("Meta lines",s(I,{noun:"meta"}),"Encrypted in transit","verbatim"),_gOther:u("“Other” reason"),showOther:N("Show “Other” reason",t.showOther,s(S,{})),otherLabel:a("“Other” chip label",t.otherLabel),otherNoteTitle:p("“Other” note title",t.otherNoteTitle),otherNoteBody:b("“Other” note body",t.otherNoteBody),_gSubmit:u("Submit button"),buttonText:a("Submit button",t.buttonText),consent:b("Consent line",t.consent),_gChannels:u("Contact info"),channels:{type:"array",label:"Channels",arrayFields:{label:a("Label",h.label),value:a("Value",h.value),href:v(a("Link")),sub:a("Sub line",h.sub),groupId:T("Link to group",s(c,{}),[{label:"— Not linked —",value:""},...t.groups.map(e=>({label:e.title,value:e.id}))],""),hidden:N("Hidden",!1,s(w,{}))},getItemSummary:e=>{const n=e?.label||e?.value||m("Channel");return e?.hidden?m("{name} · hidden",{name:n}):n}}},resolveData:e=>{const n=e.props.groups??[];if(!n.some(o=>!o?.id))return e;const i=new Set,d=n.map((o,l)=>{if(o?.id)return i.add(o.id),o;let r=y(o?.title)||`group-${l+1}`;for(;i.has(r);)r=`${r}-${l+1}`;return i.add(r),{...o,id:r}});return{...e,props:{...e.props,groups:d}}},resolveFields:(e,{fields:n})=>{const i=e.props.groups??[],d=[{label:"— Not linked —",value:""},...i.map((r,g)=>({label:r?.title||r?.eyebrow||m("Group {n}",{n:g+1}),value:r?.id||y(r?.title)||`group-${g+1}`}))],o=n,l=o.channels;return l?.type==="array"&&l.arrayFields&&(o.channels={...l,arrayFields:{...l.arrayFields,groupId:T("Link to group",s(c,{}),d,"")}}),n}};export{R as ContactRoutingFields};
|