@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,572 +1,572 @@
1
- /* tslint:disable */
2
- import * as React from 'react';
3
- // import { cbdGearbox, cbdFuel } from './cbdSelectors'
4
- import { formatMileage } from '../utils/CommonUtils';
5
- import { formatTimestamp } from '../utils/DateUtils';
6
- import { DELIVERY_PERIODS_EXTRA } from '../constants/core';
7
- import moment from 'moment';
8
- import { IDecoratedProp } from '../types/types';
9
-
10
- interface IDecoratedProps {
11
- [key: string]: IDecoratedProp;
12
- }
13
-
14
- const isPropDefined = (prop: any) => {
15
- const type = typeof prop;
16
- if (type === 'string') {
17
- return prop.indexOf('other') === -1
18
- && prop.indexOf('unknown') === -1
19
- && prop.indexOf('N/A') === -1;
20
- }
21
- return !(prop === undefined || prop === null) && type !== 'undefined';
22
- };
23
-
24
- const formatDeliveryPeriod = (t: (phrase: string, config?: any) => string, deliveryPeriod: string) => {
25
- const count: number = +DELIVERY_PERIODS_EXTRA.find((period: any) => period.value === deliveryPeriod).label;
26
- // months until delivery date unrounded (float)
27
- const monthsTo: number = moment.utc().diff(moment.utc().subtract(count, 'd'), 'M', true);
28
- return Math.round(monthsTo) > 1
29
- ? t('vehicleProps:value.deliveryPeriodMonths', { count: Math.round(monthsTo) })
30
- : t('vehicleProps:value.deliveryPeriodDays', { count });
31
- };
32
-
33
- const getDecoratedLightProps = (
34
- car: any, // @TODO should have a proper interface
35
- t: (phrase: string, config?: any) => string,
36
- language: string = 'en',
37
- simplifiedLabels: boolean = false // shortened labels for repsonsive layout (see 'power')
38
- ): IDecoratedProps => {
39
- const {
40
- mainData: {
41
- offer = {},
42
- mileage,
43
- firstRegistration,
44
- location,
45
- numberOfPreviousOwners = '',
46
- usageType = '',
47
- condition = '',
48
- damaged = ''
49
- }
50
- } = car;
51
- return {
52
- mileage: {
53
- name: 'mileage',
54
- icon: 'speed',
55
- get value() {
56
- return Number.isFinite(parseInt(mileage, 10))
57
- ? t('vehicleProps:value.mileage', { mileage: formatMileage(mileage) })
58
- : t('vehicleProps:value.na');
59
- }
60
- },
61
- firstRegistration: {
62
- name: 'firstRegistration',
63
- icon: 'date',
64
- get value() {
65
- return Number.isFinite(firstRegistration)
66
- ? formatTimestamp({ timestamp: firstRegistration, format: 'MM/YYYY' })
67
- : t('vehicleProps:value.na');
68
- }
69
- },
70
- power: {
71
- name: 'power',
72
- title: t('vehicleProps:title.power'),
73
- icon: 'ps',
74
- get value() {
75
- const { powerKW, powerPS } = car.engineData;
76
-
77
- if (Number.isFinite(powerKW) && Number.isFinite(powerPS)) {
78
- return simplifiedLabels
79
- ? t('vehicleProps:value.powerPS', { powerPS })
80
- : t('vehicleProps:value.power', { powerKW, powerPS });
81
- }
82
-
83
- return t('vehicleProps:value.na');
84
- }
85
- },
86
-
87
- location: {
88
- name: 'location',
89
- icon: 'location',
90
- get value() {
91
- const { city, street, zipCode } = location;
92
- const formattedZipCode = !!zipCode && zipCode.toString().length < 5 ? `0${zipCode}` : zipCode;
93
- return isPropDefined(city)
94
- ? isPropDefined(street) ? `${street}, ${city} ${formattedZipCode}` : `${city} ${!!formattedZipCode ? formattedZipCode : ''}`
95
- : t('vehicleProps:value.na');
96
- }
97
- },
98
- consumptionCombined: {
99
- name: 'consumptionCombined',
100
- icon: 'fuelConsumption',
101
- title: t('vehicleProps:title.сonsumptionCombined'),
102
- get value() {
103
- const consumptionCombined = car.consumption.consumptionCombined;
104
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
105
- const translatedUnit = t(`cbd:${consumptionUnit}`);
106
- const wltpCombined = car.consumption.wltpCombined;
107
- if (wltpCombined) {
108
- return Number.isFinite(wltpCombined)
109
- ? t('vehicleProps:value.wltpCombined', { consumption: wltpCombined.toLocaleString(language), unit: translatedUnit })
110
- : t('vehicleProps:value.na');
111
- }
112
- return Number.isFinite(consumptionCombined)
113
- ? t('vehicleProps:value.consumption', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
114
- : t('vehicleProps:value.na');
115
- }
116
- },
117
- consumptionCombinedAlternateView: {
118
- name: 'consumptionCombined',
119
- icon: 'fuelConsumption',
120
- get value() {
121
- const consumptionCombined = car.consumption.consumptionCombined;
122
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
123
- const translatedUnit = t(`cbd:${consumptionUnit}`);
124
- const wltpConsumptionCombined = car.consumption.wltpCombined;
125
- const wltpCo2 = car.environmentEmissions.wltpCo2;
126
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
127
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
128
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
129
- : null;
130
-
131
- const co2 = car.environmentEmissions.co2;
132
-
133
- const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
134
- ? t('vehicleProps:value.wltpCombined', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
135
- : null;
136
-
137
- const wltpCo2PluginValue = Number.isFinite(wltpCo2)
138
- ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language), unit: translatedUnit })
139
- : null;
140
-
141
- const wltpCo2Value = Number.isFinite(wltpCo2)
142
- ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
143
- : null;
144
-
145
- const consumptionValue = Number.isFinite(consumptionCombined)
146
- ? t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
147
- : t('vehicleProps:value.na');
148
-
149
- const co2Value = Number.isFinite(co2)
150
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
151
- : t('vehicleProps:value.na');
152
-
153
- // ADV-88: "is a hybrid car" is now determined by fuel type (hybrid electric + diesel/petrol),
154
- // not engineData.hybridPlugin.
155
- const hybridPlugin = car.consumption.fuel === 'selector_fuel_hybridElectricalDiesel'
156
- || car.consumption.fuel === 'selector_fuel_hybridElectricalPetrol';
157
- const wltpWeightedPowerCombined = car.consumption.wltpWeightedPowerCombined;
158
- const wltpWeightedCombined = car.consumption.wltpWeightedCombined;
159
-
160
- const wltpWeightedPowerCombinedContent = wltpWeightedPowerCombined ? t('vehicleProps:value.wltpWeightedPowerCombined', { consumption: wltpWeightedPowerCombined.toLocaleString(language), unit: translatedUnit }) : null;
161
- const wltpWeightedCombinedContent = wltpWeightedCombined ? t('vehicleProps:value.wltpWeightedCombined', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit }) : null;
162
-
163
- // ADV-88: the weighted+discharged (entladen) consumption treatment is shown for ANY plug-in
164
- // hybrid (new or used) — gated on hybridPlugin only, no condition check.
165
- if (hybridPlugin) {
166
- if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent) {
167
- const dischargedCombined = Number.isFinite(wltpConsumptionCombined) ? wltpConsumptionCombined : 19.9;
168
- const dischargedClass = car.environmentEmissions.wltpDischargedEnergyEfficiencyClass || 'selector_energyEfficiencyClass_g';
169
- const weightedCombinedLabeled = t('vehicleProps:value.wltpWeightedCombinedLabel', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit });
170
- const dischargedCombinedLabeled = t('vehicleProps:value.wltpDischargedCombinedLabel', { consumption: dischargedCombined.toLocaleString(language), unit: translatedUnit });
171
- const co2WeightedContent = Number.isFinite(wltpCo2)
172
- ? t('vehicleProps:value.wltpCo2WtdCombinedShort', { co2: wltpCo2.toLocaleString(language) })
173
- : null;
174
- const co2ClassWeighted = isPropDefined(wltpEnergyEfficiencyClass)
175
- ? t('vehicleProps:value.co2ClassWeighted', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
176
- : null;
177
- const co2ClassDischarged = t('vehicleProps:value.co2ClassDischarged', { class: t(`cbd:${dischargedClass}`) });
178
- return <React.Fragment>
179
- {`${wltpWeightedPowerCombinedContent} + `}
180
- {`${weightedCombinedLabeled}, `}
181
- {`${dischargedCombinedLabeled}`}
182
- {co2WeightedContent && <>, {co2WeightedContent}</>}
183
- {co2ClassWeighted && <>, {co2ClassWeighted}</>}
184
- {<>, {co2ClassDischarged}</>}
185
- </React.Fragment>
186
- }
187
-
188
- if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent && wltpCo2PluginValue) {
189
- return <React.Fragment>
190
- {`${wltpWeightedPowerCombinedContent}, `}
191
- {`${wltpWeightedCombinedContent}, `}
192
- {wltpCo2PluginValue}
193
- {co2ClassValue && <>, {co2ClassValue}</>}
194
- </React.Fragment>
195
- }
196
-
197
- // ADV-88: only render the electric (kWh) line when the car actually has a combined
198
- // power consumption — otherwise we printed "nullkWh/100km" for plug-ins lacking it.
199
- const realPowerCombined = car.consumption.consumptionPowerCombined;
200
- const powerCombinedLine = Number.isFinite(realPowerCombined)
201
- ? t('vehicleProps:value.consumptionPowerCombined', { consumption: realPowerCombined.toLocaleString(language), unit: translatedUnit })
202
- : null;
203
- return Number.isFinite(consumptionCombined) || Number.isFinite(realPowerCombined)
204
- ? <React.Fragment>
205
- {powerCombinedLine && <>{powerCombinedLine} <br /></>}{consumptionValue} <br /> {co2Value}
206
- {co2ClassValue && <>, {co2ClassValue}</>}
207
- </React.Fragment>
208
- : t('vehicleProps:value.na');
209
-
210
- }
211
-
212
- if (wltpConsumptionValue && wltpCo2Value) {
213
- return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
214
- }
215
-
216
- return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
217
- }
218
- },
219
- consumptionPowerCombinedAlternateView: {
220
- name: 'consumptionCombined',
221
- icon: 'fuelConsumption',
222
- title: t('vehicleProps:title.consumptionPowerCombined'),
223
- get value() {
224
- const consumptionPowerCombined = car.consumption.consumptionCombined;
225
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
226
- const translatedUnit = t(`cbd:${consumptionUnit}`);
227
- const co2 = car.environmentEmissions.co2;
228
- const wltpConsumptionPowerCombined = car.consumption.wltpPowerCombined;
229
- const wltpCo2 = car.environmentEmissions.wltpCo2;
230
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
231
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
232
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
233
- : null;
234
-
235
- const wltpConsumptionValue = Number.isFinite(wltpConsumptionPowerCombined)
236
- ? t('vehicleProps:value.wltpPowerCombined', { consumption: wltpConsumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
237
- : null;
238
-
239
- const wltpCo2Value = Number.isFinite(wltpCo2)
240
- ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
241
- : null;
242
-
243
- const consumptionValue = Number.isFinite(consumptionPowerCombined)
244
- ? t('vehicleProps:value.consumptionPower', { consumption: consumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
245
- : t('vehicleProps:value.na');
246
-
247
- const co2Value = Number.isFinite(co2)
248
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
249
- : t('vehicleProps:value.na');
250
-
251
- if (wltpConsumptionValue && wltpCo2Value) {
252
- return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
253
- }
254
-
255
- return <>{consumptionValue} <br /> {co2Value} {co2ClassValue && <>, {co2ClassValue}</>}</>;
256
- }
257
- },
258
-
259
- consumptionCombinedHybridAlternateView: {
260
- name: 'consumptionCombined',
261
- icon: 'fuelConsumption',
262
- get value() {
263
- const consumptionCombined = +car.consumption.consumptionCombined;
264
- const consumptionPowerCombined = +car.consumption.consumptionPowerCombined;
265
- const wltpConsumptionPowerCombined = car.consumption.wltpPowerCombined;
266
-
267
- const wltpConsumptionCombined = car.consumption.wltpCombined;
268
-
269
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
270
- const translatedUnit = t(`cbd:${consumptionUnit}`);
271
- const wltpWeightedPowerCombined = car.consumption.wltpWeightedPowerCombined;
272
- const wltpWeightedCombined = car.consumption.wltpWeightedCombined;
273
-
274
- const consumptionPowerCombinedContent = t('vehicleProps:value.consumptionPowerCombined', { consumption: consumptionPowerCombined.toLocaleString(language), unit: translatedUnit });
275
- const consumptionCombinedContent = t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit });
276
- const wltpWeightedPowerCombinedContent = Number.isFinite(wltpWeightedPowerCombined)
277
- ? t('vehicleProps:value.wltpWeightedPowerCombined', { consumption: wltpWeightedPowerCombined.toLocaleString(language), unit: translatedUnit })
278
- : null;
279
- const wltpWeightedCombinedContent = Number.isFinite(wltpWeightedCombined)
280
- ? t('vehicleProps:value.wltpWeightedCombined', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit })
281
- : null;
282
- const wltpConsumptionPowerCombinedContent = wltpConsumptionPowerCombined
283
- ? t('vehicleProps:value.wltpPowerCombined', { consumption: wltpConsumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
284
- : null;
285
-
286
- const wltpConsumptionCombinedContent = wltpConsumptionCombined ?
287
- t('vehicleProps:value.wltpCombined', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
288
- : null;
289
-
290
- const co2 = car.environmentEmissions.co2;
291
- const wltpCo2 = car.environmentEmissions.wltpCo2;
292
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
293
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
294
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
295
- : null;
296
-
297
- const co2Value = Number.isFinite(co2)
298
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
299
- : t('vehicleProps:value.na');
300
-
301
- const wltpCo2Value = Number.isFinite(co2)
302
- ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language) })
303
- : null;
304
-
305
- const wltpCo2PluginValue = Number.isFinite(wltpCo2)
306
- ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language), unit: translatedUnit })
307
- : null;
308
-
309
- // ADV-88: "is a hybrid car" is now determined by fuel type (hybrid electric + diesel/petrol),
310
- // not engineData.hybridPlugin.
311
- const hybridPlugin = car.consumption.fuel === 'selector_fuel_hybridElectricalDiesel'
312
- || car.consumption.fuel === 'selector_fuel_hybridElectricalPetrol';
313
-
314
- // ADV-88: the weighted+discharged (entladen) consumption treatment is shown for ANY plug-in
315
- // hybrid (new or used) — gated on hybridPlugin only, no condition check.
316
- if (hybridPlugin) {
317
- if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent) {
318
- const dischargedCombined = Number.isFinite(wltpConsumptionCombined) ? wltpConsumptionCombined : 19.9;
319
- const dischargedClass = car.environmentEmissions.wltpDischargedEnergyEfficiencyClass || 'selector_energyEfficiencyClass_g';
320
- const weightedCombinedLabeled = t('vehicleProps:value.wltpWeightedCombinedLabel', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit });
321
- const dischargedCombinedLabeled = t('vehicleProps:value.wltpDischargedCombinedLabel', { consumption: dischargedCombined.toLocaleString(language), unit: translatedUnit });
322
- const co2WeightedContent = Number.isFinite(wltpCo2)
323
- ? t('vehicleProps:value.wltpCo2WtdCombinedShort', { co2: wltpCo2.toLocaleString(language) })
324
- : null;
325
- const co2ClassWeighted = isPropDefined(wltpEnergyEfficiencyClass)
326
- ? t('vehicleProps:value.co2ClassWeighted', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
327
- : null;
328
- const co2ClassDischarged = t('vehicleProps:value.co2ClassDischarged', { class: t(`cbd:${dischargedClass}`) });
329
- return <React.Fragment>
330
- {`${wltpWeightedPowerCombinedContent} + `}
331
- {`${weightedCombinedLabeled}, `}
332
- {`${dischargedCombinedLabeled}`}
333
- {co2WeightedContent && <>, {co2WeightedContent}</>}
334
- {co2ClassWeighted && <>, {co2ClassWeighted}</>}
335
- {<>, {co2ClassDischarged}</>}
336
- </React.Fragment>
337
- }
338
-
339
- if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent && wltpCo2PluginValue) {
340
- return <React.Fragment>
341
- {`${wltpWeightedPowerCombinedContent}, `}
342
- {`${wltpWeightedCombinedContent}, `}
343
- {wltpCo2PluginValue}
344
- {co2ClassValue && <>, {co2ClassValue}</>}
345
- </React.Fragment>
346
- }
347
- }
348
-
349
- if (wltpConsumptionPowerCombinedContent && wltpConsumptionCombinedContent && wltpCo2Value) {
350
- return <React.Fragment>
351
- {`${wltpConsumptionPowerCombinedContent}, `}
352
- {`${wltpWeightedCombinedContent}, `}
353
- {wltpCo2PluginValue}
354
- {co2ClassValue && <>, {co2ClassValue}</>}
355
- </React.Fragment>
356
- }
357
-
358
- return Number.isFinite(consumptionCombined) || Number.isFinite(consumptionPowerCombined)
359
- ? <React.Fragment>
360
- {consumptionPowerCombined ? consumptionPowerCombinedContent : t('vehicleProps:value.na')} <br />{consumptionCombinedContent} <br /> {co2Value}
361
- {co2ClassValue && <>, {co2ClassValue}</>}
362
- </React.Fragment>
363
- : t('vehicleProps:value.na');
364
- }
365
- },
366
-
367
- consumptionHydrogenCombinedAlternateView: {
368
- name: 'consumptionCombined',
369
- icon: 'fuelConsumption',
370
- title: t('vehicleProps:title.consumptionHydrogenCombined'),
371
- get value() {
372
- const consumptionHydrogenCombined = car.consumption.consumptionCombined;
373
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
374
- const translatedUnit = t(`cbd:${consumptionUnit}`);
375
- const co2 = car.environmentEmissions.co2;
376
- const wltpConsumptionCombined = car.consumption.wltpCombined;
377
- const wltpCo2 = car.environmentEmissions.wltpCo2;
378
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
379
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
380
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
381
- : null;
382
-
383
- const consumptionValue = Number.isFinite(consumptionHydrogenCombined)
384
- ? t('vehicleProps:value.consumptionGas', { consumption: consumptionHydrogenCombined.toLocaleString(language), unit: translatedUnit })
385
- : t('vehicleProps:value.na');
386
-
387
- const co2Value = Number.isFinite(co2)
388
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
389
- : t('vehicleProps:value.na');
390
-
391
- const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
392
- ? t('vehicleProps:value.wltpCombinedGas', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
393
- : null;
394
- const wltpCo2Value = Number.isFinite(wltpCo2)
395
- ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
396
- : null;
397
-
398
- if (wltpConsumptionValue && wltpCo2Value) {
399
- return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
400
- }
401
-
402
- return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
403
- }
404
- },
405
- consumptionGasCombinedAlternateView: {
406
- name: 'consumptionCombined',
407
- icon: 'fuelConsumption',
408
- title: t('vehicleProps:title.consumptionGasCombined'),
409
- get value() {
410
- const consumptionGasCombined = car.consumption.consumptionCombined;
411
- const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
412
- const translatedUnit = t(`cbd:${consumptionUnit}`);
413
- const co2 = car.environmentEmissions.co2;
414
- const wltpConsumptionCombined = car.consumption.wltpCombined;
415
- const wltpCo2 = car.environmentEmissions.wltpCo2;
416
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
417
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
418
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
419
- : null;
420
-
421
- const consumptionValue = Number.isFinite(consumptionGasCombined)
422
- ? t('vehicleProps:value.consumptionGas', { consumption: consumptionGasCombined.toLocaleString(language), unit: translatedUnit })
423
- : t('vehicleProps:value.na');
424
-
425
- const co2Value = Number.isFinite(co2)
426
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
427
- : t('vehicleProps:value.na');
428
-
429
- const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
430
- ? t('vehicleProps:value.consumptionGas', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
431
- : null;
432
-
433
- const wltpCo2Value = Number.isFinite(wltpCo2)
434
- ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
435
- : null;
436
-
437
- if (wltpConsumptionValue && wltpCo2Value) {
438
- return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
439
- }
440
-
441
- return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
442
- }
443
- },
444
- consumptionCombinedDealer: {
445
- name: 'consumptionCombined',
446
- icon: 'fuelConsumption',
447
- get value() {
448
- const consumptionCombined = car.consumption && car.consumption.consumptionCombined;
449
- const consumptionUnit = car.consumption && car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
450
- const translatedUnit = t(`cbd:${consumptionUnit}`);
451
-
452
- const co2 = car.environmentEmissions.co2;
453
- const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
454
-
455
- const consumptionValue = Number.isFinite(consumptionCombined)
456
- ? t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
457
- : t('vehicleProps:value.na');
458
-
459
- const co2Value = Number.isFinite(co2)
460
- ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
461
- : t('vehicleProps:value.na');
462
-
463
- const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
464
- ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
465
- : null;
466
-
467
- return <>{consumptionValue} | {co2Value}{co2ClassValue ? <> | {co2ClassValue}</> : null}</>;
468
- }
469
- },
470
- gearbox: {
471
- name: 'gearbox',
472
- get icon() {
473
- const gearbox = car.driveSuspension.gearbox;
474
- return isPropDefined(gearbox) ? car.driveSuspension.gearbox : 'selector_gearbox_manualShift';
475
- },
476
- get value() {
477
- const gearbox = car.driveSuspension.gearbox;
478
- return isPropDefined(gearbox) ? t(`cbd:${gearbox}`) : 'N/A';
479
- }
480
- },
481
- numberOfPreviousOwners: {
482
- title: t('vehicleProps:title.numberOfPreviousOwners'),
483
- icon: 'owner',
484
- get value() {
485
- return Number.isFinite(numberOfPreviousOwners)
486
- ? t('vehicleProps:value.vehicleOwners', { count: numberOfPreviousOwners })
487
- : t('vehicleProps:value.na');
488
- }
489
- },
490
- usageType: {
491
- icon: 'new',
492
- get value() {
493
- if (condition === 'selector_condition_new') return t('vehicleProps:value.newCar');
494
- return isPropDefined(usageType) ? t(`cbd:${usageType}`) : t('cbd:selector_condition_used');
495
- }
496
- },
497
- driveType: {
498
- title: t('vehicleProps:title.driveType'),
499
- get icon() {
500
- const driveType = car.driveSuspension.driveType;
501
- return isPropDefined(driveType) ? car.driveSuspension.driveType : 'selector_driveType_frontWheelDrive';
502
- },
503
- get value() {
504
- const driveType = car.driveSuspension.driveType;
505
- return isPropDefined(driveType) ? t(`cbd:${driveType}`) : t('vehicleProps:value.na');
506
- }
507
- },
508
- accidentDamaged: {
509
- title: t('cbd:mainData_accidentDamaged'),
510
- icon: 'wrench',
511
- get value() {
512
- return damaged ? t('vehicleProps:value.damaged') : t('vehicleProps:value.accidentFree');
513
- }
514
- },
515
- fuel: {
516
- name: 'fuel',
517
- title: 'Kraftstoffe',
518
- get icon() {
519
- if (car.consumption) {
520
- return car.consumption.fuel;
521
- }
522
- },
523
- get value() {
524
- const fuel = car.consumption && car.consumption.fuel;
525
- return isPropDefined(fuel) ? t(`cbd:${fuel}`) : 'N/A';
526
- }
527
- },
528
-
529
- offerAvailability: {
530
- name: 'offerAvailability',
531
- title: t('vehicleProps:title.offerAvailability'),
532
- icon: 'carAvailability',
533
- get value() {
534
- const offerAvailabilityMode = offer.availabilityMode;
535
- const offerAvailabilityTimestamp = offer.availabilityFrom;
536
- const humanViewTime = moment.unix(offerAvailabilityTimestamp).format('DD.MM.YYYY');
537
- let offerAvailability: string;
538
- switch (offerAvailabilityMode) {
539
- case 'selector_availabilityMode_always':
540
- offerAvailability = t(`cbd:${offerAvailabilityMode}`);
541
- break;
542
-
543
- case 'selector_availabilityMode_fromDate':
544
- if (offer.deliveryPeriod != null && offer.deliveryPeriod !== 'selector_unknown') {
545
- offerAvailability = formatDeliveryPeriod(t, offer.deliveryPeriod);
546
- break;
547
- }
548
-
549
- if (moment.utc(offerAvailabilityTimestamp, 'X').isBefore()) {
550
- offerAvailability = t('cbd:selector_availabilityMode_always');
551
- } else if (!!offerAvailabilityTimestamp) {
552
- offerAvailability = t('vehicleProps:value.fromDate', { date: humanViewTime });
553
- } else {
554
- offerAvailability = t('vehicleProps:value.onRequest'); // case when "availabilityFrom" is undefined
555
- }
556
- break;
557
-
558
- default:
559
- if ( // set car onRequest if no mileage and firstRegistration and car is unavialable ACF-5322
560
- !offerAvailabilityMode
561
- && !mileage
562
- && !firstRegistration || firstRegistration === 'N/A'
563
- ) offerAvailability = t('vehicleProps:value.onRequest');
564
- else offerAvailability = null;
565
- }
566
- return isPropDefined(offerAvailability) ? offerAvailability : t('vehicleProps:value.na');
567
- }
568
- }
569
- };
570
- };
571
- /* tslint:enable */
572
- export default getDecoratedLightProps;
1
+ /* tslint:disable */
2
+ import * as React from 'react';
3
+ // import { cbdGearbox, cbdFuel } from './cbdSelectors'
4
+ import { formatMileage } from '../utils/CommonUtils';
5
+ import { formatTimestamp } from '../utils/DateUtils';
6
+ import { DELIVERY_PERIODS_EXTRA } from '../constants/core';
7
+ import moment from 'moment';
8
+ import { IDecoratedProp } from '../types/types';
9
+
10
+ interface IDecoratedProps {
11
+ [key: string]: IDecoratedProp;
12
+ }
13
+
14
+ const isPropDefined = (prop: any) => {
15
+ const type = typeof prop;
16
+ if (type === 'string') {
17
+ return prop.indexOf('other') === -1
18
+ && prop.indexOf('unknown') === -1
19
+ && prop.indexOf('N/A') === -1;
20
+ }
21
+ return !(prop === undefined || prop === null) && type !== 'undefined';
22
+ };
23
+
24
+ const formatDeliveryPeriod = (t: (phrase: string, config?: any) => string, deliveryPeriod: string) => {
25
+ const count: number = +DELIVERY_PERIODS_EXTRA.find((period: any) => period.value === deliveryPeriod).label;
26
+ // months until delivery date unrounded (float)
27
+ const monthsTo: number = moment.utc().diff(moment.utc().subtract(count, 'd'), 'M', true);
28
+ return Math.round(monthsTo) > 1
29
+ ? t('vehicleProps:value.deliveryPeriodMonths', { count: Math.round(monthsTo) })
30
+ : t('vehicleProps:value.deliveryPeriodDays', { count });
31
+ };
32
+
33
+ const getDecoratedLightProps = (
34
+ car: any, // @TODO should have a proper interface
35
+ t: (phrase: string, config?: any) => string,
36
+ language: string = 'en',
37
+ simplifiedLabels: boolean = false // shortened labels for repsonsive layout (see 'power')
38
+ ): IDecoratedProps => {
39
+ const {
40
+ mainData: {
41
+ offer = {},
42
+ mileage,
43
+ firstRegistration,
44
+ location,
45
+ numberOfPreviousOwners = '',
46
+ usageType = '',
47
+ condition = '',
48
+ damaged = ''
49
+ }
50
+ } = car;
51
+ return {
52
+ mileage: {
53
+ name: 'mileage',
54
+ icon: 'speed',
55
+ get value() {
56
+ return Number.isFinite(parseInt(mileage, 10))
57
+ ? t('vehicleProps:value.mileage', { mileage: formatMileage(mileage) })
58
+ : t('vehicleProps:value.na');
59
+ }
60
+ },
61
+ firstRegistration: {
62
+ name: 'firstRegistration',
63
+ icon: 'date',
64
+ get value() {
65
+ return Number.isFinite(firstRegistration)
66
+ ? formatTimestamp({ timestamp: firstRegistration, format: 'MM/YYYY' })
67
+ : t('vehicleProps:value.na');
68
+ }
69
+ },
70
+ power: {
71
+ name: 'power',
72
+ title: t('vehicleProps:title.power'),
73
+ icon: 'ps',
74
+ get value() {
75
+ const { powerKW, powerPS } = car.engineData;
76
+
77
+ if (Number.isFinite(powerKW) && Number.isFinite(powerPS)) {
78
+ return simplifiedLabels
79
+ ? t('vehicleProps:value.powerPS', { powerPS })
80
+ : t('vehicleProps:value.power', { powerKW, powerPS });
81
+ }
82
+
83
+ return t('vehicleProps:value.na');
84
+ }
85
+ },
86
+
87
+ location: {
88
+ name: 'location',
89
+ icon: 'location',
90
+ get value() {
91
+ const { city, street, zipCode } = location;
92
+ const formattedZipCode = !!zipCode && zipCode.toString().length < 5 ? `0${zipCode}` : zipCode;
93
+ return isPropDefined(city)
94
+ ? isPropDefined(street) ? `${street}, ${city} ${formattedZipCode}` : `${city} ${!!formattedZipCode ? formattedZipCode : ''}`
95
+ : t('vehicleProps:value.na');
96
+ }
97
+ },
98
+ consumptionCombined: {
99
+ name: 'consumptionCombined',
100
+ icon: 'fuelConsumption',
101
+ title: t('vehicleProps:title.сonsumptionCombined'),
102
+ get value() {
103
+ const consumptionCombined = car.consumption.consumptionCombined;
104
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
105
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
106
+ const wltpCombined = car.consumption.wltpCombined;
107
+ if (wltpCombined) {
108
+ return Number.isFinite(wltpCombined)
109
+ ? t('vehicleProps:value.wltpCombined', { consumption: wltpCombined.toLocaleString(language), unit: translatedUnit })
110
+ : t('vehicleProps:value.na');
111
+ }
112
+ return Number.isFinite(consumptionCombined)
113
+ ? t('vehicleProps:value.consumption', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
114
+ : t('vehicleProps:value.na');
115
+ }
116
+ },
117
+ consumptionCombinedAlternateView: {
118
+ name: 'consumptionCombined',
119
+ icon: 'fuelConsumption',
120
+ get value() {
121
+ const consumptionCombined = car.consumption.consumptionCombined;
122
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
123
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
124
+ const wltpConsumptionCombined = car.consumption.wltpCombined;
125
+ const wltpCo2 = car.environmentEmissions.wltpCo2;
126
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
127
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
128
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
129
+ : null;
130
+
131
+ const co2 = car.environmentEmissions.co2;
132
+
133
+ const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
134
+ ? t('vehicleProps:value.wltpCombined', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
135
+ : null;
136
+
137
+ const wltpCo2PluginValue = Number.isFinite(wltpCo2)
138
+ ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language), unit: translatedUnit })
139
+ : null;
140
+
141
+ const wltpCo2Value = Number.isFinite(wltpCo2)
142
+ ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
143
+ : null;
144
+
145
+ const consumptionValue = Number.isFinite(consumptionCombined)
146
+ ? t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
147
+ : t('vehicleProps:value.na');
148
+
149
+ const co2Value = Number.isFinite(co2)
150
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
151
+ : t('vehicleProps:value.na');
152
+
153
+ // ADV-88: "is a hybrid car" is now determined by fuel type (hybrid electric + diesel/petrol),
154
+ // not engineData.hybridPlugin.
155
+ const hybridPlugin = car.consumption.fuel === 'selector_fuel_hybridElectricalDiesel'
156
+ || car.consumption.fuel === 'selector_fuel_hybridElectricalPetrol';
157
+ const wltpWeightedPowerCombined = car.consumption.wltpWeightedPowerCombined;
158
+ const wltpWeightedCombined = car.consumption.wltpWeightedCombined;
159
+
160
+ const wltpWeightedPowerCombinedContent = wltpWeightedPowerCombined ? t('vehicleProps:value.wltpWeightedPowerCombined', { consumption: wltpWeightedPowerCombined.toLocaleString(language), unit: translatedUnit }) : null;
161
+ const wltpWeightedCombinedContent = wltpWeightedCombined ? t('vehicleProps:value.wltpWeightedCombined', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit }) : null;
162
+
163
+ // ADV-88: the weighted+discharged (entladen) consumption treatment is shown for ANY plug-in
164
+ // hybrid (new or used) — gated on hybridPlugin only, no condition check.
165
+ if (hybridPlugin) {
166
+ if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent) {
167
+ const dischargedCombined = Number.isFinite(wltpConsumptionCombined) ? wltpConsumptionCombined : 19.9;
168
+ const dischargedClass = car.environmentEmissions.wltpDischargedEnergyEfficiencyClass || 'selector_energyEfficiencyClass_g';
169
+ const weightedCombinedLabeled = t('vehicleProps:value.wltpWeightedCombinedLabel', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit });
170
+ const dischargedCombinedLabeled = t('vehicleProps:value.wltpDischargedCombinedLabel', { consumption: dischargedCombined.toLocaleString(language), unit: translatedUnit });
171
+ const co2WeightedContent = Number.isFinite(wltpCo2)
172
+ ? t('vehicleProps:value.wltpCo2WtdCombinedShort', { co2: wltpCo2.toLocaleString(language) })
173
+ : null;
174
+ const co2ClassWeighted = isPropDefined(wltpEnergyEfficiencyClass)
175
+ ? t('vehicleProps:value.co2ClassWeighted', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
176
+ : null;
177
+ const co2ClassDischarged = t('vehicleProps:value.co2ClassDischarged', { class: t(`cbd:${dischargedClass}`) });
178
+ return <React.Fragment>
179
+ {`${wltpWeightedPowerCombinedContent} + `}
180
+ {`${weightedCombinedLabeled}, `}
181
+ {`${dischargedCombinedLabeled}`}
182
+ {co2WeightedContent && <>, {co2WeightedContent}</>}
183
+ {co2ClassWeighted && <>, {co2ClassWeighted}</>}
184
+ {<>, {co2ClassDischarged}</>}
185
+ </React.Fragment>
186
+ }
187
+
188
+ if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent && wltpCo2PluginValue) {
189
+ return <React.Fragment>
190
+ {`${wltpWeightedPowerCombinedContent}, `}
191
+ {`${wltpWeightedCombinedContent}, `}
192
+ {wltpCo2PluginValue}
193
+ {co2ClassValue && <>, {co2ClassValue}</>}
194
+ </React.Fragment>
195
+ }
196
+
197
+ // ADV-88: only render the electric (kWh) line when the car actually has a combined
198
+ // power consumption — otherwise we printed "nullkWh/100km" for plug-ins lacking it.
199
+ const realPowerCombined = car.consumption.consumptionPowerCombined;
200
+ const powerCombinedLine = Number.isFinite(realPowerCombined)
201
+ ? t('vehicleProps:value.consumptionPowerCombined', { consumption: realPowerCombined.toLocaleString(language), unit: translatedUnit })
202
+ : null;
203
+ return Number.isFinite(consumptionCombined) || Number.isFinite(realPowerCombined)
204
+ ? <React.Fragment>
205
+ {powerCombinedLine && <>{powerCombinedLine} <br /></>}{consumptionValue} <br /> {co2Value}
206
+ {co2ClassValue && <>, {co2ClassValue}</>}
207
+ </React.Fragment>
208
+ : t('vehicleProps:value.na');
209
+
210
+ }
211
+
212
+ if (wltpConsumptionValue && wltpCo2Value) {
213
+ return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
214
+ }
215
+
216
+ return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
217
+ }
218
+ },
219
+ consumptionPowerCombinedAlternateView: {
220
+ name: 'consumptionCombined',
221
+ icon: 'fuelConsumption',
222
+ title: t('vehicleProps:title.consumptionPowerCombined'),
223
+ get value() {
224
+ const consumptionPowerCombined = car.consumption.consumptionCombined;
225
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
226
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
227
+ const co2 = car.environmentEmissions.co2;
228
+ const wltpConsumptionPowerCombined = car.consumption.wltpPowerCombined;
229
+ const wltpCo2 = car.environmentEmissions.wltpCo2;
230
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
231
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
232
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
233
+ : null;
234
+
235
+ const wltpConsumptionValue = Number.isFinite(wltpConsumptionPowerCombined)
236
+ ? t('vehicleProps:value.wltpPowerCombined', { consumption: wltpConsumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
237
+ : null;
238
+
239
+ const wltpCo2Value = Number.isFinite(wltpCo2)
240
+ ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
241
+ : null;
242
+
243
+ const consumptionValue = Number.isFinite(consumptionPowerCombined)
244
+ ? t('vehicleProps:value.consumptionPower', { consumption: consumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
245
+ : t('vehicleProps:value.na');
246
+
247
+ const co2Value = Number.isFinite(co2)
248
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
249
+ : t('vehicleProps:value.na');
250
+
251
+ if (wltpConsumptionValue && wltpCo2Value) {
252
+ return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
253
+ }
254
+
255
+ return <>{consumptionValue} <br /> {co2Value} {co2ClassValue && <>, {co2ClassValue}</>}</>;
256
+ }
257
+ },
258
+
259
+ consumptionCombinedHybridAlternateView: {
260
+ name: 'consumptionCombined',
261
+ icon: 'fuelConsumption',
262
+ get value() {
263
+ const consumptionCombined = +car.consumption.consumptionCombined;
264
+ const consumptionPowerCombined = +car.consumption.consumptionPowerCombined;
265
+ const wltpConsumptionPowerCombined = car.consumption.wltpPowerCombined;
266
+
267
+ const wltpConsumptionCombined = car.consumption.wltpCombined;
268
+
269
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
270
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
271
+ const wltpWeightedPowerCombined = car.consumption.wltpWeightedPowerCombined;
272
+ const wltpWeightedCombined = car.consumption.wltpWeightedCombined;
273
+
274
+ const consumptionPowerCombinedContent = t('vehicleProps:value.consumptionPowerCombined', { consumption: consumptionPowerCombined.toLocaleString(language), unit: translatedUnit });
275
+ const consumptionCombinedContent = t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit });
276
+ const wltpWeightedPowerCombinedContent = Number.isFinite(wltpWeightedPowerCombined)
277
+ ? t('vehicleProps:value.wltpWeightedPowerCombined', { consumption: wltpWeightedPowerCombined.toLocaleString(language), unit: translatedUnit })
278
+ : null;
279
+ const wltpWeightedCombinedContent = Number.isFinite(wltpWeightedCombined)
280
+ ? t('vehicleProps:value.wltpWeightedCombined', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit })
281
+ : null;
282
+ const wltpConsumptionPowerCombinedContent = wltpConsumptionPowerCombined
283
+ ? t('vehicleProps:value.wltpPowerCombined', { consumption: wltpConsumptionPowerCombined.toLocaleString(language), unit: translatedUnit })
284
+ : null;
285
+
286
+ const wltpConsumptionCombinedContent = wltpConsumptionCombined ?
287
+ t('vehicleProps:value.wltpCombined', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
288
+ : null;
289
+
290
+ const co2 = car.environmentEmissions.co2;
291
+ const wltpCo2 = car.environmentEmissions.wltpCo2;
292
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
293
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
294
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
295
+ : null;
296
+
297
+ const co2Value = Number.isFinite(co2)
298
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
299
+ : t('vehicleProps:value.na');
300
+
301
+ const wltpCo2Value = Number.isFinite(co2)
302
+ ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language) })
303
+ : null;
304
+
305
+ const wltpCo2PluginValue = Number.isFinite(wltpCo2)
306
+ ? t('vehicleProps:value.wltpCo2WtdCombined', { co2: wltpCo2.toLocaleString(language), unit: translatedUnit })
307
+ : null;
308
+
309
+ // ADV-88: "is a hybrid car" is now determined by fuel type (hybrid electric + diesel/petrol),
310
+ // not engineData.hybridPlugin.
311
+ const hybridPlugin = car.consumption.fuel === 'selector_fuel_hybridElectricalDiesel'
312
+ || car.consumption.fuel === 'selector_fuel_hybridElectricalPetrol';
313
+
314
+ // ADV-88: the weighted+discharged (entladen) consumption treatment is shown for ANY plug-in
315
+ // hybrid (new or used) — gated on hybridPlugin only, no condition check.
316
+ if (hybridPlugin) {
317
+ if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent) {
318
+ const dischargedCombined = Number.isFinite(wltpConsumptionCombined) ? wltpConsumptionCombined : 19.9;
319
+ const dischargedClass = car.environmentEmissions.wltpDischargedEnergyEfficiencyClass || 'selector_energyEfficiencyClass_g';
320
+ const weightedCombinedLabeled = t('vehicleProps:value.wltpWeightedCombinedLabel', { consumption: wltpWeightedCombined.toLocaleString(language), unit: translatedUnit });
321
+ const dischargedCombinedLabeled = t('vehicleProps:value.wltpDischargedCombinedLabel', { consumption: dischargedCombined.toLocaleString(language), unit: translatedUnit });
322
+ const co2WeightedContent = Number.isFinite(wltpCo2)
323
+ ? t('vehicleProps:value.wltpCo2WtdCombinedShort', { co2: wltpCo2.toLocaleString(language) })
324
+ : null;
325
+ const co2ClassWeighted = isPropDefined(wltpEnergyEfficiencyClass)
326
+ ? t('vehicleProps:value.co2ClassWeighted', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
327
+ : null;
328
+ const co2ClassDischarged = t('vehicleProps:value.co2ClassDischarged', { class: t(`cbd:${dischargedClass}`) });
329
+ return <React.Fragment>
330
+ {`${wltpWeightedPowerCombinedContent} + `}
331
+ {`${weightedCombinedLabeled}, `}
332
+ {`${dischargedCombinedLabeled}`}
333
+ {co2WeightedContent && <>, {co2WeightedContent}</>}
334
+ {co2ClassWeighted && <>, {co2ClassWeighted}</>}
335
+ {<>, {co2ClassDischarged}</>}
336
+ </React.Fragment>
337
+ }
338
+
339
+ if (wltpWeightedPowerCombinedContent && wltpWeightedCombinedContent && wltpCo2PluginValue) {
340
+ return <React.Fragment>
341
+ {`${wltpWeightedPowerCombinedContent}, `}
342
+ {`${wltpWeightedCombinedContent}, `}
343
+ {wltpCo2PluginValue}
344
+ {co2ClassValue && <>, {co2ClassValue}</>}
345
+ </React.Fragment>
346
+ }
347
+ }
348
+
349
+ if (wltpConsumptionPowerCombinedContent && wltpConsumptionCombinedContent && wltpCo2Value) {
350
+ return <React.Fragment>
351
+ {`${wltpConsumptionPowerCombinedContent}, `}
352
+ {`${wltpWeightedCombinedContent}, `}
353
+ {wltpCo2PluginValue}
354
+ {co2ClassValue && <>, {co2ClassValue}</>}
355
+ </React.Fragment>
356
+ }
357
+
358
+ return Number.isFinite(consumptionCombined) || Number.isFinite(consumptionPowerCombined)
359
+ ? <React.Fragment>
360
+ {consumptionPowerCombined ? consumptionPowerCombinedContent : t('vehicleProps:value.na')} <br />{consumptionCombinedContent} <br /> {co2Value}
361
+ {co2ClassValue && <>, {co2ClassValue}</>}
362
+ </React.Fragment>
363
+ : t('vehicleProps:value.na');
364
+ }
365
+ },
366
+
367
+ consumptionHydrogenCombinedAlternateView: {
368
+ name: 'consumptionCombined',
369
+ icon: 'fuelConsumption',
370
+ title: t('vehicleProps:title.consumptionHydrogenCombined'),
371
+ get value() {
372
+ const consumptionHydrogenCombined = car.consumption.consumptionCombined;
373
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
374
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
375
+ const co2 = car.environmentEmissions.co2;
376
+ const wltpConsumptionCombined = car.consumption.wltpCombined;
377
+ const wltpCo2 = car.environmentEmissions.wltpCo2;
378
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
379
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
380
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
381
+ : null;
382
+
383
+ const consumptionValue = Number.isFinite(consumptionHydrogenCombined)
384
+ ? t('vehicleProps:value.consumptionGas', { consumption: consumptionHydrogenCombined.toLocaleString(language), unit: translatedUnit })
385
+ : t('vehicleProps:value.na');
386
+
387
+ const co2Value = Number.isFinite(co2)
388
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
389
+ : t('vehicleProps:value.na');
390
+
391
+ const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
392
+ ? t('vehicleProps:value.wltpCombinedGas', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
393
+ : null;
394
+ const wltpCo2Value = Number.isFinite(wltpCo2)
395
+ ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
396
+ : null;
397
+
398
+ if (wltpConsumptionValue && wltpCo2Value) {
399
+ return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
400
+ }
401
+
402
+ return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
403
+ }
404
+ },
405
+ consumptionGasCombinedAlternateView: {
406
+ name: 'consumptionCombined',
407
+ icon: 'fuelConsumption',
408
+ title: t('vehicleProps:title.consumptionGasCombined'),
409
+ get value() {
410
+ const consumptionGasCombined = car.consumption.consumptionCombined;
411
+ const consumptionUnit = car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
412
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
413
+ const co2 = car.environmentEmissions.co2;
414
+ const wltpConsumptionCombined = car.consumption.wltpCombined;
415
+ const wltpCo2 = car.environmentEmissions.wltpCo2;
416
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
417
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
418
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
419
+ : null;
420
+
421
+ const consumptionValue = Number.isFinite(consumptionGasCombined)
422
+ ? t('vehicleProps:value.consumptionGas', { consumption: consumptionGasCombined.toLocaleString(language), unit: translatedUnit })
423
+ : t('vehicleProps:value.na');
424
+
425
+ const co2Value = Number.isFinite(co2)
426
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
427
+ : t('vehicleProps:value.na');
428
+
429
+ const wltpConsumptionValue = Number.isFinite(wltpConsumptionCombined)
430
+ ? t('vehicleProps:value.consumptionGas', { consumption: wltpConsumptionCombined.toLocaleString(language), unit: translatedUnit })
431
+ : null;
432
+
433
+ const wltpCo2Value = Number.isFinite(wltpCo2)
434
+ ? t('vehicleProps:value.wltpCo2Combined', { co2: wltpCo2.toLocaleString(language) })
435
+ : null;
436
+
437
+ if (wltpConsumptionValue && wltpCo2Value) {
438
+ return <>{wltpConsumptionValue}, {wltpCo2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
439
+ }
440
+
441
+ return <>{consumptionValue} <br /> {co2Value}{co2ClassValue && <>, {co2ClassValue}</>}</>;
442
+ }
443
+ },
444
+ consumptionCombinedDealer: {
445
+ name: 'consumptionCombined',
446
+ icon: 'fuelConsumption',
447
+ get value() {
448
+ const consumptionCombined = car.consumption && car.consumption.consumptionCombined;
449
+ const consumptionUnit = car.consumption && car.consumption.consumptionUnit || 'consumption_consumptionUnit_l';
450
+ const translatedUnit = t(`cbd:${consumptionUnit}`);
451
+
452
+ const co2 = car.environmentEmissions.co2;
453
+ const wltpEnergyEfficiencyClass = car.environmentEmissions.wltpEnergyEfficiencyClass;
454
+
455
+ const consumptionValue = Number.isFinite(consumptionCombined)
456
+ ? t('vehicleProps:value.consumptionCombined', { consumption: consumptionCombined.toLocaleString(language), unit: translatedUnit })
457
+ : t('vehicleProps:value.na');
458
+
459
+ const co2Value = Number.isFinite(co2)
460
+ ? t('vehicleProps:value.co2Combined', { co2: co2.toLocaleString(language) })
461
+ : t('vehicleProps:value.na');
462
+
463
+ const co2ClassValue = isPropDefined(wltpEnergyEfficiencyClass)
464
+ ? t('vehicleProps:value.co2Class', { class: t(`cbd:${wltpEnergyEfficiencyClass}`) })
465
+ : null;
466
+
467
+ return <>{consumptionValue} | {co2Value}{co2ClassValue ? <> | {co2ClassValue}</> : null}</>;
468
+ }
469
+ },
470
+ gearbox: {
471
+ name: 'gearbox',
472
+ get icon() {
473
+ const gearbox = car.driveSuspension.gearbox;
474
+ return isPropDefined(gearbox) ? car.driveSuspension.gearbox : 'selector_gearbox_manualShift';
475
+ },
476
+ get value() {
477
+ const gearbox = car.driveSuspension.gearbox;
478
+ return isPropDefined(gearbox) ? t(`cbd:${gearbox}`) : 'N/A';
479
+ }
480
+ },
481
+ numberOfPreviousOwners: {
482
+ title: t('vehicleProps:title.numberOfPreviousOwners'),
483
+ icon: 'owner',
484
+ get value() {
485
+ return Number.isFinite(numberOfPreviousOwners)
486
+ ? t('vehicleProps:value.vehicleOwners', { count: numberOfPreviousOwners })
487
+ : t('vehicleProps:value.na');
488
+ }
489
+ },
490
+ usageType: {
491
+ icon: 'new',
492
+ get value() {
493
+ if (condition === 'selector_condition_new') return t('vehicleProps:value.newCar');
494
+ return isPropDefined(usageType) ? t(`cbd:${usageType}`) : t('cbd:selector_condition_used');
495
+ }
496
+ },
497
+ driveType: {
498
+ title: t('vehicleProps:title.driveType'),
499
+ get icon() {
500
+ const driveType = car.driveSuspension.driveType;
501
+ return isPropDefined(driveType) ? car.driveSuspension.driveType : 'selector_driveType_frontWheelDrive';
502
+ },
503
+ get value() {
504
+ const driveType = car.driveSuspension.driveType;
505
+ return isPropDefined(driveType) ? t(`cbd:${driveType}`) : t('vehicleProps:value.na');
506
+ }
507
+ },
508
+ accidentDamaged: {
509
+ title: t('cbd:mainData_accidentDamaged'),
510
+ icon: 'wrench',
511
+ get value() {
512
+ return damaged ? t('vehicleProps:value.damaged') : t('vehicleProps:value.accidentFree');
513
+ }
514
+ },
515
+ fuel: {
516
+ name: 'fuel',
517
+ title: 'Kraftstoffe',
518
+ get icon() {
519
+ if (car.consumption) {
520
+ return car.consumption.fuel;
521
+ }
522
+ },
523
+ get value() {
524
+ const fuel = car.consumption && car.consumption.fuel;
525
+ return isPropDefined(fuel) ? t(`cbd:${fuel}`) : 'N/A';
526
+ }
527
+ },
528
+
529
+ offerAvailability: {
530
+ name: 'offerAvailability',
531
+ title: t('vehicleProps:title.offerAvailability'),
532
+ icon: 'carAvailability',
533
+ get value() {
534
+ const offerAvailabilityMode = offer.availabilityMode;
535
+ const offerAvailabilityTimestamp = offer.availabilityFrom;
536
+ const humanViewTime = moment.unix(offerAvailabilityTimestamp).format('DD.MM.YYYY');
537
+ let offerAvailability: string;
538
+ switch (offerAvailabilityMode) {
539
+ case 'selector_availabilityMode_always':
540
+ offerAvailability = t(`cbd:${offerAvailabilityMode}`);
541
+ break;
542
+
543
+ case 'selector_availabilityMode_fromDate':
544
+ if (offer.deliveryPeriod != null && offer.deliveryPeriod !== 'selector_unknown') {
545
+ offerAvailability = formatDeliveryPeriod(t, offer.deliveryPeriod);
546
+ break;
547
+ }
548
+
549
+ if (moment.utc(offerAvailabilityTimestamp, 'X').isBefore()) {
550
+ offerAvailability = t('cbd:selector_availabilityMode_always');
551
+ } else if (!!offerAvailabilityTimestamp) {
552
+ offerAvailability = t('vehicleProps:value.fromDate', { date: humanViewTime });
553
+ } else {
554
+ offerAvailability = t('vehicleProps:value.onRequest'); // case when "availabilityFrom" is undefined
555
+ }
556
+ break;
557
+
558
+ default:
559
+ if ( // set car onRequest if no mileage and firstRegistration and car is unavialable ACF-5322
560
+ !offerAvailabilityMode
561
+ && !mileage
562
+ && !firstRegistration || firstRegistration === 'N/A'
563
+ ) offerAvailability = t('vehicleProps:value.onRequest');
564
+ else offerAvailability = null;
565
+ }
566
+ return isPropDefined(offerAvailability) ? offerAvailability : t('vehicleProps:value.na');
567
+ }
568
+ }
569
+ };
570
+ };
571
+ /* tslint:enable */
572
+ export default getDecoratedLightProps;