@bytebrand/fe-ui-core-autobahn 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/assets/autode-logo.svg +6 -6
  2. package/cards/CarCard.tsx +174 -174
  3. package/cards/CarRow.tsx +186 -182
  4. package/cards/cardParts.tsx +529 -489
  5. package/cards/index.ts +37 -35
  6. package/cards/types.ts +124 -114
  7. package/chrome/Footer.tsx +189 -189
  8. package/chrome/TopBar.tsx +405 -405
  9. package/chrome/index.ts +20 -20
  10. package/chrome/svg.d.ts +11 -11
  11. package/compat/AccardionSection/AccardionSection.styl +45 -45
  12. package/compat/AccardionSection/AccardionSection.tsx +56 -56
  13. package/compat/AccordionWidget/AccordionWidget.styl +220 -220
  14. package/compat/AccordionWidget/AccordionWidget.tsx +257 -257
  15. package/compat/AccordionWrapper/AccordionItem/AccordionItem.styl +34 -34
  16. package/compat/AccordionWrapper/AccordionItem/AccordionItem.tsx +64 -64
  17. package/compat/AccordionWrapper/AccordionWrapper.tsx +34 -34
  18. package/compat/AdvantageItem/AdvantageItem.styl +47 -47
  19. package/compat/AdvantageItem/AdvantageItem.tsx +26 -26
  20. package/compat/Alternative/DealerInfo.styl +116 -116
  21. package/compat/Alternative/DealerInfo.tsx +171 -171
  22. package/compat/Badge/Badge.styl +44 -44
  23. package/compat/Badge/Badge.tsx +25 -25
  24. package/compat/BodyTypeIcons/Audi.tsx +9 -9
  25. package/compat/BodyTypeIcons/Bmw.tsx +860 -860
  26. package/compat/BodyTypeIcons/Ford.tsx +31 -31
  27. package/compat/BodyTypeIcons/IconsConfig.tsx +44 -44
  28. package/compat/BodyTypeIcons/IconsConfigCompact.tsx +30 -30
  29. package/compat/BodyTypeIcons/Mazda.tsx +44 -44
  30. package/compat/BodyTypeIcons/MercedesBenz.tsx +38 -38
  31. package/compat/BodyTypeIcons/Opel.tsx +19 -19
  32. package/compat/BodyTypeIcons/Search.tsx +19 -19
  33. package/compat/BodyTypeIcons/SelectorCategoryCombi.tsx +68 -68
  34. package/compat/BodyTypeIcons/SelectorCategoryCompact.tsx +20 -20
  35. package/compat/BodyTypeIcons/SelectorCategoryConvertible.tsx +68 -68
  36. package/compat/BodyTypeIcons/SelectorCategoryCoupe.tsx +60 -60
  37. package/compat/BodyTypeIcons/SelectorCategoryMinibus.tsx +64 -64
  38. package/compat/BodyTypeIcons/SelectorCategorySedan.tsx +69 -69
  39. package/compat/BodyTypeIcons/SelectorCategorySuv.tsx +77 -77
  40. package/compat/BodyTypeIcons/SelectorCategoryTransporter.tsx +68 -68
  41. package/compat/BodyTypeIcons/SelectorCategoryVan.tsx +72 -72
  42. package/compat/BodyTypeIcons/Volkswagen.tsx +330 -330
  43. package/compat/BodyTypeIcons/index.ts +17 -17
  44. package/compat/Button/Button.tsx +65 -65
  45. package/compat/ButtonOld/Button.styl +65 -65
  46. package/compat/ButtonOld/Button.tsx +84 -84
  47. package/compat/Checkbox/Checkbox.styl +119 -119
  48. package/compat/Checkbox/Checkbox.tsx +151 -151
  49. package/compat/Checkbox/FormCheckbox.styl +22 -22
  50. package/compat/Checkbox/FormCheckbox.tsx +86 -86
  51. package/compat/Co2Widget/CO2Efficiency.styl +219 -219
  52. package/compat/Co2Widget/CO2Efficiency.tsx +93 -93
  53. package/compat/ContactInfo/ContactInfo.styl +22 -22
  54. package/compat/ContactInfo/ContactInfo.tsx +161 -161
  55. package/compat/ContactInfo/TemporaryTranslation.ts +11 -11
  56. package/compat/CookieModal/CookieModal.tsx +49 -49
  57. package/compat/CookieModal/Modal.tsx +43 -43
  58. package/compat/CookieModal/ModalsConfig.tsx +23 -23
  59. package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.styl +86 -86
  60. package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.tsx +184 -184
  61. package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.styl +66 -66
  62. package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.tsx +51 -51
  63. package/compat/CookieModal/modals/TestModal.tsx +7 -7
  64. package/compat/CookieModal/useModal.ts +13 -13
  65. package/compat/CustomerQuote/CustomerQuote.styl +79 -79
  66. package/compat/CustomerQuote/CustomerQuote.tsx +68 -68
  67. package/compat/CustomerQuotesSlider/CustomerQuotesSlider.styl +46 -46
  68. package/compat/CustomerQuotesSlider/CustomerQuotesSlider.tsx +79 -79
  69. package/compat/CustomerQuotesSlider/SliderArrow.tsx +20 -20
  70. package/compat/CustomerQuotesSlider/slider.global.styl +2 -2
  71. package/compat/ExpansionPanel/ExpansionPanel.tsx +68 -68
  72. package/compat/FirstInfoBlock/FirstInfoBlock.styl +33 -33
  73. package/compat/FirstInfoBlock/FirstInfoBlock.tsx +49 -49
  74. package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.styl +66 -66
  75. package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.tsx +21 -21
  76. package/compat/FormattedNumber/FormattedNumber.styl +1 -1
  77. package/compat/FormattedNumber/FormattedNumber.tsx +90 -90
  78. package/compat/IconContainer/IconContainer.styl +23 -23
  79. package/compat/IconContainer/IconContainer.tsx +34 -34
  80. package/compat/Image/Image.styl +109 -109
  81. package/compat/Image/Image.tsx +302 -302
  82. package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.styl +7 -7
  83. package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.tsx +30 -30
  84. package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.styl +122 -122
  85. package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.tsx +199 -199
  86. package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.styl +3 -3
  87. package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.tsx +15 -15
  88. package/compat/ImageSettings/OptionsTable/OptionsTable.styl +47 -47
  89. package/compat/ImageSettings/OptionsTable/OptionsTable.tsx +122 -122
  90. package/compat/ImageSettings/PricePlan/PricePlan.styl +63 -63
  91. package/compat/ImageSettings/PricePlan/PricePlan.tsx +32 -32
  92. package/compat/ImageSettings/index.ts +42 -42
  93. package/compat/ImagesSet/ImagesSet.styl +27 -27
  94. package/compat/ImagesSet/ImagesSet.tsx +76 -76
  95. package/compat/InfoBlockWrapper/InfoBlockWrapper.styl +41 -41
  96. package/compat/InfoBlockWrapper/InfoBlockWrapper.tsx +46 -46
  97. package/compat/Loader/Loader.styl +39 -39
  98. package/compat/Loader/Loader.tsx +32 -32
  99. package/compat/MagnifyGlass/MagnifyGlass.styl +33 -33
  100. package/compat/MagnifyGlass/MagnifyGlass.tsx +213 -213
  101. package/compat/MdAccordionGroup/MdAccordionGroup.tsx +53 -53
  102. package/compat/MdCheckbox/MdCheckbox.tsx +69 -69
  103. package/compat/MdField/MdField.tsx +100 -100
  104. package/compat/MdSelect/MdSelect.tsx +103 -103
  105. package/compat/MdSwitch/MdSwitch.tsx +29 -29
  106. package/compat/MdTabs/MdTabs.tsx +47 -47
  107. package/compat/MdTooltip/MdTooltip.tsx +31 -31
  108. package/compat/OfferDetailedSection/OfferDetailedSection.styl +31 -31
  109. package/compat/OfferDetailedSection/OfferDetailedSection.tsx +100 -100
  110. package/compat/OfferDetailedSection/partials/PanelConfig.styl +131 -131
  111. package/compat/OfferDetailedSection/partials/PanelConfig.tsx +121 -121
  112. package/compat/OfferPanel/AboAccordion/AboAccordion.styl +24 -24
  113. package/compat/OfferPanel/AboAccordion/AboAccordion.tsx +128 -128
  114. package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.styl +11 -11
  115. package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.tsx +35 -35
  116. package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.styl +20 -20
  117. package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.tsx +25 -25
  118. package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.styl +13 -13
  119. package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.tsx +39 -39
  120. package/compat/OfferPanel/MuiOfferPeriod/MuiOfferPeriod.tsx +42 -42
  121. package/compat/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +140 -140
  122. package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +144 -144
  123. package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +23 -23
  124. package/compat/OfferPanel/OfferPanel.styl +193 -193
  125. package/compat/OfferPanel/OfferPanel.tsx +81 -81
  126. package/compat/OfferPanel/OfferPeriod/OfferPeriod.styl +24 -24
  127. package/compat/OfferPanel/OfferPeriod/OfferPeriod.tsx +45 -45
  128. package/compat/OfferPanel/RangeGroup/RangeGroup.tsx +39 -39
  129. package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styl +119 -119
  130. package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styled.tsx +33 -33
  131. package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.tsx +122 -122
  132. package/compat/PriceRating/PriceRating.styl +47 -47
  133. package/compat/PriceRating/PriceRating.tsx +64 -64
  134. package/compat/PriceRatingDetailed/PriceRatingDetailed.styl +120 -120
  135. package/compat/PriceRatingDetailed/PriceRatingDetailed.tsx +191 -191
  136. package/compat/PricingToolBlock/PricingTool.styl +6 -6
  137. package/compat/PricingToolBlock/PricingTool.tsx +29 -29
  138. package/compat/Radio/Radio.styl +115 -115
  139. package/compat/Radio/Radio.tsx +141 -141
  140. package/compat/Radio/RadioGroup.styl +5 -5
  141. package/compat/Radio/RadioGroup.tsx +65 -65
  142. package/compat/Range/Range.tsx +79 -79
  143. package/compat/RateSearchValue/RateSearchValue.styl +22 -22
  144. package/compat/RateSearchValue/RateSearchValue.tsx +55 -55
  145. package/compat/RateSearchWidget/RateSearchWidget.styl +106 -106
  146. package/compat/RateSearchWidget/RateSearchWidget.tsx +163 -163
  147. package/compat/ServiceBlockItem/ServiceBlockItem.styl +47 -47
  148. package/compat/ServiceBlockItem/ServiceBlockItem.tsx +25 -25
  149. package/compat/SkeletonItem/SkeletonItem.styl +80 -80
  150. package/compat/SkeletonItem/SkeletonItem.tsx +80 -80
  151. package/compat/StarButton/StarButton.styl +39 -39
  152. package/compat/StarButton/StarButton.tsx +31 -31
  153. package/compat/TabPanel/TabPanel.tsx +28 -28
  154. package/compat/TimePicker/TimePicker.styl +22 -22
  155. package/compat/TimePicker/TimePicker.tsx +156 -156
  156. package/compat/Tooltip/Tooltip.styl +117 -117
  157. package/compat/Tooltip/Tooltip.tsx +63 -63
  158. package/compat/Usp/Usp.styl +78 -78
  159. package/compat/Usp/Usp.tsx +30 -30
  160. package/compat/Usp/uspTranslate.ts +12 -12
  161. package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.styl +36 -36
  162. package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +178 -178
  163. package/compat/VehicleDetailedSidebar/partials/Price.styl +27 -27
  164. package/compat/VehicleDetailedSidebar/partials/Price.tsx +41 -41
  165. package/compat/VehicleDetailedSidebar/partials/PriceContent.styl +123 -123
  166. package/compat/VehicleDetailedSidebar/partials/PriceContent.tsx +128 -128
  167. package/compat/VehicleDetailedSidebar/partials/Properties.styl +58 -58
  168. package/compat/VehicleDetailedSidebar/partials/Properties.tsx +155 -155
  169. package/compat/VehicleDetailedSidebar/partials/Title.styl +35 -35
  170. package/compat/VehicleDetailedSidebar/partials/Title.tsx +33 -33
  171. package/compat/VehicleDetailedSlider/VehicleDetailedSlider.styl +146 -146
  172. package/compat/VehicleDetailedSlider/VehicleDetailedSlider.tsx +382 -382
  173. package/compat/VehicleDetailedSlider/partials/MobileStast.tsx +61 -61
  174. package/compat/VehicleDetailedSlider/partials/MobileStats.styl +71 -71
  175. package/compat/VehicleDetailedSlider/partials/PriceData.styl +50 -50
  176. package/compat/VehicleDetailedSlider/partials/PriceData.tsx +67 -67
  177. package/compat/VehicleDetailedSlider/partials/Stats.styl +80 -80
  178. package/compat/VehicleDetailedSlider/partials/Stats.tsx +62 -62
  179. package/compat/VehicleDetailedSlider/partials/Title.styl +44 -44
  180. package/compat/VehicleDetailedSlider/partials/Title.tsx +36 -36
  181. package/compat/VehicleFormattedPrice/VehicleFormattedPrice.styl +148 -148
  182. package/compat/VehicleFormattedPrice/VehicleFormattedPrice.tsx +163 -163
  183. package/compat/VehicleSlider/VehicleSlider.styl +62 -62
  184. package/compat/VehicleSlider/VehicleSlider.tsx +125 -125
  185. package/compat/VehicleSlider/VehicleSliderForSRL.tsx +175 -175
  186. package/compat/VehicleSmallCard/SeoText/SeoText.styl +8 -8
  187. package/compat/VehicleSmallCard/SeoText/SeoText.tsx +16 -16
  188. package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +204 -204
  189. package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +199 -199
  190. package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +273 -273
  191. package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +179 -179
  192. package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +165 -165
  193. package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.tsx +299 -299
  194. package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +32 -32
  195. package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +35 -35
  196. package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.styl +135 -135
  197. package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +91 -91
  198. package/compat/VehicleSmallCard/VehicleSmallCard.styl +309 -309
  199. package/compat/VehicleSmallCard/VehicleSmallCard.tsx +448 -448
  200. package/compat/index.ts +77 -77
  201. package/compat/legacy-theme/mixins.styl +93 -93
  202. package/compat/legacy-theme/priceReviewColors.styl +12 -12
  203. package/compat/legacy-theme/slider.global.styl +5 -5
  204. package/compat/legacy-theme/theme.styl +136 -136
  205. package/compat/withLabel/withLabel.styl +33 -33
  206. package/compat/withLabel/withLabel.tsx +44 -44
  207. package/compat/withStats/withStats.styl +174 -174
  208. package/compat/withStats/withStats.tsx +238 -238
  209. package/constants/RateSearchWidget.ts +15 -15
  210. package/constants/Search.ts +290 -290
  211. package/constants/SearchWidget.ts +108 -108
  212. package/constants/app.ts +223 -223
  213. package/constants/common.ts +127 -127
  214. package/constants/core.ts +131 -131
  215. package/constants/highlights.ts +165 -165
  216. package/constants/price.ts +9 -9
  217. package/constants/selectors.ts +38 -38
  218. package/constants.ts +91 -91
  219. package/data/DataTransformers.ts +88 -88
  220. package/data/fieldMapping.ts +364 -342
  221. package/data/toAutobahnCar.ts +455 -442
  222. package/iconsvg/IconSVG.tsx +30 -30
  223. package/iconsvg/IconSVGConfig.tsx +768 -768
  224. package/iconsvg/SVG/AboPartner.tsx +16 -16
  225. package/iconsvg/SVG/ArrowQuotes.tsx +22 -22
  226. package/iconsvg/SVG/CloseIcon.tsx +17 -17
  227. package/iconsvg/SVG/CloseIconSelect.tsx +18 -18
  228. package/iconsvg/SVG/ClosedLockIcon.tsx +18 -18
  229. package/iconsvg/SVG/DealerCheckIcon.tsx +18 -18
  230. package/iconsvg/SVG/DealerPopoverMail.tsx +21 -21
  231. package/iconsvg/SVG/DealerPopoverPhone.tsx +21 -21
  232. package/iconsvg/SVG/GrayPhoneIcon.tsx +22 -22
  233. package/iconsvg/SVG/InternetIcon.tsx +18 -18
  234. package/iconsvg/SVG/WhiteEnvelopeIcon.tsx +21 -21
  235. package/iconsvg/SVG/bodyType/Cabrio.tsx +23 -23
  236. package/iconsvg/SVG/bodyType/Coupe.tsx +22 -22
  237. package/iconsvg/SVG/bodyType/Minibus.tsx +22 -22
  238. package/iconsvg/SVG/bodyType/Other.tsx +25 -25
  239. package/iconsvg/SVG/bodyType/Sedan.tsx +22 -22
  240. package/iconsvg/SVG/bodyType/SelectorCategoryCombi.tsx +68 -68
  241. package/iconsvg/SVG/bodyType/SelectorCategoryCompact.tsx +20 -20
  242. package/iconsvg/SVG/bodyType/SelectorCategoryConvertible.tsx +68 -68
  243. package/iconsvg/SVG/bodyType/SelectorCategoryCoupe.tsx +60 -60
  244. package/iconsvg/SVG/bodyType/SelectorCategoryMinibus.tsx +64 -64
  245. package/iconsvg/SVG/bodyType/SelectorCategoryOther.tsx +60 -60
  246. package/iconsvg/SVG/bodyType/SelectorCategorySedan.tsx +69 -69
  247. package/iconsvg/SVG/bodyType/SelectorCategorySuv.tsx +77 -77
  248. package/iconsvg/SVG/bodyType/SelectorCategoryTransporter.tsx +68 -68
  249. package/iconsvg/SVG/bodyType/SelectorCategoryVan.tsx +72 -72
  250. package/iconsvg/SVG/bodyType/Small.tsx +23 -23
  251. package/iconsvg/SVG/bodyType/Suv.tsx +23 -23
  252. package/iconsvg/SVG/bodyType/Van.tsx +23 -23
  253. package/iconsvg/SVG/bodyType/Wagon.tsx +23 -23
  254. package/iconsvg/SVG/common/AddIcon.tsx +16 -16
  255. package/iconsvg/SVG/common/AddPlus.tsx +16 -16
  256. package/iconsvg/SVG/common/AddressDashboard.tsx +29 -29
  257. package/iconsvg/SVG/common/AddressIcon.tsx +20 -20
  258. package/iconsvg/SVG/common/ArrowDetailedAccordionBlue.tsx +26 -26
  259. package/iconsvg/SVG/common/ArrowDownBlue.tsx +21 -21
  260. package/iconsvg/SVG/common/ArrowSelect.tsx +23 -23
  261. package/iconsvg/SVG/common/ArrowStepDown.tsx +18 -18
  262. package/iconsvg/SVG/common/Autocheck.tsx +19 -19
  263. package/iconsvg/SVG/common/AutodeLogo.tsx +36 -36
  264. package/iconsvg/SVG/common/Avatar.tsx +17 -17
  265. package/iconsvg/SVG/common/BellGray.tsx +19 -19
  266. package/iconsvg/SVG/common/BigInfoTransparent.tsx +13 -13
  267. package/iconsvg/SVG/common/Browse.tsx +20 -20
  268. package/iconsvg/SVG/common/Calendar.tsx +24 -24
  269. package/iconsvg/SVG/common/CallbackDashboard.tsx +30 -30
  270. package/iconsvg/SVG/common/Camera.tsx +17 -17
  271. package/iconsvg/SVG/common/Car.tsx +16 -16
  272. package/iconsvg/SVG/common/CarBody.tsx +19 -19
  273. package/iconsvg/SVG/common/CarFront.tsx +43 -43
  274. package/iconsvg/SVG/common/CarInspectionCheck.tsx +21 -21
  275. package/iconsvg/SVG/common/CarInspectionScheme0.tsx +32 -32
  276. package/iconsvg/SVG/common/CarInspectionScheme1.tsx +53 -53
  277. package/iconsvg/SVG/common/CarInspectionScheme2.tsx +52 -52
  278. package/iconsvg/SVG/common/CarInspectionScheme3.tsx +32 -32
  279. package/iconsvg/SVG/common/CarInspectionScheme4.tsx +32 -32
  280. package/iconsvg/SVG/common/CarInspectionScheme5.tsx +32 -32
  281. package/iconsvg/SVG/common/CarInspectionScheme6.tsx +32 -32
  282. package/iconsvg/SVG/common/CarInspectionSchemeGeneral copy.tsx +24 -24
  283. package/iconsvg/SVG/common/CarInspectionSchemeGeneral.tsx +24 -24
  284. package/iconsvg/SVG/common/CheckBlue.tsx +18 -18
  285. package/iconsvg/SVG/common/CheckGreen.tsx +22 -22
  286. package/iconsvg/SVG/common/CheckMark.tsx +16 -16
  287. package/iconsvg/SVG/common/CheckWhite.tsx +19 -19
  288. package/iconsvg/SVG/common/Chevron.tsx +17 -17
  289. package/iconsvg/SVG/common/CircledCheckmark.tsx +25 -25
  290. package/iconsvg/SVG/common/Clock.tsx +18 -18
  291. package/iconsvg/SVG/common/Close.tsx +19 -19
  292. package/iconsvg/SVG/common/CloseGrey.tsx +22 -22
  293. package/iconsvg/SVG/common/ContactEmail.tsx +21 -21
  294. package/iconsvg/SVG/common/ContactPhone.tsx +28 -28
  295. package/iconsvg/SVG/common/CopyIcon copy.tsx +22 -22
  296. package/iconsvg/SVG/common/CopyIcon.tsx +22 -22
  297. package/iconsvg/SVG/common/CopyIconForDealer.tsx +21 -21
  298. package/iconsvg/SVG/common/DashboardIcon.tsx +20 -20
  299. package/iconsvg/SVG/common/DashboardQuestionMark.tsx +20 -20
  300. package/iconsvg/SVG/common/DealersIcon.tsx +20 -20
  301. package/iconsvg/SVG/common/DeleteCircle.tsx +31 -31
  302. package/iconsvg/SVG/common/DeleteV1Icon.tsx +18 -18
  303. package/iconsvg/SVG/common/DeliveryDashboard.tsx +25 -25
  304. package/iconsvg/SVG/common/DeliveryMail.tsx +24 -24
  305. package/iconsvg/SVG/common/Discount100De.tsx +18 -18
  306. package/iconsvg/SVG/common/Discount100En.tsx +19 -19
  307. package/iconsvg/SVG/common/Discount66De.tsx +28 -28
  308. package/iconsvg/SVG/common/Discount66En.tsx +20 -20
  309. package/iconsvg/SVG/common/DoneIcon.tsx +18 -18
  310. package/iconsvg/SVG/common/EditCircle.tsx +32 -32
  311. package/iconsvg/SVG/common/EditPriceIcon.tsx +20 -20
  312. package/iconsvg/SVG/common/EuroCurrency.tsx +18 -18
  313. package/iconsvg/SVG/common/Export.tsx +20 -20
  314. package/iconsvg/SVG/common/Eye.tsx +17 -17
  315. package/iconsvg/SVG/common/EyeCatch.tsx +19 -19
  316. package/iconsvg/SVG/common/FavoritesIcon.tsx +20 -20
  317. package/iconsvg/SVG/common/FilterRange.tsx +16 -16
  318. package/iconsvg/SVG/common/FilterToolBlack.tsx +23 -23
  319. package/iconsvg/SVG/common/FlagDe.tsx +21 -21
  320. package/iconsvg/SVG/common/FlagEn.tsx +43 -43
  321. package/iconsvg/SVG/common/GrayEnvelopeIcon.tsx +19 -19
  322. package/iconsvg/SVG/common/HamburgerMenuIcon.tsx +18 -18
  323. package/iconsvg/SVG/common/HandingOverDashboard.tsx +32 -32
  324. package/iconsvg/SVG/common/ImageSettingsIcon.tsx +20 -20
  325. package/iconsvg/SVG/common/Info.tsx +16 -16
  326. package/iconsvg/SVG/common/InfoIcon.tsx +17 -17
  327. package/iconsvg/SVG/common/InfoTransparent.tsx +18 -18
  328. package/iconsvg/SVG/common/LogoutIcon.tsx +20 -20
  329. package/iconsvg/SVG/common/MagnifyingGlass.tsx +31 -31
  330. package/iconsvg/SVG/common/MenuArrow.tsx +16 -16
  331. package/iconsvg/SVG/common/MenuGrey.tsx +22 -22
  332. package/iconsvg/SVG/common/MobileDeLogo.tsx +108 -108
  333. package/iconsvg/SVG/common/MyOrderIcon.tsx +20 -20
  334. package/iconsvg/SVG/common/MyVehiclesIcon.tsx +20 -20
  335. package/iconsvg/SVG/common/NewFlagDe.tsx +25 -25
  336. package/iconsvg/SVG/common/NewFlagEn.tsx +34 -34
  337. package/iconsvg/SVG/common/OrderReceivedDashboard.tsx +27 -27
  338. package/iconsvg/SVG/common/Package.tsx +30 -30
  339. package/iconsvg/SVG/common/Phone.tsx +18 -18
  340. package/iconsvg/SVG/common/PhoneGrey.tsx +22 -22
  341. package/iconsvg/SVG/common/PickupDashboard.tsx +30 -30
  342. package/iconsvg/SVG/common/Picture.tsx +24 -24
  343. package/iconsvg/SVG/common/Pictures.tsx +32 -32
  344. package/iconsvg/SVG/common/Plus.tsx +16 -16
  345. package/iconsvg/SVG/common/PlusNew.tsx +16 -16
  346. package/iconsvg/SVG/common/PreparationDashboard.tsx +29 -29
  347. package/iconsvg/SVG/common/ProfileDashboard.tsx +24 -24
  348. package/iconsvg/SVG/common/ProfileIcon.tsx +17 -17
  349. package/iconsvg/SVG/common/Question.tsx +19 -19
  350. package/iconsvg/SVG/common/QuestionBold.tsx +25 -25
  351. package/iconsvg/SVG/common/RegistrationDashboard.tsx +31 -31
  352. package/iconsvg/SVG/common/SavedSearchsIcon.tsx +20 -20
  353. package/iconsvg/SVG/common/Search.tsx +19 -19
  354. package/iconsvg/SVG/common/SearchGrey.tsx +22 -22
  355. package/iconsvg/SVG/common/SettingPenIcon.tsx +20 -20
  356. package/iconsvg/SVG/common/Share.tsx +16 -16
  357. package/iconsvg/SVG/common/ShoppingCart.tsx +18 -18
  358. package/iconsvg/SVG/common/SliderArrow.tsx +21 -21
  359. package/iconsvg/SVG/common/SliderEye.tsx +17 -17
  360. package/iconsvg/SVG/common/SortUpDownArrows.tsx +18 -18
  361. package/iconsvg/SVG/common/Speedometer.tsx +23 -23
  362. package/iconsvg/SVG/common/Star.tsx +20 -20
  363. package/iconsvg/SVG/common/StarNew.tsx +16 -16
  364. package/iconsvg/SVG/common/StarOutline.tsx +20 -20
  365. package/iconsvg/SVG/common/StarRoundedCorners.tsx +18 -18
  366. package/iconsvg/SVG/common/Stats.tsx +17 -17
  367. package/iconsvg/SVG/common/Step1.tsx +21 -21
  368. package/iconsvg/SVG/common/Step2.tsx +20 -20
  369. package/iconsvg/SVG/common/Step3.tsx +21 -21
  370. package/iconsvg/SVG/common/SupportCallbackIcon.tsx +20 -20
  371. package/iconsvg/SVG/common/Telephone.tsx +22 -22
  372. package/iconsvg/SVG/common/Time.tsx +17 -17
  373. package/iconsvg/SVG/common/Timetable.tsx +18 -18
  374. package/iconsvg/SVG/common/Trash.tsx +22 -22
  375. package/iconsvg/SVG/common/TrashRed.tsx +23 -23
  376. package/iconsvg/SVG/common/Upload.tsx +17 -17
  377. package/iconsvg/SVG/common/UserGrey.tsx +22 -22
  378. package/iconsvg/SVG/common/UserProfileIcon.tsx +20 -20
  379. package/iconsvg/SVG/common/ValidateFailure.tsx +21 -21
  380. package/iconsvg/SVG/common/ValidateSuccess.tsx +21 -21
  381. package/iconsvg/SVG/common/WarningTriangle.tsx +20 -20
  382. package/iconsvg/SVG/common/WhiteArrowUp.tsx +21 -21
  383. package/iconsvg/SVG/common/WhiteKey.tsx +21 -21
  384. package/iconsvg/SVG/common/WhitePeople.tsx +23 -23
  385. package/iconsvg/SVG/common/WhiteTick.tsx +19 -19
  386. package/iconsvg/SVG/flags/AT.tsx +19 -19
  387. package/iconsvg/SVG/flags/BE.tsx +20 -20
  388. package/iconsvg/SVG/flags/BG.tsx +20 -20
  389. package/iconsvg/SVG/flags/CH.tsx +22 -22
  390. package/iconsvg/SVG/flags/CZ.tsx +18 -18
  391. package/iconsvg/SVG/flags/DE.tsx +18 -18
  392. package/iconsvg/SVG/flags/DK.tsx +18 -18
  393. package/iconsvg/SVG/flags/ES.tsx +2585 -2585
  394. package/iconsvg/SVG/flags/FI.tsx +18 -18
  395. package/iconsvg/SVG/flags/FR.tsx +20 -20
  396. package/iconsvg/SVG/flags/GB.tsx +26 -26
  397. package/iconsvg/SVG/flags/HR.tsx +135 -135
  398. package/iconsvg/SVG/flags/HU.tsx +20 -20
  399. package/iconsvg/SVG/flags/IT.tsx +20 -20
  400. package/iconsvg/SVG/flags/LI.tsx +106 -106
  401. package/iconsvg/SVG/flags/LU.tsx +18 -18
  402. package/iconsvg/SVG/flags/NL.tsx +18 -18
  403. package/iconsvg/SVG/flags/NO.tsx +20 -20
  404. package/iconsvg/SVG/flags/PL.tsx +19 -19
  405. package/iconsvg/SVG/flags/RO.tsx +20 -20
  406. package/iconsvg/SVG/flags/RU.tsx +20 -20
  407. package/iconsvg/SVG/flags/SE.tsx +20 -20
  408. package/iconsvg/SVG/flags/SI.tsx +54 -54
  409. package/iconsvg/SVG/flags/SK.tsx +34 -34
  410. package/iconsvg/SVG/flags/UA.tsx +19 -19
  411. package/iconsvg/SVG/infoBlocks/14DaysReturnPolicy.tsx +18 -18
  412. package/iconsvg/SVG/infoBlocks/AlertInfo.tsx +19 -19
  413. package/iconsvg/SVG/infoBlocks/Autocheck.tsx +19 -19
  414. package/iconsvg/SVG/infoBlocks/CheckTheStory.tsx +22 -22
  415. package/iconsvg/SVG/infoBlocks/CustomerServiceWhite.tsx +16 -16
  416. package/iconsvg/SVG/infoBlocks/Guarantee.tsx +16 -16
  417. package/iconsvg/SVG/infoBlocks/OrderWhite.tsx +13 -13
  418. package/iconsvg/SVG/infoBlocks/PriceGuarantee.tsx +19 -19
  419. package/iconsvg/SVG/infoBlocks/PriceGuaranteeWhite.tsx +17 -17
  420. package/iconsvg/SVG/infoBlocks/TransportAndDelivery.tsx +21 -21
  421. package/iconsvg/SVG/infoBlocks/Warranty.tsx +23 -23
  422. package/iconsvg/SVG/popower/Mail.tsx +18 -18
  423. package/iconsvg/SVG/popower/Phone.tsx +19 -19
  424. package/iconsvg/SVG/popower/Schedule.tsx +18 -18
  425. package/iconsvg/SVG/searchWidgets/drive/AAllWheelDrive.tsx +26 -26
  426. package/iconsvg/SVG/searchWidgets/drive/AllWheelDrive.tsx +26 -26
  427. package/iconsvg/SVG/searchWidgets/drive/FrontWheelDrive.tsx +25 -25
  428. package/iconsvg/SVG/searchWidgets/drive/OtherWheelDrive.tsx +26 -26
  429. package/iconsvg/SVG/searchWidgets/drive/RearWheelDrive.tsx +25 -25
  430. package/iconsvg/SVG/searchWidgets/fuel/FuelDiesel.tsx +18 -18
  431. package/iconsvg/SVG/searchWidgets/fuel/FuelElectrical.tsx +19 -19
  432. package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalDiesel.tsx +34 -34
  433. package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalPetrol.tsx +20 -20
  434. package/iconsvg/SVG/searchWidgets/fuel/FuelEthanol.tsx +53 -53
  435. package/iconsvg/SVG/searchWidgets/fuel/FuelHydrogen.tsx +24 -24
  436. package/iconsvg/SVG/searchWidgets/fuel/FuelLpg.tsx +24 -24
  437. package/iconsvg/SVG/searchWidgets/fuel/FuelNaturalGas.tsx +23 -23
  438. package/iconsvg/SVG/searchWidgets/fuel/FuelOther.tsx +28 -28
  439. package/iconsvg/SVG/searchWidgets/fuel/FuelPetrol.tsx +18 -18
  440. package/iconsvg/SVG/settings/Account.tsx +17 -17
  441. package/iconsvg/SVG/settings/DataUsage.tsx +17 -17
  442. package/iconsvg/SVG/settings/MarketResearch.tsx +17 -17
  443. package/iconsvg/SVG/settings/Newsletter.tsx +17 -17
  444. package/iconsvg/SVG/settings/RemoveEye.tsx +17 -17
  445. package/iconsvg/SVG/settings/RemoveEyeOff.tsx +17 -17
  446. package/iconsvg/SVG/settings/Security.tsx +17 -17
  447. package/iconsvg/SVG/settings/Warning.tsx +17 -17
  448. package/iconsvg/SVG/slider/360.tsx +23 -23
  449. package/iconsvg/SVG/slider/360New.tsx +20 -20
  450. package/iconsvg/SVG/slider/Checked.tsx +19 -19
  451. package/iconsvg/SVG/slider/DiscountRibbon.tsx +51 -51
  452. package/iconsvg/SVG/slider/DiscountRibbonMobile.tsx +47 -47
  453. package/iconsvg/SVG/slider/DiscountRibbonNew.tsx +29 -29
  454. package/iconsvg/SVG/slider/Easy.tsx +19 -19
  455. package/iconsvg/SVG/slider/Fullscreen.tsx +16 -16
  456. package/iconsvg/SVG/slider/FullscreenWindow.tsx +23 -23
  457. package/iconsvg/SVG/slider/Safe.tsx +19 -19
  458. package/iconsvg/SVG/slider/ToBuy.tsx +19 -19
  459. package/iconsvg/SVG/slider/YoutubeButton.tsx +26 -26
  460. package/iconsvg/SVG/slider/ZoomIn.tsx +21 -21
  461. package/iconsvg/SVG/slider/ZoomOut.tsx +21 -21
  462. package/iconsvg/SVG/social/AndroidLogo.tsx +18 -18
  463. package/iconsvg/SVG/social/Apple.tsx +19 -19
  464. package/iconsvg/SVG/social/FacebookF.tsx +19 -19
  465. package/iconsvg/SVG/social/GooglePlusG.tsx +19 -19
  466. package/iconsvg/SVG/social/Instagram.tsx +17 -17
  467. package/iconsvg/SVG/social/Pinterest.tsx +19 -19
  468. package/iconsvg/SVG/social/SharingInterface.tsx +21 -21
  469. package/iconsvg/SVG/social/Twitter.tsx +19 -19
  470. package/iconsvg/SVG/social/Youtube.tsx +19 -19
  471. package/iconsvg/SVG/vehicle/AboIcon.tsx +11 -11
  472. package/iconsvg/SVG/vehicle/Abs.tsx +24 -24
  473. package/iconsvg/SVG/vehicle/AirCond.tsx +34 -34
  474. package/iconsvg/SVG/vehicle/Airbag.tsx +21 -21
  475. package/iconsvg/SVG/vehicle/AuxiliaryHeating.tsx +23 -23
  476. package/iconsvg/SVG/vehicle/Bluetooth.tsx +22 -22
  477. package/iconsvg/SVG/vehicle/BuyIcon.tsx +15 -15
  478. package/iconsvg/SVG/vehicle/CarAvailability.tsx +22 -22
  479. package/iconsvg/SVG/vehicle/CarInspectionCheck.tsx +21 -21
  480. package/iconsvg/SVG/vehicle/CarInspectionCross.tsx +21 -21
  481. package/iconsvg/SVG/vehicle/CheckoutChecked.tsx +15 -15
  482. package/iconsvg/SVG/vehicle/Co2.tsx +24 -24
  483. package/iconsvg/SVG/vehicle/CruiseControl.tsx +25 -25
  484. package/iconsvg/SVG/vehicle/Date.tsx +21 -21
  485. package/iconsvg/SVG/vehicle/Delivery.tsx +12 -12
  486. package/iconsvg/SVG/vehicle/Diesel.tsx +28 -28
  487. package/iconsvg/SVG/vehicle/Display.tsx +25 -25
  488. package/iconsvg/SVG/vehicle/Done.tsx +11 -11
  489. package/iconsvg/SVG/vehicle/Door.tsx +19 -19
  490. package/iconsvg/SVG/vehicle/DoubleDone.tsx +18 -18
  491. package/iconsvg/SVG/vehicle/EditIcon.tsx +11 -11
  492. package/iconsvg/SVG/vehicle/EmergencyBrakeAssistant.tsx +27 -27
  493. package/iconsvg/SVG/vehicle/Eps.tsx +24 -24
  494. package/iconsvg/SVG/vehicle/Esp.tsx +24 -24
  495. package/iconsvg/SVG/vehicle/FinancingIcon.tsx +20 -20
  496. package/iconsvg/SVG/vehicle/FuelConsumption.tsx +20 -20
  497. package/iconsvg/SVG/vehicle/Fueling.tsx +22 -22
  498. package/iconsvg/SVG/vehicle/FullDrive.tsx +24 -24
  499. package/iconsvg/SVG/vehicle/GasElectric.tsx +28 -28
  500. package/iconsvg/SVG/vehicle/HandsFreePhoneSystem.tsx +24 -24
  501. package/iconsvg/SVG/vehicle/Kw.tsx +23 -23
  502. package/iconsvg/SVG/vehicle/LastCrawledAt.tsx +22 -22
  503. package/iconsvg/SVG/vehicle/LeasingIcon.tsx +14 -14
  504. package/iconsvg/SVG/vehicle/Led.tsx +24 -24
  505. package/iconsvg/SVG/vehicle/LightSensor.tsx +22 -22
  506. package/iconsvg/SVG/vehicle/LinkAlternative.tsx +15 -15
  507. package/iconsvg/SVG/vehicle/Location.tsx +17 -17
  508. package/iconsvg/SVG/vehicle/MinusIcon.tsx +11 -11
  509. package/iconsvg/SVG/vehicle/Mirror.tsx +19 -19
  510. package/iconsvg/SVG/vehicle/Navigation.tsx +27 -27
  511. package/iconsvg/SVG/vehicle/NewCar.tsx +21 -21
  512. package/iconsvg/SVG/vehicle/NoImage.tsx +17 -17
  513. package/iconsvg/SVG/vehicle/Owner.tsx +18 -18
  514. package/iconsvg/SVG/vehicle/PanoramicRoof.tsx +23 -23
  515. package/iconsvg/SVG/vehicle/ParkingAssistants.tsx +24 -24
  516. package/iconsvg/SVG/vehicle/PickYourself.tsx +18 -18
  517. package/iconsvg/SVG/vehicle/PlusIcon.tsx +11 -11
  518. package/iconsvg/SVG/vehicle/Power.tsx +21 -21
  519. package/iconsvg/SVG/vehicle/Ps.tsx +19 -19
  520. package/iconsvg/SVG/vehicle/Question.tsx +24 -24
  521. package/iconsvg/SVG/vehicle/Seats.tsx +21 -21
  522. package/iconsvg/SVG/vehicle/SeatsHeating.tsx +26 -26
  523. package/iconsvg/SVG/vehicle/SelectorGearboxAutomatic.tsx +24 -24
  524. package/iconsvg/SVG/vehicle/SelectorGearboxManualShift.tsx +19 -19
  525. package/iconsvg/SVG/vehicle/SelectorGearboxOther.tsx +24 -24
  526. package/iconsvg/SVG/vehicle/SelectorGearboxSemiAutomatic.tsx +30 -30
  527. package/iconsvg/SVG/vehicle/SelectorInteriorTypeAlcantara.tsx +225 -225
  528. package/iconsvg/SVG/vehicle/SelectorInteriorTypeFabric.tsx +29 -29
  529. package/iconsvg/SVG/vehicle/SelectorInteriorTypeFullLeather.tsx +29 -29
  530. package/iconsvg/SVG/vehicle/SelectorInteriorTypeOther.tsx +26 -26
  531. package/iconsvg/SVG/vehicle/SelectorInteriorTypePartLeather.tsx +142 -142
  532. package/iconsvg/SVG/vehicle/SelectorInteriorTypeSyntheticLeather.tsx +27 -27
  533. package/iconsvg/SVG/vehicle/SelectorInteriorTypeVelours.tsx +39 -39
  534. package/iconsvg/SVG/vehicle/Shield.tsx +39 -39
  535. package/iconsvg/SVG/vehicle/Speedometer.tsx +17 -17
  536. package/iconsvg/SVG/vehicle/StartStopSystem.tsx +30 -30
  537. package/iconsvg/SVG/vehicle/Stop.tsx +25 -25
  538. package/iconsvg/SVG/vehicle/TickMark.tsx +21 -21
  539. package/iconsvg/SVG/vehicle/TrafficSignRecognition.tsx +29 -29
  540. package/iconsvg/SVG/vehicle/TrailerCoupling.tsx +24 -24
  541. package/iconsvg/SVG/vehicle/Transmission.tsx +27 -27
  542. package/iconsvg/SVG/vehicle/Wheel.tsx +43 -43
  543. package/iconsvg/SVG/vehicle/Wipers.tsx +22 -22
  544. package/iconsvg/SVG/vehicle/Wrench.tsx +17 -17
  545. package/iconsvg/index.ts +7 -7
  546. package/index.ts +18 -18
  547. package/locales/de/autobahn.json +676 -671
  548. package/locales/en/autobahn.json +676 -671
  549. package/locales/legacy/SearchDetailedPage.ts +205 -205
  550. package/locales/legacy/cbd.ts +719 -719
  551. package/locales/legacy/common.ts +109 -109
  552. package/locales/legacy/data.ts +1118 -1118
  553. package/locales/legacy/priceRating.ts +10 -10
  554. package/locales/legacy/sortingOptions.ts +21 -21
  555. package/media/images/raiting-stars-min.svg +7 -7
  556. package/media/images/refresh-button.svg +49 -49
  557. package/media/images/user-icon.svg +16 -16
  558. package/media/svg/infoBlocks/whyAutodeIconSet-F.svg +9 -9
  559. package/media/svg/infoBlocks/whyAutodeIconSet-G.svg +8 -8
  560. package/media/svg/infoBlocks/whyAutodeIconSet-Q.svg +6 -6
  561. package/media/svg/infoBlocks/whyAutodeIconSet-R.svg +9 -9
  562. package/media/svg/usp/icon1.svg +16 -16
  563. package/media/svg/usp/icon2.svg +13 -13
  564. package/media/svg/usp/icon3.svg +10 -10
  565. package/media/svg/usp/icon4.svg +14 -14
  566. package/package.json +30 -30
  567. package/schemes/AggregationScheme.ts +73 -73
  568. package/searchFilters/filterOptions.ts +119 -119
  569. package/searchFilters/filterProps.ts +35 -35
  570. package/searchFilters/index.ts +15 -15
  571. package/theme/autobahn.css +25 -25
  572. package/theme/colors_and_type.css +113 -113
  573. package/theme/md3.css +2045 -2034
  574. package/types/types.ts +373 -373
  575. package/types.ts +8 -8
  576. package/ui/Accordion.tsx +134 -134
  577. package/ui/Button.tsx +62 -62
  578. package/ui/CardCarousel.tsx +133 -133
  579. package/ui/Chip.tsx +29 -29
  580. package/ui/DatePicker.tsx +145 -145
  581. package/ui/Dropdown.tsx +205 -205
  582. package/ui/FileUpload.tsx +154 -154
  583. package/ui/FormCheckbox.tsx +79 -79
  584. package/ui/FormDropdown.tsx +327 -327
  585. package/ui/FormField.tsx +88 -88
  586. package/ui/FormRadio.tsx +93 -93
  587. package/ui/FormRadioGroup.tsx +106 -106
  588. package/ui/Icon.tsx +391 -391
  589. package/ui/IconButton.tsx +44 -44
  590. package/ui/Modal.tsx +187 -187
  591. package/ui/Pagination.tsx +140 -140
  592. package/ui/Price.tsx +25 -25
  593. package/ui/PriceEvalBar.tsx +48 -48
  594. package/ui/SaveChip.tsx +34 -34
  595. package/ui/Segmented.tsx +48 -48
  596. package/ui/Skeleton.tsx +75 -75
  597. package/ui/Spec.tsx +24 -24
  598. package/ui/Stars.tsx +29 -29
  599. package/ui/StatChip.tsx +21 -21
  600. package/ui/Stepper.tsx +106 -106
  601. package/ui/Switch.tsx +65 -65
  602. package/ui/Table.tsx +156 -156
  603. package/ui/Textarea.tsx +58 -58
  604. package/ui/index.ts +88 -88
  605. package/utils/CommonUtils.ts +648 -648
  606. package/utils/DateUtils.ts +101 -101
  607. package/utils/index.ts +74 -74
  608. package/utils/power.ts +11 -11
  609. package/utils/query.ts +21 -21
  610. package/vdp/FinanceCalculator.tsx +465 -465
  611. package/vdp/VdpModules.tsx +1490 -1490
  612. package/vdp/VdpViewer.tsx +209 -209
  613. package/vdp/index.ts +75 -75
  614. package/vdp/types.ts +197 -197
  615. package/vehiclesProps/cbdSelectors.ts +117 -117
  616. package/vehiclesProps/decoratedLightProps.tsx +572 -572
  617. package/vehiclesProps/decoratedProps.tsx +1746 -1746
  618. package/vehiclesProps/equipment.ts +129 -129
  619. package/vehiclesProps/vehicleDetails.ts +428 -428
  620. package/widgets/SearchBox.tsx +256 -256
  621. package/widgets/index.ts +5 -5
@@ -1,342 +1,364 @@
1
- // Autobahn (auto.de redesign) — AutobahnCar field-mapping table (AB-P0-6).
2
- //
3
- // PM deliverable. Documents, for EVERY field of the AutobahnCar view-model
4
- // (components/autobahn/cards/types.ts), exactly where its value comes from on
5
- // the real fe-main "store car" (the transformDataForVehicles output that
6
- // SearchResultsStore.getCarsForPage returns to the SRP) — or marks it
7
- // 'needs-data' when there is no real source yet.
8
- //
9
- // This is the machine-readable companion to the "Data mapping" table in
10
- // docs/redesign/autobahn-fe-main-plan.md. Each row's `source` is the literal
11
- // path on the store car (or an injected dep); `confirmedAt` cites the repo
12
- // file:line where that path / behaviour was verified, so reviewers don't have to
13
- // take it on trust. It is data-only (no imports) and is consumed by ./toAutobahnCar.ts.
14
-
15
- /** Where a field's value originates. */
16
- export type MappingStatus =
17
- | 'wired' // real value taken from the search payload (or a pure derivation of it)
18
- | 'wired-dep' // real value, but supplied through an injected dependency (images / translator)
19
- | 'wired-optional' // real value emitted ONLY when present on the payload; else left undefined
20
- | 'needs-data'; // NO real source on the search payload — left undefined; card shows 'Daten folgt'
21
-
22
- export interface FieldMapping {
23
- /** AutobahnCar field name. */
24
- field: keyof import('../cards/types').AutobahnCar;
25
- /** REQUIRED on the type (always-real) vs OPTIONAL (`?`, may be needs-data). */
26
- required: boolean;
27
- status: MappingStatus;
28
- /** literal source path on the store car, or the injected dep, or '—'. */
29
- source: string;
30
- /** transform applied by toAutobahnCar (formatting / mapping), if any. */
31
- transform?: string;
32
- /** repo file:line that confirms the source path / behaviour. */
33
- confirmedAt?: string;
34
- /** extra rationale, esp. for rating / monthly / images / needs-data. */
35
- notes?: string;
36
- }
37
-
38
- /**
39
- * The store car (transformDataForVehicles output) — key paths the mapper reads.
40
- * Confirmed in services/fe-main/source/framework/DataTransformers.ts:285-374.
41
- */
42
- export const FIELD_MAPPINGS: readonly FieldMapping[] = [
43
- // ---------------------------------------------------------------- identity
44
- {
45
- field: 'make',
46
- required: true,
47
- status: 'wired',
48
- source: 'title.make',
49
- confirmedAt: 'DataTransformers.ts:295',
50
- notes: 'mainData.make, capitalized upstream by normalizeRateObject.',
51
- },
52
- {
53
- field: 'model',
54
- required: true,
55
- status: 'wired',
56
- source: 'title.model',
57
- confirmedAt: 'DataTransformers.ts:296',
58
- },
59
- {
60
- field: 'trim',
61
- required: true,
62
- status: 'wired',
63
- source: 'title.subModel',
64
- confirmedAt: 'DataTransformers.ts:297',
65
- notes: "Mapped to the design's `trim` (sub-model / variant line).",
66
- },
67
-
68
- // --------------------------------------------------------------- key specs
69
- {
70
- field: 'km',
71
- required: true,
72
- status: 'wired',
73
- source: 'info.mileage',
74
- transform: 'number passthrough (cards format de-DE via fmtKm)',
75
- confirmedAt: 'DataTransformers.ts:304',
76
- },
77
- {
78
- field: 'reg',
79
- required: true,
80
- status: 'wired',
81
- source: 'info.regDate',
82
- transform: "formatTimestamp({ timestamp, format: 'MM/YYYY' }) → 'EZ' shown by card",
83
- confirmedAt:
84
- 'DataTransformers.ts:303 (regDate=mainData.firstRegistration, unix s) · decoratedLightProps.tsx:66 (same MM/YYYY format on legacy card)',
85
- notes: 'firstRegistration is a Unix timestamp in seconds.',
86
- },
87
- {
88
- field: 'power',
89
- required: true,
90
- status: 'wired',
91
- source: 'engineData.powerKW + engineData.powerPS',
92
- transform: "getPowerLabel(kW, PS) → '150 kW (204 PS)'",
93
- confirmedAt:
94
- 'DataTransformers.ts:326-328 · fe-ui-core getPowerLabel decoratedProps.tsx:44 · de template vehicleProps.json value.power "{{powerKW}} kW ({{powerPS}} PS)"',
95
- },
96
- {
97
- field: 'fuel',
98
- required: true,
99
- status: 'wired-dep',
100
- source: 'consumption.fuel',
101
- transform: "cbd:* selector code → label via injected t (e.g. 'Benzin'); de fallback if no t",
102
- confirmedAt:
103
- 'DataTransformers.ts:318 · cbd.ts:170-177 (selector_fuel_* → German labels)',
104
- notes:
105
- 'Stored as a selector code (e.g. selector_fuel_petrol). Card shortens long labels itself (cardParts FUEL_SHORT).',
106
- },
107
- {
108
- field: 'gear',
109
- required: true,
110
- status: 'wired-dep',
111
- source: 'info.gearbox',
112
- transform: "cbd:* selector code → label via injected t (e.g. 'Automatik'); de fallback if no t",
113
- confirmedAt: 'DataTransformers.ts:305 · cbd.ts:227-229 (selector_gearbox_* → German labels)',
114
- },
115
- {
116
- field: 'owners',
117
- required: true,
118
- status: 'wired',
119
- source: 'info.numberOfPreviousOwners',
120
- transform: "number passthrough (card renders 'N. Hand'); 0 when 'N/A'",
121
- confirmedAt: 'DataTransformers.ts:306',
122
- notes: "Default 'N/A' upstream → coerced to 0 (non-finite) by the mapper.",
123
- },
124
-
125
- // ------------------------------------------------------------------- price
126
- {
127
- field: 'monthly',
128
- required: true,
129
- status: 'wired',
130
- source: 'price.financing.monthlyInstallment',
131
- transform: 'number passthrough (LEAD price); 0 if absent',
132
- confirmedAt:
133
- 'getFinancing.ts:82 (monthlyInstallment = monthlyCarPrice + monthlyExtraCost) · getComputedFinancing.ts:11 (financing block) · DataTransformers.ts:345 (spread into price.financing)',
134
- notes:
135
- 'This is the FinancingStore-computed financing rate, NOT a hand-rolled annuity. transformDataForVehicles runs getComputedFinancing over the merged search/user config, so the value is present on the store car the SRP already consumes.',
136
- },
137
- {
138
- field: 'price',
139
- required: true,
140
- status: 'wired',
141
- source: 'price.currentSalesPrice',
142
- transform: 'number passthrough (cards format de-DE)',
143
- confirmedAt: 'DataTransformers.ts:352',
144
- },
145
-
146
- // ------------------------------------------------------------------- media
147
- {
148
- field: 'gallery',
149
- required: true,
150
- status: 'wired-dep',
151
- source: 'deps.loadedImages (imagesStore.images.get(id)) ?? deps.getImageUrl(id, mainImageId, size) ?? placeholder',
152
- transform: 'pick imageUrlMedium/Large per size; single main-image URL; else one placeholder',
153
- confirmedAt:
154
- 'ImagesStore.ts:149-152 (getSupportedImageFormat → /{id}/{imageId}/{size}-cached.webp|jpeg) · IImage.imageUrlMedium/Large ImagesStore.ts:30-32 · SearchResults.tsx:98 (SRP builds src via getSupportedImageFormat(id, mainImageId, "small"))',
155
- notes:
156
- 'Pure: images arrive via deps. Container injects imagesStore.getSupportedImageFormat as getImageUrl and imagesStore.images.get(id) as loadedImages. Falls back to a single placeholder before images load — never a fabricated photo.',
157
- },
158
- {
159
- field: 'photos',
160
- required: true,
161
- status: 'wired',
162
- source: 'imagesCount',
163
- transform: 'number passthrough; 0 if absent',
164
- confirmedAt: 'DataTransformers.ts:292 (metaData.imagesCount, default 0)',
165
- },
166
-
167
- // ------------------------------------------------- EnVKV (legally required)
168
- {
169
- field: 'cons',
170
- required: true,
171
- status: 'wired',
172
- source: 'consumption.wltpCombined ?? consumption.consumptionCombined',
173
- transform: "→ '<n> l/100 km' (n formatted per language)",
174
- confirmedAt:
175
- 'DataTransformers.ts:319-320 · de template vehicleProps.json value.consumption "{{consumption}}l/100km"',
176
- notes: 'WLTP preferred when present, mirroring the legacy decorated consumption line.',
177
- },
178
- {
179
- field: 'co2',
180
- required: true,
181
- status: 'wired',
182
- source: 'environmentEmissions.wltpCo2 ?? environmentEmissions.co2',
183
- transform: "→ '<n> g/km'",
184
- confirmedAt:
185
- 'DataTransformers.ts:332-333 · de template vehicleProps.json value.co2Combined "{{co2}}g CO2/km (komb)*"',
186
- },
187
- {
188
- field: 'co2class',
189
- required: true,
190
- status: 'wired',
191
- source: 'environmentEmissions.wltpEnergyEfficiencyClass',
192
- transform:
193
- "selector_energyEfficiencyClass_* → single letter A..G (A+/A++/A+++ collapse to 'A' so the card color band resolves)",
194
- confirmedAt: 'DataTransformers.ts:334 · cbd.ts:156-165 (class codes → A+++..G)',
195
- notes:
196
- "cardParts.InlineCls does CO2_CLASSES.indexOf(c) over ['A'..'G'], so co2class MUST be a bare letter. '' when the car has no class.",
197
- },
198
- {
199
- field: 'phev',
200
- required: false,
201
- status: 'wired-optional',
202
- source:
203
- 'consumption.{wltpWeightedPowerCombined,wltpWeightedCombined,wltpCombined,consumptionPowerCombined} + environmentEmissions.{wltpCo2,wltpEnergyEfficiencyClass,wltpDischargedEnergyEfficiencyClass}',
204
- transform: 'AutobahnPhev dual-figure block; only when fuel is hybridElectricalDiesel/Petrol AND weighted figures exist',
205
- confirmedAt:
206
- 'DataTransformers.ts:321-324,331-335 · VehicleInfo.tsx:86-87 / decoratedLightProps.tsx:155-156 (PHEV = fuel type, ADV-88) · wltpDischargedEnergyEfficiencyClass referenced decoratedLightProps.tsx:168',
207
- notes:
208
- 'wltpDischargedEnergyEfficiencyClass is read by legacy code but is NOT in the transformDataForVehicles environmentEmissions whitelist (DataTransformers.ts:331-335) — so co2classD usually falls back to the weighted class. FLAGGED: confirm whether the search payload should expose the discharged class.',
209
- },
210
-
211
- // --------------------------------------------------------- trust / features
212
- {
213
- field: 'features',
214
- required: true,
215
- status: 'needs-data',
216
- source: '— (not on the SEARCH payload)',
217
- transform: 'always [] from the search mapper',
218
- confirmedAt:
219
- 'DataTransformers.ts:285-374 (no equipment field) · plan data-mapping table: "equipment (grouped) | CarsAPI | wire" is a VDP/CarsAPI source',
220
- notes:
221
- 'Equipment highlights come from CarsAPI on the VDP, not from search results. The CarRow shows no chips on the SRP. NOT fabricated. (Type marks it required, but the real search source is empty — emitted as [].)',
222
- },
223
- {
224
- field: 'rating',
225
- required: true,
226
- status: 'wired',
227
- source: 'price.currentSalesPrice + price.mlCurrentSalesPricePredicted',
228
- transform:
229
- "getPriceRating(sale, predicted) [0..5] → autobahn tone: 5→'top' 4→'good' 3→'fair' 2→'raised' 1→'high'; 0(noRating)→neutral 'fair'",
230
- confirmedAt:
231
- 'VehicleInfo.tsx:160 (SRP card renders getPriceRating(currentSalesPrice, mlCurrentSalesPricePredicted)) · CommonUtils.ts:353-373 (getPriceRating) · price.ts:1 (priceRatings order) · DataTransformers.ts:354 (mlCurrentSalesPricePredicted)',
232
- notes:
233
- "REAL Preisbewertung. Card only special-cases tone==='fair' → warn pill; every other tone → good/green pill (CarCard.tsx:96-97). For noRating we pick the NEUTRAL middle tier, never a flattering one. predicted falls back to sale*1.07814 (PREDICTABLE_PRICE_INDEX) inside getPriceRating, exactly like the live card.",
234
- },
235
- {
236
- field: 'ratingLabel',
237
- required: true,
238
- status: 'wired',
239
- source: 'derived from the rating tier',
240
- transform: "TIER_LABELS[tier] → 'Top Preis'|'Guter Preis'|'Fairer Preis'|'Erhöht'|'Hoher Preis'",
241
- confirmedAt:
242
- 'autobahn/constants.ts:17 (TIER_LABELS) · fe-ui-core locales/priceRating.ts:2-9 (legacy German labels: TOP/GUTER/FAIRER/ERHÖHTER/HOHER PREIS)',
243
- notes:
244
- "Autobahn labels condense increasedPrice→'Erhöht' and highPrice→'Hoher Preis' vs the legacy 'ERHÖHTER PREIS'/'HOHER PREIS'.",
245
- },
246
-
247
- // ------------------------------------- NEEDS-DATA (never synthesized)
248
- {
249
- field: 'listPrice',
250
- required: false,
251
- status: 'wired-optional',
252
- source: 'price.financing.highestPrice (only if isStrikeShown && highest > sale)',
253
- transform: 'emitted only when a real strike price exists; else undefined',
254
- confirmedAt:
255
- 'getFinancing.ts:75 (highestPrice), :70 (isStrikeShown) → spread into price.financing DataTransformers.ts:345',
256
- notes:
257
- 'FLAGGED: there is no dedicated purchase list/UVP strike on the search payload. highestPrice is the financing "strike" base, gated on isStrikeShown. If product wants a true UVP strike, that is needs-data/backend. Left undefined when no real strike.',
258
- },
259
- {
260
- field: 'savings',
261
- required: false,
262
- status: 'wired-optional',
263
- source: 'listPrice − price.currentSalesPrice (only when listPrice resolved)',
264
- transform: 'emitted only alongside a real listPrice; card gates UI at >600 €',
265
- confirmedAt: 'CarCard.tsx:36 / cardParts.tsx:94 (showStrike requires savings>600 && listPrice)',
266
- notes: 'Same caveat as listPrice — no synthetic savings.',
267
- },
268
- {
269
- field: 'drop',
270
- required: false,
271
- status: 'needs-data',
272
- source: '—',
273
- confirmedAt: 'plan data-mapping: "price history sparkline | — | needs data"',
274
- notes:
275
- 'Real per-car price reduction. price.historyPriceDifference exists (DataTransformers.ts:355) but is the financing-config delta, not a confirmed advertised "Preis gesenkt" amount — NOT wired to drop to avoid a misleading reduction chip. Backend phase.',
276
- },
277
- {
278
- field: 'marketLow',
279
- required: false,
280
- status: 'needs-data',
281
- source: '—',
282
- confirmedAt: 'plan data-mapping: "market-value band (low/avg/high) | — | needs data"',
283
- notes: 'Market band lower bound. No source. PricePaths renders the Marktvergleich "Daten folgt" marker.',
284
- },
285
- {
286
- field: 'marketAvg',
287
- required: false,
288
- status: 'needs-data',
289
- source: '—',
290
- confirmedAt: 'plan data-mapping: market-value band → needs data',
291
- notes:
292
- 'NOT mapped from mlCurrentSalesPricePredicted: that ML figure feeds the Preisbewertung, it is not a comparable-market average — using it as the market band would be a fabricated comparison.',
293
- },
294
- {
295
- field: 'marketHigh',
296
- required: false,
297
- status: 'needs-data',
298
- source: '—',
299
- confirmedAt: 'plan data-mapping: market-value band → needs data',
300
- notes: 'Market band upper bound. No source.',
301
- },
302
- {
303
- field: 'lease',
304
- required: false,
305
- status: 'wired-optional',
306
- source: 'price.leasing.monthlyInstallment',
307
- transform: 'emitted only when present',
308
- confirmedAt:
309
- 'getLeasing → leasing.monthlyInstallment (getComputedFinancing.ts:13) · price.leasing spread DataTransformers.ts:348-350 · SearchResultsStore.ts:202 (leasing presence checked on the store car)',
310
- notes:
311
- 'Leasing is not offered/active for every car (SearchResultsStore.getLeasingActive). Left undefined when absent — PricePaths simply omits the leasing row.',
312
- },
313
- {
314
- field: 'watchers',
315
- required: false,
316
- status: 'needs-data',
317
- source: '— (search payload). Possible later: UserActionsAPI stats',
318
- confirmedAt:
319
- 'plan data-mapping: "views / interest | UserActionsAPI stats (verify) | wire if present, else stub" · searchStore.statsData (SearchResultsStore.ts:211-232) is fetched separately, NOT part of the store car',
320
- notes:
321
- 'Buyer-activity count. Not on transformDataForVehicles output. statsData is keyed by carId and loaded async; wiring it is a later SRP task — left undefined so PpActivity shows "Daten folgt".',
322
- },
323
- {
324
- field: 'views',
325
- required: false,
326
- status: 'needs-data',
327
- source: '— (search payload). Possible later: UserActionsAPI stats',
328
- confirmedAt: 'as watchers (searchStore.statsData, separate from the store car)',
329
- notes: 'Recent-views cue. Same as watchers — not synthesized.',
330
- },
331
- ] as const;
332
-
333
- /** Quick lookups for tooling / tests. */
334
- export const NEEDS_DATA_FIELDS: readonly string[] = FIELD_MAPPINGS.filter(
335
- (m) => m.status === 'needs-data'
336
- ).map((m) => m.field);
337
-
338
- export const WIRED_FIELDS: readonly string[] = FIELD_MAPPINGS.filter(
339
- (m) => m.status === 'wired' || m.status === 'wired-dep'
340
- ).map((m) => m.field);
341
-
342
- export default FIELD_MAPPINGS;
1
+ // Autobahn (auto.de redesign) — AutobahnCar field-mapping table (AB-P0-6).
2
+ //
3
+ // PM deliverable. Documents, for EVERY field of the AutobahnCar view-model
4
+ // (components/autobahn/cards/types.ts), exactly where its value comes from on
5
+ // the real fe-main "store car" (the transformDataForVehicles output that
6
+ // SearchResultsStore.getCarsForPage returns to the SRP) — or marks it
7
+ // 'needs-data' when there is no real source yet.
8
+ //
9
+ // This is the machine-readable companion to the "Data mapping" table in
10
+ // docs/redesign/autobahn-fe-main-plan.md. Each row's `source` is the literal
11
+ // path on the store car (or an injected dep); `confirmedAt` cites the repo
12
+ // file:line where that path / behaviour was verified, so reviewers don't have to
13
+ // take it on trust. It is data-only (no imports) and is consumed by ./toAutobahnCar.ts.
14
+
15
+ /** Where a field's value originates. */
16
+ export type MappingStatus =
17
+ | 'wired' // real value taken from the search payload (or a pure derivation of it)
18
+ | 'wired-dep' // real value, but supplied through an injected dependency (images / translator)
19
+ | 'wired-optional' // real value emitted ONLY when present on the payload; else left undefined
20
+ | 'needs-data'; // NO real source on the search payload — left undefined; card shows 'Daten folgt'
21
+
22
+ export interface FieldMapping {
23
+ /** AutobahnCar field name. */
24
+ field: keyof import('../cards/types').AutobahnCar;
25
+ /** REQUIRED on the type (always-real) vs OPTIONAL (`?`, may be needs-data). */
26
+ required: boolean;
27
+ status: MappingStatus;
28
+ /** literal source path on the store car, or the injected dep, or '—'. */
29
+ source: string;
30
+ /** transform applied by toAutobahnCar (formatting / mapping), if any. */
31
+ transform?: string;
32
+ /** repo file:line that confirms the source path / behaviour. */
33
+ confirmedAt?: string;
34
+ /** extra rationale, esp. for rating / monthly / images / needs-data. */
35
+ notes?: string;
36
+ }
37
+
38
+ /**
39
+ * The store car (transformDataForVehicles output) — key paths the mapper reads.
40
+ * Confirmed in services/fe-main/source/framework/DataTransformers.ts:285-374.
41
+ */
42
+ export const FIELD_MAPPINGS: readonly FieldMapping[] = [
43
+ // ---------------------------------------------------------------- identity
44
+ {
45
+ field: 'make',
46
+ required: true,
47
+ status: 'wired',
48
+ source: 'title.make',
49
+ confirmedAt: 'DataTransformers.ts:295',
50
+ notes: 'mainData.make, capitalized upstream by normalizeRateObject.',
51
+ },
52
+ {
53
+ field: 'model',
54
+ required: true,
55
+ status: 'wired',
56
+ source: 'title.model',
57
+ confirmedAt: 'DataTransformers.ts:296',
58
+ },
59
+ {
60
+ field: 'trim',
61
+ required: true,
62
+ status: 'wired',
63
+ source: 'title.subModel',
64
+ confirmedAt: 'DataTransformers.ts:297',
65
+ notes: "Mapped to the design's `trim` (sub-model / variant line).",
66
+ },
67
+
68
+ // --------------------------------------------------------------- key specs
69
+ {
70
+ field: 'km',
71
+ required: true,
72
+ status: 'wired',
73
+ source: 'info.mileage',
74
+ transform: 'number passthrough (cards format de-DE via fmtKm)',
75
+ confirmedAt: 'DataTransformers.ts:304',
76
+ },
77
+ {
78
+ field: 'reg',
79
+ required: true,
80
+ status: 'wired',
81
+ source: 'info.regDate',
82
+ transform: "formatTimestamp({ timestamp, format: 'MM/YYYY' }) → 'EZ' shown by card",
83
+ confirmedAt:
84
+ 'DataTransformers.ts:303 (regDate=mainData.firstRegistration, unix s) · decoratedLightProps.tsx:66 (same MM/YYYY format on legacy card)',
85
+ notes: 'firstRegistration is a Unix timestamp in seconds.',
86
+ },
87
+ {
88
+ field: 'power',
89
+ required: true,
90
+ status: 'wired',
91
+ source: 'engineData.powerKW + engineData.powerPS',
92
+ transform: "getPowerLabel(kW, PS) → '150 kW (204 PS)'",
93
+ confirmedAt:
94
+ 'DataTransformers.ts:326-328 · fe-ui-core getPowerLabel decoratedProps.tsx:44 · de template vehicleProps.json value.power "{{powerKW}} kW ({{powerPS}} PS)"',
95
+ },
96
+ {
97
+ field: 'fuel',
98
+ required: true,
99
+ status: 'wired-dep',
100
+ source: 'consumption.fuel',
101
+ transform: "cbd:* selector code → label via injected t (e.g. 'Benzin'); de fallback if no t",
102
+ confirmedAt:
103
+ 'DataTransformers.ts:318 · cbd.ts:170-177 (selector_fuel_* → German labels)',
104
+ notes:
105
+ 'Stored as a selector code (e.g. selector_fuel_petrol). Card shortens long labels itself (cardParts FUEL_SHORT).',
106
+ },
107
+ {
108
+ field: 'gear',
109
+ required: true,
110
+ status: 'wired-dep',
111
+ source: 'info.gearbox',
112
+ transform: "cbd:* selector code → label via injected t (e.g. 'Automatik'); de fallback if no t",
113
+ confirmedAt: 'DataTransformers.ts:305 · cbd.ts:227-229 (selector_gearbox_* → German labels)',
114
+ },
115
+ {
116
+ field: 'owners',
117
+ required: true,
118
+ status: 'wired',
119
+ source: 'info.numberOfPreviousOwners',
120
+ transform: "number passthrough (card renders 'N. Hand'); 0 when 'N/A'",
121
+ confirmedAt: 'DataTransformers.ts:306',
122
+ notes: "Default 'N/A' upstream → coerced to 0 (non-finite) by the mapper.",
123
+ },
124
+
125
+ // ------------------------------------------------------------------- price
126
+ {
127
+ field: 'monthly',
128
+ required: true,
129
+ status: 'wired',
130
+ source: 'price.financing.monthlyInstallment',
131
+ transform: 'number passthrough (LEAD price); 0 if absent',
132
+ confirmedAt:
133
+ 'getFinancing.ts:82 (monthlyInstallment = monthlyCarPrice + monthlyExtraCost) · getComputedFinancing.ts:11 (financing block) · DataTransformers.ts:345 (spread into price.financing)',
134
+ notes:
135
+ 'This is the FinancingStore-computed financing rate, NOT a hand-rolled annuity. transformDataForVehicles runs getComputedFinancing over the merged search/user config, so the value is present on the store car the SRP already consumes.',
136
+ },
137
+ {
138
+ field: 'price',
139
+ required: true,
140
+ status: 'wired',
141
+ source: 'price.currentSalesPrice',
142
+ transform: 'number passthrough (cards format de-DE)',
143
+ confirmedAt: 'DataTransformers.ts:352',
144
+ },
145
+
146
+ // ------------------------------------------------------------------- media
147
+ {
148
+ field: 'gallery',
149
+ required: true,
150
+ status: 'wired-dep',
151
+ source: 'deps.loadedImages (imagesStore.images.get(id)) ?? deps.getImageUrl(id, mainImageId, size) ?? placeholder',
152
+ transform: 'pick imageUrlMedium/Large per size; single main-image URL; else one placeholder',
153
+ confirmedAt:
154
+ 'ImagesStore.ts:149-152 (getSupportedImageFormat → /{id}/{imageId}/{size}-cached.webp|jpeg) · IImage.imageUrlMedium/Large ImagesStore.ts:30-32 · SearchResults.tsx:98 (SRP builds src via getSupportedImageFormat(id, mainImageId, "small"))',
155
+ notes:
156
+ 'Pure: images arrive via deps. Container injects imagesStore.getSupportedImageFormat as getImageUrl and imagesStore.images.get(id) as loadedImages. Falls back to a single placeholder before images load — never a fabricated photo.',
157
+ },
158
+ {
159
+ field: 'photos',
160
+ required: true,
161
+ status: 'wired',
162
+ source: 'imagesCount',
163
+ transform: 'number passthrough; 0 if absent',
164
+ confirmedAt: 'DataTransformers.ts:292 (metaData.imagesCount, default 0)',
165
+ },
166
+
167
+ // ------------------------------------------------- EnVKV (legally required)
168
+ {
169
+ field: 'cons',
170
+ required: true,
171
+ status: 'wired',
172
+ source: 'consumption.wltpCombined ?? consumption.consumptionCombined',
173
+ transform: "→ '<n> l/100 km' (n formatted per language)",
174
+ confirmedAt:
175
+ 'DataTransformers.ts:319-320 · de template vehicleProps.json value.consumption "{{consumption}}l/100km"',
176
+ notes: 'WLTP preferred when present, mirroring the legacy decorated consumption line.',
177
+ },
178
+ {
179
+ field: 'co2',
180
+ required: true,
181
+ status: 'wired',
182
+ source: 'environmentEmissions.wltpCo2 ?? environmentEmissions.co2',
183
+ transform: "→ '<n> g/km'",
184
+ confirmedAt:
185
+ 'DataTransformers.ts:332-333 · de template vehicleProps.json value.co2Combined "{{co2}}g CO2/km (komb)*"',
186
+ },
187
+ {
188
+ field: 'co2class',
189
+ required: true,
190
+ status: 'wired',
191
+ source: 'environmentEmissions.wltpEnergyEfficiencyClass',
192
+ transform:
193
+ "selector_energyEfficiencyClass_* → single letter A..G (A+/A++/A+++ collapse to 'A' so the card color band resolves)",
194
+ confirmedAt: 'DataTransformers.ts:334 · cbd.ts:156-165 (class codes → A+++..G)',
195
+ notes:
196
+ "cardParts.InlineCls does CO2_CLASSES.indexOf(c) over ['A'..'G'], so co2class MUST be a bare letter. '' when the car has no class.",
197
+ },
198
+ {
199
+ field: 'phev',
200
+ required: false,
201
+ status: 'wired-optional',
202
+ source:
203
+ 'consumption.{wltpWeightedPowerCombined,wltpWeightedCombined,wltpCombined,consumptionPowerCombined} + environmentEmissions.{wltpCo2,wltpEnergyEfficiencyClass,wltpDischargedEnergyEfficiencyClass}',
204
+ transform: 'AutobahnPhev dual-figure block; only when fuel is hybridElectricalDiesel/Petrol AND weighted figures exist',
205
+ confirmedAt:
206
+ 'DataTransformers.ts:321-324,331-335 · VehicleInfo.tsx:86-87 / decoratedLightProps.tsx:155-156 (PHEV = fuel type, ADV-88) · wltpDischargedEnergyEfficiencyClass referenced decoratedLightProps.tsx:168',
207
+ notes:
208
+ 'wltpDischargedEnergyEfficiencyClass is read by legacy code but is NOT in the transformDataForVehicles environmentEmissions whitelist (DataTransformers.ts:331-335) — so co2classD usually falls back to the weighted class. FLAGGED: confirm whether the search payload should expose the discharged class.',
209
+ },
210
+
211
+ // --------------------------------------------------------- trust / features
212
+ {
213
+ field: 'features',
214
+ required: true,
215
+ status: 'needs-data',
216
+ source: '— (not on the SEARCH payload)',
217
+ transform: 'always [] from the search mapper',
218
+ confirmedAt:
219
+ 'DataTransformers.ts:285-374 (no equipment field) · plan data-mapping table: "equipment (grouped) | CarsAPI | wire" is a VDP/CarsAPI source',
220
+ notes:
221
+ 'Equipment highlights come from CarsAPI on the VDP, not from search results. The CarRow shows no chips on the SRP. NOT fabricated. (Type marks it required, but the real search source is empty — emitted as [].)',
222
+ },
223
+ {
224
+ field: 'rating',
225
+ required: true,
226
+ status: 'wired',
227
+ source: 'price.currentSalesPrice + price.mlCurrentSalesPricePredicted',
228
+ transform:
229
+ "getPriceRating(sale, predicted) [0..5] → autobahn tone: 5→'top' 4→'good' 3→'fair' 2→'raised' 1→'high'; 0(noRating)→neutral 'fair'",
230
+ confirmedAt:
231
+ 'VehicleInfo.tsx:160 (SRP card renders getPriceRating(currentSalesPrice, mlCurrentSalesPricePredicted)) · CommonUtils.ts:353-373 (getPriceRating) · price.ts:1 (priceRatings order) · DataTransformers.ts:354 (mlCurrentSalesPricePredicted)',
232
+ notes:
233
+ "REAL Preisbewertung. Card only special-cases tone==='fair' → warn pill; every other tone → good/green pill (CarCard.tsx:96-97). For noRating we pick the NEUTRAL middle tier, never a flattering one. predicted falls back to sale*1.07814 (PREDICTABLE_PRICE_INDEX) inside getPriceRating, exactly like the live card.",
234
+ },
235
+ {
236
+ field: 'ratingLabel',
237
+ required: true,
238
+ status: 'wired',
239
+ source: 'derived from the rating tier',
240
+ transform: "TIER_LABELS[tier] → 'Top Preis'|'Guter Preis'|'Fairer Preis'|'Erhöht'|'Hoher Preis'",
241
+ confirmedAt:
242
+ 'autobahn/constants.ts:17 (TIER_LABELS) · fe-ui-core locales/priceRating.ts:2-9 (legacy German labels: TOP/GUTER/FAIRER/ERHÖHTER/HOHER PREIS)',
243
+ notes:
244
+ "Autobahn labels condense increasedPrice→'Erhöht' and highPrice→'Hoher Preis' vs the legacy 'ERHÖHTER PREIS'/'HOHER PREIS'.",
245
+ },
246
+
247
+ // ------------------------------------- NEEDS-DATA (never synthesized)
248
+ {
249
+ field: 'listPrice',
250
+ required: false,
251
+ status: 'wired-optional',
252
+ source: 'price.financing.highestPrice (only if isStrikeShown && highest > sale)',
253
+ transform: 'emitted only when a real strike price exists; else undefined',
254
+ confirmedAt:
255
+ 'getFinancing.ts:75 (highestPrice), :70 (isStrikeShown) → spread into price.financing DataTransformers.ts:345',
256
+ notes:
257
+ 'FLAGGED: there is no dedicated purchase list/UVP strike on the search payload. highestPrice is the financing "strike" base, gated on isStrikeShown. If product wants a true UVP strike, that is needs-data/backend. Left undefined when no real strike.',
258
+ },
259
+ {
260
+ field: 'savings',
261
+ required: false,
262
+ status: 'wired-optional',
263
+ source: 'listPrice − price.currentSalesPrice (only when listPrice resolved)',
264
+ transform: 'emitted only alongside a real listPrice; card gates UI at >600 €',
265
+ confirmedAt: 'CarCard.tsx:36 / cardParts.tsx:94 (showStrike requires savings>600 && listPrice)',
266
+ notes: 'Same caveat as listPrice — no synthetic savings.',
267
+ },
268
+ {
269
+ field: 'drop',
270
+ required: false,
271
+ status: 'needs-data',
272
+ source: '—',
273
+ confirmedAt: 'plan data-mapping: "price history sparkline | — | needs data"',
274
+ notes:
275
+ 'Real per-car price reduction. price.historyPriceDifference exists (DataTransformers.ts:355) but is the financing-config delta, not a confirmed advertised "Preis gesenkt" amount — NOT wired to drop to avoid a misleading reduction chip. Backend phase.',
276
+ },
277
+ {
278
+ field: 'marketLow',
279
+ required: false,
280
+ status: 'needs-data',
281
+ source: '—',
282
+ confirmedAt: 'plan data-mapping: "market-value band (low/avg/high) | — | needs data"',
283
+ notes: 'Market band lower bound. No source. PricePaths renders the Marktvergleich "Daten folgt" marker.',
284
+ },
285
+ {
286
+ field: 'marketAvg',
287
+ required: false,
288
+ status: 'needs-data',
289
+ source: '—',
290
+ confirmedAt: 'plan data-mapping: market-value band → needs data',
291
+ notes:
292
+ 'NOT mapped from mlCurrentSalesPricePredicted: that ML figure feeds the Preisbewertung, it is not a comparable-market average — using it as the market band would be a fabricated comparison.',
293
+ },
294
+ {
295
+ field: 'marketHigh',
296
+ required: false,
297
+ status: 'needs-data',
298
+ source: '—',
299
+ confirmedAt: 'plan data-mapping: market-value band → needs data',
300
+ notes: 'Market band upper bound. No source.',
301
+ },
302
+ {
303
+ field: 'lease',
304
+ required: false,
305
+ status: 'wired-optional',
306
+ source: 'price.leasing.monthlyInstallment',
307
+ transform: 'emitted only when present',
308
+ confirmedAt:
309
+ 'getLeasing → leasing.monthlyInstallment (getComputedFinancing.ts:13) · price.leasing spread DataTransformers.ts:348-350 · SearchResultsStore.ts:202 (leasing presence checked on the store car)',
310
+ notes:
311
+ 'Leasing is not offered/active for every car (SearchResultsStore.getLeasingActive). Left undefined when absent — PricePaths simply omits the leasing row.',
312
+ },
313
+ {
314
+ field: 'watchers',
315
+ required: false,
316
+ status: 'needs-data',
317
+ source: '— (search payload). Possible later: UserActionsAPI stats',
318
+ confirmedAt:
319
+ 'plan data-mapping: "views / interest | UserActionsAPI stats (verify) | wire if present, else stub" · searchStore.statsData (SearchResultsStore.ts:211-232) is fetched separately, NOT part of the store car',
320
+ notes:
321
+ 'Buyer-activity count. Not on transformDataForVehicles output. statsData is keyed by carId and loaded async; wiring it is a later SRP task — left undefined so PpActivity shows "Daten folgt".',
322
+ },
323
+ {
324
+ field: 'views',
325
+ required: false,
326
+ status: 'needs-data',
327
+ source: '— (search payload). Possible later: UserActionsAPI stats',
328
+ confirmedAt: 'as watchers (searchStore.statsData, separate from the store car)',
329
+ notes: 'Recent-views cue. Same as watchers — not synthesized.',
330
+ },
331
+
332
+ // ------------------------------------------- gallery activity strip (WIRED, AB-P0-9)
333
+ {
334
+ field: 'viewsCount',
335
+ required: false,
336
+ status: 'wired-optional',
337
+ source: 'deps.stats.totalCarImpCount ← searchStore.statsData.get(id) (UserActionsAPI stats/viewers)',
338
+ transform: 'number passthrough; emitted only once the async stats fetch resolves for this car',
339
+ confirmedAt:
340
+ 'SearchResultsStore.ts:211-232 (getStatsDataByIds/getStatsData already fetched by SearchNextPage.runSearch, getStats=true) · UserActionsAPI.ts:97-98 (stats/viewers) · withStats.tsx:11 (IStatsData.totalCarImpCount, same endpoint already rendered on the legacy card)',
341
+ notes:
342
+ 'Distinct from `views` on purpose: `views` feeds PpActivity’s fabricated "vor N Std" cue (car.views % 6) — reusing it here would have silently turned that dormant text on everywhere. viewsCount only drives the new gallery eye pill.',
343
+ },
344
+ {
345
+ field: 'favoritesCount',
346
+ required: false,
347
+ status: 'wired-optional',
348
+ source: 'deps.stats.totalFavCount ← searchStore.statsData.get(id) (UserActionsAPI stats/viewers)',
349
+ transform: 'number passthrough; emitted only once the async stats fetch resolves for this car',
350
+ confirmedAt: 'same source as viewsCount · withStats.tsx:11 (IStatsData.totalFavCount)',
351
+ notes: 'Distinct from `watchers` for the same reason as viewsCount (keeps PpActivity untouched).',
352
+ },
353
+ ] as const;
354
+
355
+ /** Quick lookups for tooling / tests. */
356
+ export const NEEDS_DATA_FIELDS: readonly string[] = FIELD_MAPPINGS.filter(
357
+ (m) => m.status === 'needs-data'
358
+ ).map((m) => m.field);
359
+
360
+ export const WIRED_FIELDS: readonly string[] = FIELD_MAPPINGS.filter(
361
+ (m) => m.status === 'wired' || m.status === 'wired-dep'
362
+ ).map((m) => m.field);
363
+
364
+ export default FIELD_MAPPINGS;