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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +122 -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,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 34.909" width="120" height="34.909">
2
- <defs><linearGradient id="autodeG" x1="0" y1="0" x2="1" y2="0">
3
- <stop offset="0%" stop-color="#005CCB"></stop><stop offset="42%" stop-color="#0C69D0"></stop><stop offset="73%" stop-color="#3090E1"></stop><stop offset="100%" stop-color="#68CEFC"></stop>
4
- </linearGradient></defs>
5
- <g transform="translate(-0.004 0.283)" fill="url(#autodeG)"><path d="M 119.204 20.517 C 118.454 17.39 116.804 14.954 113.865 13.485 C 111.636 12.428 109.238 11.773 106.782 11.55 C 103.291 11.15 99.8 10.845 96.309 10.496 C 92.847 10.154 89.16 9.485 88.658 9.39 C 88.629 9.39 86.418 8.954 85.691 8.663 C 84.578 8.205 81.494 4.939 70.92 1.681 C 62.52 -0.915 46.382 0.023 40.76 1.012 C 35.654 1.914 25.429 4.736 21.174 6.357 C 17.473 7.776 7.531 11.106 3.793 13.805 C 1.662 15.317 -0.36 16.939 0.054 22.117 C 0.054 22.117 0.382 18.146 3.364 16.256 C 7.654 13.536 14.367 12.299 16.774 11.557 C 21.305 10.176 33.698 6.27 41.313 5.266 C 47.858 4.416 54.004 3.717 61.313 4.416 C 69.458 5.208 74.28 7.412 74.513 7.485 C 74.753 7.557 84.404 12.11 85.494 12.401 C 86.578 12.75 88.149 12.801 89.276 12.932 C 92.258 13.259 95.298 13.426 98.294 13.623 C 101.102 13.819 103.909 14.023 106.702 14.328 C 109.262 14.612 111.756 15.179 114.134 16.205 C 116.244 17.136 118.062 18.401 119.044 20.583 C 119.073 20.634 119.225 20.954 119.284 20.997 C 119.291 20.925 119.211 20.561 119.196 20.51 L 119.204 20.517 Z" fill-rule="nonzero"></path></g>
6
- <g transform="translate(2.723 14.086)" fill="#005CCB"><path d="M 19.211 17.303 C 18.978 18.488 18.215 20.066 16.302 19.892 C 15.153 19.775 14.731 18.626 14.804 17.855 C 14.804 17.79 14.833 17.623 14.833 17.623 C 12.869 19.47 10.782 20.386 8.28 20.459 C 3.422 20.583 0.113 17.768 0.004 13.623 C -0.142 8.212 3.786 3.834 10.382 3.666 C 12.84 3.594 15.306 4.248 16.949 6.641 C 17.109 5.892 17.778 4.365 19.088 4.335 C 20.244 4.306 21.248 4.932 21.269 5.943 C 21.269 6.045 21.248 6.335 21.197 6.474 L 19.211 17.31 L 19.211 17.303 Z M 16.011 10.983 C 15.96 8.83 13.924 7.128 11.269 7.201 C 7.655 7.288 4.724 10.066 4.789 12.946 C 4.84 15.165 6.637 16.961 9.371 16.888 C 12.84 16.808 16.098 14.248 16.011 10.983 Z M 37.466 19.252 C 35.408 20.277 33.233 20.474 31.218 20.474 C 26.855 20.474 23.218 18.234 23.218 14.903 C 23.218 14.372 23.32 13.099 23.429 12.539 L 24.469 6.415 C 24.606 5.816 24.939 5.28 25.417 4.892 C 25.894 4.504 26.487 4.288 27.102 4.277 C 28.295 4.277 28.978 5.179 28.978 5.95 C 28.978 6.154 28.935 6.401 28.906 6.554 L 27.64 12.881 C 27.568 13.245 27.517 13.986 27.64 14.372 C 28.171 16.045 29.713 16.823 31.938 16.823 C 34.448 16.823 36.957 14.975 37.378 13.485 C 37.943 11.112 38.436 8.723 38.855 6.321 C 38.992 5.729 39.337 5.205 39.826 4.845 C 40.316 4.485 40.918 4.312 41.524 4.357 C 42.804 4.474 43.393 5.681 43.211 6.997 C 43.109 7.761 42.702 10.11 42.68 10.27 C 42.135 13.419 41.066 17.455 37.466 19.252 Z M 47.066 4.263 L 47.502 2.045 C 47.728 0.932 48.738 0.03 50.178 0.001 C 51.233 -0.028 52.055 0.677 52.084 1.572 C 52.084 1.717 52.055 1.943 52.004 2.263 L 51.568 4.459 L 55.328 4.459 C 56.746 4.459 57.233 5.055 57.095 6.125 C 56.928 7.303 55.495 7.761 54.084 7.797 L 50.898 7.725 L 49.691 14.045 C 49.633 14.386 49.48 15.063 49.706 15.666 C 49.902 16.212 50.36 16.612 51.153 16.845 C 51.662 16.997 53.291 17.041 53.291 17.041 C 54.309 17.012 55.058 17.346 55.088 18.205 C 55.117 19.441 54.266 20.488 53.124 20.488 C 53.124 20.488 50.891 20.655 48.898 20.401 C 47.783 20.29 46.755 19.747 46.035 18.888 C 45.314 18.029 44.959 16.922 45.044 15.805 C 45.16 14.154 45.575 12.154 45.626 11.775 L 46.368 8.015 L 47.066 4.263 Z M 65.844 20.532 C 60.542 20.532 57.189 17.405 57.189 13.419 C 57.189 7.79 62.048 3.637 68.68 3.637 C 73.713 3.637 77.182 6.765 77.182 10.823 C 77.182 16.205 72.629 20.525 65.837 20.525 L 65.844 20.532 Z M 72.935 11.252 C 72.935 9.165 70.797 7.434 68.222 7.434 C 64.455 7.434 61.808 10.001 61.808 12.961 C 61.808 15.07 63.495 16.706 66.135 16.765 C 70.062 16.837 72.935 14.306 72.935 11.252 Z M 97.138 18.474 C 96.949 19.252 96.498 19.79 95.4 19.79 C 94.542 19.79 94.084 19.135 94.084 18.626 L 94.106 18.408 C 93.306 18.99 91.953 20.335 89.655 20.335 C 85.597 20.335 83.509 17.986 83.509 15.223 C 83.509 11.026 87.531 8.365 91.618 8.365 C 93.582 8.365 95.233 9.739 95.597 10.401 L 96.804 5.128 C 97 4.35 97.24 3.819 98.404 3.819 C 99.328 3.819 99.837 4.372 99.837 4.975 C 99.837 5.135 99.815 5.288 99.786 5.39 L 97.138 18.474 Z M 91.393 10.975 C 88.92 11.135 86.957 12.823 86.957 14.961 C 86.951 15.354 87.026 15.744 87.177 16.106 C 87.329 16.469 87.553 16.797 87.835 17.069 C 88.118 17.342 88.454 17.554 88.822 17.691 C 89.19 17.829 89.582 17.89 89.975 17.87 C 92.157 17.87 94.746 16.335 94.993 14.641 C 95.488 11.499 92.535 10.888 91.393 10.975 Z M 103.582 15.419 C 103.611 16.67 105.153 17.674 106.724 17.674 C 109.175 17.674 109.146 17.252 110.302 17.252 C 111.08 17.252 111.626 17.688 111.626 18.292 C 111.626 19.026 110.928 19.485 110.244 19.739 C 109.677 19.943 108.324 20.321 106.404 20.321 C 102.593 20.321 100.288 17.739 100.288 15.455 C 100.288 11.266 104.069 8.306 108.455 8.306 C 112.12 8.306 114.251 10.488 114.251 12.888 C 114.251 14.306 113.044 15.405 110.804 15.419 L 103.582 15.419 Z M 104.04 13.375 L 111.189 13.375 C 111.189 12.168 110.149 10.874 108.135 10.874 C 106.317 10.874 104.448 12.197 104.04 13.375 Z M 79.546 16.83 C 80.549 16.83 81.226 17.455 81.226 18.263 C 81.226 19.361 80.018 20.321 78.768 20.321 C 77.764 20.321 77.08 19.725 77.08 18.917 C 77.08 17.863 78.208 16.83 79.546 16.83 Z" fill-rule="nonzero"></path></g>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 34.909" width="120" height="34.909">
2
+ <defs><linearGradient id="autodeG" x1="0" y1="0" x2="1" y2="0">
3
+ <stop offset="0%" stop-color="#005CCB"></stop><stop offset="42%" stop-color="#0C69D0"></stop><stop offset="73%" stop-color="#3090E1"></stop><stop offset="100%" stop-color="#68CEFC"></stop>
4
+ </linearGradient></defs>
5
+ <g transform="translate(-0.004 0.283)" fill="url(#autodeG)"><path d="M 119.204 20.517 C 118.454 17.39 116.804 14.954 113.865 13.485 C 111.636 12.428 109.238 11.773 106.782 11.55 C 103.291 11.15 99.8 10.845 96.309 10.496 C 92.847 10.154 89.16 9.485 88.658 9.39 C 88.629 9.39 86.418 8.954 85.691 8.663 C 84.578 8.205 81.494 4.939 70.92 1.681 C 62.52 -0.915 46.382 0.023 40.76 1.012 C 35.654 1.914 25.429 4.736 21.174 6.357 C 17.473 7.776 7.531 11.106 3.793 13.805 C 1.662 15.317 -0.36 16.939 0.054 22.117 C 0.054 22.117 0.382 18.146 3.364 16.256 C 7.654 13.536 14.367 12.299 16.774 11.557 C 21.305 10.176 33.698 6.27 41.313 5.266 C 47.858 4.416 54.004 3.717 61.313 4.416 C 69.458 5.208 74.28 7.412 74.513 7.485 C 74.753 7.557 84.404 12.11 85.494 12.401 C 86.578 12.75 88.149 12.801 89.276 12.932 C 92.258 13.259 95.298 13.426 98.294 13.623 C 101.102 13.819 103.909 14.023 106.702 14.328 C 109.262 14.612 111.756 15.179 114.134 16.205 C 116.244 17.136 118.062 18.401 119.044 20.583 C 119.073 20.634 119.225 20.954 119.284 20.997 C 119.291 20.925 119.211 20.561 119.196 20.51 L 119.204 20.517 Z" fill-rule="nonzero"></path></g>
6
+ <g transform="translate(2.723 14.086)" fill="#005CCB"><path d="M 19.211 17.303 C 18.978 18.488 18.215 20.066 16.302 19.892 C 15.153 19.775 14.731 18.626 14.804 17.855 C 14.804 17.79 14.833 17.623 14.833 17.623 C 12.869 19.47 10.782 20.386 8.28 20.459 C 3.422 20.583 0.113 17.768 0.004 13.623 C -0.142 8.212 3.786 3.834 10.382 3.666 C 12.84 3.594 15.306 4.248 16.949 6.641 C 17.109 5.892 17.778 4.365 19.088 4.335 C 20.244 4.306 21.248 4.932 21.269 5.943 C 21.269 6.045 21.248 6.335 21.197 6.474 L 19.211 17.31 L 19.211 17.303 Z M 16.011 10.983 C 15.96 8.83 13.924 7.128 11.269 7.201 C 7.655 7.288 4.724 10.066 4.789 12.946 C 4.84 15.165 6.637 16.961 9.371 16.888 C 12.84 16.808 16.098 14.248 16.011 10.983 Z M 37.466 19.252 C 35.408 20.277 33.233 20.474 31.218 20.474 C 26.855 20.474 23.218 18.234 23.218 14.903 C 23.218 14.372 23.32 13.099 23.429 12.539 L 24.469 6.415 C 24.606 5.816 24.939 5.28 25.417 4.892 C 25.894 4.504 26.487 4.288 27.102 4.277 C 28.295 4.277 28.978 5.179 28.978 5.95 C 28.978 6.154 28.935 6.401 28.906 6.554 L 27.64 12.881 C 27.568 13.245 27.517 13.986 27.64 14.372 C 28.171 16.045 29.713 16.823 31.938 16.823 C 34.448 16.823 36.957 14.975 37.378 13.485 C 37.943 11.112 38.436 8.723 38.855 6.321 C 38.992 5.729 39.337 5.205 39.826 4.845 C 40.316 4.485 40.918 4.312 41.524 4.357 C 42.804 4.474 43.393 5.681 43.211 6.997 C 43.109 7.761 42.702 10.11 42.68 10.27 C 42.135 13.419 41.066 17.455 37.466 19.252 Z M 47.066 4.263 L 47.502 2.045 C 47.728 0.932 48.738 0.03 50.178 0.001 C 51.233 -0.028 52.055 0.677 52.084 1.572 C 52.084 1.717 52.055 1.943 52.004 2.263 L 51.568 4.459 L 55.328 4.459 C 56.746 4.459 57.233 5.055 57.095 6.125 C 56.928 7.303 55.495 7.761 54.084 7.797 L 50.898 7.725 L 49.691 14.045 C 49.633 14.386 49.48 15.063 49.706 15.666 C 49.902 16.212 50.36 16.612 51.153 16.845 C 51.662 16.997 53.291 17.041 53.291 17.041 C 54.309 17.012 55.058 17.346 55.088 18.205 C 55.117 19.441 54.266 20.488 53.124 20.488 C 53.124 20.488 50.891 20.655 48.898 20.401 C 47.783 20.29 46.755 19.747 46.035 18.888 C 45.314 18.029 44.959 16.922 45.044 15.805 C 45.16 14.154 45.575 12.154 45.626 11.775 L 46.368 8.015 L 47.066 4.263 Z M 65.844 20.532 C 60.542 20.532 57.189 17.405 57.189 13.419 C 57.189 7.79 62.048 3.637 68.68 3.637 C 73.713 3.637 77.182 6.765 77.182 10.823 C 77.182 16.205 72.629 20.525 65.837 20.525 L 65.844 20.532 Z M 72.935 11.252 C 72.935 9.165 70.797 7.434 68.222 7.434 C 64.455 7.434 61.808 10.001 61.808 12.961 C 61.808 15.07 63.495 16.706 66.135 16.765 C 70.062 16.837 72.935 14.306 72.935 11.252 Z M 97.138 18.474 C 96.949 19.252 96.498 19.79 95.4 19.79 C 94.542 19.79 94.084 19.135 94.084 18.626 L 94.106 18.408 C 93.306 18.99 91.953 20.335 89.655 20.335 C 85.597 20.335 83.509 17.986 83.509 15.223 C 83.509 11.026 87.531 8.365 91.618 8.365 C 93.582 8.365 95.233 9.739 95.597 10.401 L 96.804 5.128 C 97 4.35 97.24 3.819 98.404 3.819 C 99.328 3.819 99.837 4.372 99.837 4.975 C 99.837 5.135 99.815 5.288 99.786 5.39 L 97.138 18.474 Z M 91.393 10.975 C 88.92 11.135 86.957 12.823 86.957 14.961 C 86.951 15.354 87.026 15.744 87.177 16.106 C 87.329 16.469 87.553 16.797 87.835 17.069 C 88.118 17.342 88.454 17.554 88.822 17.691 C 89.19 17.829 89.582 17.89 89.975 17.87 C 92.157 17.87 94.746 16.335 94.993 14.641 C 95.488 11.499 92.535 10.888 91.393 10.975 Z M 103.582 15.419 C 103.611 16.67 105.153 17.674 106.724 17.674 C 109.175 17.674 109.146 17.252 110.302 17.252 C 111.08 17.252 111.626 17.688 111.626 18.292 C 111.626 19.026 110.928 19.485 110.244 19.739 C 109.677 19.943 108.324 20.321 106.404 20.321 C 102.593 20.321 100.288 17.739 100.288 15.455 C 100.288 11.266 104.069 8.306 108.455 8.306 C 112.12 8.306 114.251 10.488 114.251 12.888 C 114.251 14.306 113.044 15.405 110.804 15.419 L 103.582 15.419 Z M 104.04 13.375 L 111.189 13.375 C 111.189 12.168 110.149 10.874 108.135 10.874 C 106.317 10.874 104.448 12.197 104.04 13.375 Z M 79.546 16.83 C 80.549 16.83 81.226 17.455 81.226 18.263 C 81.226 19.361 80.018 20.321 78.768 20.321 C 77.764 20.321 77.08 19.725 77.08 18.917 C 77.08 17.863 78.208 16.83 79.546 16.83 Z" fill-rule="nonzero"></path></g>
7
7
  </svg>
package/cards/CarCard.tsx CHANGED
@@ -1,174 +1,174 @@
1
- // Autobahn (auto.de redesign) — vertical grid car card.
2
- //
3
- // Typed React 18 + TS port of `CarCard` from the design kit
4
- // (docs/redesign/design-source/ui_kits/website/CarCard.jsx). Dense, professional
5
- // (AutoScout24 / Carvana style); the whole card is clickable. Used on the home
6
- // page, landing pages and "similar cars" grids.
7
- //
8
- // Pure / presentational: all data comes via the `AutobahnCar` prop, all behaviour
9
- // via injected callbacks. No store / API / `window` access. Renders correctly
10
- // only inside a `<div className="md3">` subtree.
11
- //
12
- // Differs from the design kit on purpose:
13
- // - favorite state is INJECTED (isFavorite + onToggleFavorite) instead of the
14
- // design's internal useState, so the parent owns the merkliste.
15
- // - the needs-data deal signals (DropChip / SaveChip) only appear when real
16
- // `drop` / `savings` data is present.
17
-
18
- import React from 'react';
19
- import { TranslationFunction } from '../types';
20
-
21
- import { CardCarousel, IconButton, StatChip, SaveChip, Button } from '../ui';
22
- import { SpecLine, EcoLine, DropChip, PercentChip, ZeroDownChip, cardSpec, fmtRate } from './cardParts';
23
- import { AutobahnCar } from './types';
24
-
25
- export interface CarCardProps {
26
- /** fully-resolved car view-model. */
27
- car: AutobahnCar;
28
- /** whether this car is on the user's merkliste (drives the heart). */
29
- isFavorite: boolean;
30
- /** toggle the favorite; the heart calls this (click is kept off the card). */
31
- onToggleFavorite: () => void;
32
- /** fired when the card is clicked (opens the detail page). */
33
- onOpen: (car: AutobahnCar) => void;
34
- /** fired on first hover/touch of the media box — the SRP uses it to lazy-load the gallery. */
35
- onMediaEnter?: () => void;
36
- /** i18n translate fn (drilled from the page). */
37
- t: TranslationFunction;
38
- /**
39
- * Optional admin-only action (e.g. dealer super admins' "Zum Schieberegler hinzufügen").
40
- * Rendered as a quiet button at the card foot; the page decides visibility (JWT claim).
41
- */
42
- adminAction?: { label: string; onClick: () => void };
43
- }
44
-
45
- const CarCard: React.FunctionComponent<CarCardProps> = ({ car, isFavorite, onToggleFavorite, onOpen, onMediaEnter, t, adminAction }) => {
46
- const showSave = car.savings != null && car.savings > 600;
47
- return (
48
- <article
49
- className="mcard mcard--interactive cc-card"
50
- onClick={() => onOpen(car)}
51
- style={{ display: 'flex', flexDirection: 'column' }}
52
- >
53
- <div className="cc-media" style={{ position: 'relative' }} onMouseEnter={onMediaEnter} onTouchStart={onMediaEnter}>
54
- <CardCarousel images={car.gallery} height="100%" fit="contain" />
55
- {/* max two overlays: heart + ONE deal signal — rating moved next to the price */}
56
- <div
57
- style={{ position: 'absolute', top: 6, right: 6, zIndex: 3 }}
58
- onClick={(e) => e.stopPropagation()}
59
- >
60
- <IconButton name="heart" filled active={isFavorite} onClick={onToggleFavorite} label={t('autobahn:card.action.save')} />
61
- </div>
62
- {/* top-left signal stack (heart is top-right): NEU badge + ONE deal signal.
63
- DropChip takes precedence over SaveChip; each only renders when its real data exists. */}
64
- {(car.isNew || car.drop != null || showSave || car.dropPct != null || car.zeroDown) && (
65
- <div
66
- style={{ position: 'absolute', top: 10, left: 10, zIndex: 3, display: 'flex', flexWrap: 'nowrap', gap: 5, alignItems: 'center', maxWidth: 'calc(100% - 52px)' }}
67
- >
68
- {car.isNew && <span className="neu-badge">NEU</span>}
69
- {car.drop != null ? <DropChip t={t} amount={car.drop} /> : showSave && <SaveChip t={t} amount={car.savings!} />}
70
- <ZeroDownChip t={t} show={car.zeroDown} />
71
- <PercentChip pct={car.dropPct} />
72
- </div>
73
- )}
74
- </div>
75
- <div style={{ padding: '12px 14px 14px', display: 'flex', flexDirection: 'column', gap: 9, flex: 1 }}>
76
- <div>
77
- <div className="md-title" style={{ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>
78
- {car.make} {car.model}
79
- </div>
80
- <div className="md-body-sm" style={{ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>
81
- {car.trim}
82
- </div>
83
- </div>
84
- <SpecLine items={cardSpec(car)} oneLine />
85
- <div style={{ flex: 1 }} />
86
- <div style={{ marginTop: 4 }}>
87
- {/* rate block: payment-path eyebrow (cheaper of financing/leasing) ABOVE the big
88
- monthly rate; Preisbewertung chip kept on the right, centered on the block. */}
89
- {(() => {
90
- const useLease = car.lease != null && (car.lease as number) < car.monthly;
91
- const rate = useLease ? (car.lease as number) : car.monthly;
92
- const rateLabel = t(useLease ? 'autobahn:card.price.leasingFrom' : 'autobahn:card.price.financingFrom');
93
- return (
94
- <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8 }}>
95
- <div style={{ minWidth: 0 }}>
96
- <div
97
- className="md-label-sm"
98
- style={{
99
- textTransform: 'uppercase',
100
- letterSpacing: '.5px',
101
- fontWeight: 700,
102
- fontSize: 10.5,
103
- color: 'var(--md-on-surface-variant)',
104
- lineHeight: 1.4,
105
- }}
106
- >
107
- {rateLabel}
108
- </div>
109
- <div style={{ display: 'flex', alignItems: 'baseline', gap: 5 }}>
110
- <span
111
- className="num"
112
- style={{
113
- fontWeight: 700,
114
- fontSize: 26,
115
- color: 'var(--md-primary)',
116
- letterSpacing: '-.6px',
117
- whiteSpace: 'nowrap',
118
- }}
119
- >
120
- {fmtRate(rate)} €
121
- </span>
122
- <span className="md-label-sm">{t('autobahn:card.price.perMonth')}</span>
123
- </div>
124
- </div>
125
- {car.rating && (
126
- <StatChip
127
- tone={car.rating === 'fair' ? 'warn' : 'good'}
128
- icon={car.rating === 'fair' ? 'minus' : 'check'}
129
- >
130
- {t('autobahn:tier.' + car.rating)}
131
- </StatChip>
132
- )}
133
- </div>
134
- );
135
- })()}
136
- <div className="md-label-sm" style={{ marginTop: 2, display: 'flex', flexWrap: 'wrap', gap: '0 6px' }}>
137
- <span style={{ whiteSpace: 'nowrap' }}>
138
- {t('autobahn:card.price.purchasePrice')}{' '}
139
- <b style={{ color: 'var(--md-on-surface)' }}>{car.price.toLocaleString('de-DE')} €</b>
140
- </span>
141
- {showSave && car.listPrice != null && (
142
- <span
143
- style={{
144
- color: 'var(--md-on-surface-variant)',
145
- textDecoration: 'line-through',
146
- whiteSpace: 'nowrap',
147
- }}
148
- >
149
- {car.listPrice.toLocaleString('de-DE')} €
150
- </span>
151
- )}
152
- </div>
153
- </div>
154
- <EcoLine t={t} car={car} style={{ marginTop: 8 }} />
155
- {adminAction && (
156
- <div style={{ marginTop: 8 }}>
157
- <Button
158
- variant="outlined"
159
- block
160
- onClick={(e) => {
161
- e.stopPropagation();
162
- adminAction.onClick();
163
- }}
164
- >
165
- {adminAction.label}
166
- </Button>
167
- </div>
168
- )}
169
- </div>
170
- </article>
171
- );
172
- };
173
-
174
- export default CarCard;
1
+ // Autobahn (auto.de redesign) — vertical grid car card.
2
+ //
3
+ // Typed React 18 + TS port of `CarCard` from the design kit
4
+ // (docs/redesign/design-source/ui_kits/website/CarCard.jsx). Dense, professional
5
+ // (AutoScout24 / Carvana style); the whole card is clickable. Used on the home
6
+ // page, landing pages and "similar cars" grids.
7
+ //
8
+ // Pure / presentational: all data comes via the `AutobahnCar` prop, all behaviour
9
+ // via injected callbacks. No store / API / `window` access. Renders correctly
10
+ // only inside a `<div className="md3">` subtree.
11
+ //
12
+ // Differs from the design kit on purpose:
13
+ // - favorite state is INJECTED (isFavorite + onToggleFavorite) instead of the
14
+ // design's internal useState, so the parent owns the merkliste.
15
+ // - the needs-data deal signals (DropChip / SaveChip) only appear when real
16
+ // `drop` / `savings` data is present.
17
+
18
+ import React from 'react';
19
+ import { TranslationFunction } from '../types';
20
+
21
+ import { CardCarousel, IconButton, StatChip, SaveChip, Button } from '../ui';
22
+ import { SpecLine, EcoLine, DropChip, PercentChip, ZeroDownChip, cardSpec, fmtRate } from './cardParts';
23
+ import { AutobahnCar } from './types';
24
+
25
+ export interface CarCardProps {
26
+ /** fully-resolved car view-model. */
27
+ car: AutobahnCar;
28
+ /** whether this car is on the user's merkliste (drives the heart). */
29
+ isFavorite: boolean;
30
+ /** toggle the favorite; the heart calls this (click is kept off the card). */
31
+ onToggleFavorite: () => void;
32
+ /** fired when the card is clicked (opens the detail page). */
33
+ onOpen: (car: AutobahnCar) => void;
34
+ /** fired on first hover/touch of the media box — the SRP uses it to lazy-load the gallery. */
35
+ onMediaEnter?: () => void;
36
+ /** i18n translate fn (drilled from the page). */
37
+ t: TranslationFunction;
38
+ /**
39
+ * Optional admin-only action (e.g. dealer super admins' "Zum Schieberegler hinzufügen").
40
+ * Rendered as a quiet button at the card foot; the page decides visibility (JWT claim).
41
+ */
42
+ adminAction?: { label: string; onClick: () => void };
43
+ }
44
+
45
+ const CarCard: React.FunctionComponent<CarCardProps> = ({ car, isFavorite, onToggleFavorite, onOpen, onMediaEnter, t, adminAction }) => {
46
+ const showSave = car.savings != null && car.savings > 600;
47
+ return (
48
+ <article
49
+ className="mcard mcard--interactive cc-card"
50
+ onClick={() => onOpen(car)}
51
+ style={{ display: 'flex', flexDirection: 'column' }}
52
+ >
53
+ <div className="cc-media" style={{ position: 'relative' }} onMouseEnter={onMediaEnter} onTouchStart={onMediaEnter}>
54
+ <CardCarousel images={car.gallery} height="100%" fit="contain" />
55
+ {/* max two overlays: heart + ONE deal signal — rating moved next to the price */}
56
+ <div
57
+ style={{ position: 'absolute', top: 6, right: 6, zIndex: 3 }}
58
+ onClick={(e) => e.stopPropagation()}
59
+ >
60
+ <IconButton name="heart" filled active={isFavorite} onClick={onToggleFavorite} label={t('autobahn:card.action.save')} />
61
+ </div>
62
+ {/* top-left signal stack (heart is top-right): NEU badge + ONE deal signal.
63
+ DropChip takes precedence over SaveChip; each only renders when its real data exists. */}
64
+ {(car.isNew || car.drop != null || showSave || car.dropPct != null || car.zeroDown) && (
65
+ <div
66
+ style={{ position: 'absolute', top: 10, left: 10, zIndex: 3, display: 'flex', flexWrap: 'nowrap', gap: 5, alignItems: 'center', maxWidth: 'calc(100% - 52px)' }}
67
+ >
68
+ {car.isNew && <span className="neu-badge">NEU</span>}
69
+ {car.drop != null ? <DropChip t={t} amount={car.drop} /> : showSave && <SaveChip t={t} amount={car.savings!} />}
70
+ <ZeroDownChip t={t} show={car.zeroDown} />
71
+ <PercentChip pct={car.dropPct} />
72
+ </div>
73
+ )}
74
+ </div>
75
+ <div style={{ padding: '12px 14px 14px', display: 'flex', flexDirection: 'column', gap: 9, flex: 1 }}>
76
+ <div>
77
+ <div className="md-title" style={{ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>
78
+ {car.make} {car.model}
79
+ </div>
80
+ <div className="md-body-sm" style={{ whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>
81
+ {car.trim}
82
+ </div>
83
+ </div>
84
+ <SpecLine items={cardSpec(car)} oneLine />
85
+ <div style={{ flex: 1 }} />
86
+ <div style={{ marginTop: 4 }}>
87
+ {/* rate block: payment-path eyebrow (cheaper of financing/leasing) ABOVE the big
88
+ monthly rate; Preisbewertung chip kept on the right, centered on the block. */}
89
+ {(() => {
90
+ const useLease = car.lease != null && (car.lease as number) < car.monthly;
91
+ const rate = useLease ? (car.lease as number) : car.monthly;
92
+ const rateLabel = t(useLease ? 'autobahn:card.price.leasingFrom' : 'autobahn:card.price.financingFrom');
93
+ return (
94
+ <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8 }}>
95
+ <div style={{ minWidth: 0 }}>
96
+ <div
97
+ className="md-label-sm"
98
+ style={{
99
+ textTransform: 'uppercase',
100
+ letterSpacing: '.5px',
101
+ fontWeight: 700,
102
+ fontSize: 10.5,
103
+ color: 'var(--md-on-surface-variant)',
104
+ lineHeight: 1.4,
105
+ }}
106
+ >
107
+ {rateLabel}
108
+ </div>
109
+ <div style={{ display: 'flex', alignItems: 'baseline', gap: 5 }}>
110
+ <span
111
+ className="num"
112
+ style={{
113
+ fontWeight: 700,
114
+ fontSize: 26,
115
+ color: 'var(--md-primary)',
116
+ letterSpacing: '-.6px',
117
+ whiteSpace: 'nowrap',
118
+ }}
119
+ >
120
+ {fmtRate(rate)} €
121
+ </span>
122
+ <span className="md-label-sm">{t('autobahn:card.price.perMonth')}</span>
123
+ </div>
124
+ </div>
125
+ {car.rating && (
126
+ <StatChip
127
+ tone={car.rating === 'fair' ? 'warn' : 'good'}
128
+ icon={car.rating === 'fair' ? 'minus' : 'check'}
129
+ >
130
+ {t('autobahn:tier.' + car.rating)}
131
+ </StatChip>
132
+ )}
133
+ </div>
134
+ );
135
+ })()}
136
+ <div className="md-label-sm" style={{ marginTop: 2, display: 'flex', flexWrap: 'wrap', gap: '0 6px' }}>
137
+ <span style={{ whiteSpace: 'nowrap' }}>
138
+ {t('autobahn:card.price.purchasePrice')}{' '}
139
+ <b style={{ color: 'var(--md-on-surface)' }}>{car.price.toLocaleString('de-DE')} €</b>
140
+ </span>
141
+ {showSave && car.listPrice != null && (
142
+ <span
143
+ style={{
144
+ color: 'var(--md-on-surface-variant)',
145
+ textDecoration: 'line-through',
146
+ whiteSpace: 'nowrap',
147
+ }}
148
+ >
149
+ {car.listPrice.toLocaleString('de-DE')} €
150
+ </span>
151
+ )}
152
+ </div>
153
+ </div>
154
+ <EcoLine t={t} car={car} style={{ marginTop: 8 }} />
155
+ {adminAction && (
156
+ <div style={{ marginTop: 8 }}>
157
+ <Button
158
+ variant="outlined"
159
+ block
160
+ onClick={(e) => {
161
+ e.stopPropagation();
162
+ adminAction.onClick();
163
+ }}
164
+ >
165
+ {adminAction.label}
166
+ </Button>
167
+ </div>
168
+ )}
169
+ </div>
170
+ </article>
171
+ );
172
+ };
173
+
174
+ export default CarCard;