@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
package/ui/FormField.tsx CHANGED
@@ -1,88 +1,88 @@
1
- // Autobahn (auto.de redesign) — md3 form field bound to a mobx-react-form field.
2
- //
3
- // The Wave-0 form-kit input: a labelled, outlined MD3 text field that binds directly to a
4
- // mobx-react-form field via field.bind() — the SAME field objects the legacy FormInput used
5
- // (LoginForm.$('email'), RegisterForm.$('password'), …). So every existing validation rule,
6
- // onChange/onBlur, submit hook and error works unchanged; only the markup is re-skinned.
7
- //
8
- // Observer-wrapped so it re-renders on field value/error changes. Renders correctly only inside
9
- // a `.md3` subtree (scoped theme). Pure/presentational beyond the injected field.
10
-
11
- import * as React from 'react';
12
- import { observer } from 'mobx-react';
13
-
14
- import Icon from './Icon';
15
-
16
- export interface FormFieldProps {
17
- /** mobx-react-form field (LoginForm.$('email') etc.). Typed any — the lib ships no TS types. */
18
- field: any;
19
- /** i18n translate (AuthRegisterPage ns) — resolves the field's placeholder/label key. */
20
- t: (key: string, options?: object) => string;
21
- /** override the field's own type (e.g. force 'password'). */
22
- type?: string;
23
- id?: string;
24
- autoComplete?: 'on' | 'off';
25
- disabled?: boolean;
26
- onKeyPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
27
- /** suppress the built-in label (for layouts that supply their own external label next to the field). */
28
- hideLabel?: boolean;
29
- /** opt-in: show a green check + green border when the field is filled and valid (checkout). */
30
- showValid?: boolean;
31
- }
32
-
33
- const FormField: React.FunctionComponent<FormFieldProps> = observer(
34
- ({ field, t, type, id, autoComplete, disabled, onKeyPress, hideLabel, showValid }) => {
35
- const [reveal, setReveal] = React.useState<boolean>(false);
36
- // Auto-generate a stable id (React 18 useId) when the caller doesn't pass one, so the
37
- // <label htmlFor> below is ALWAYS wired to a real input id — ~30 call sites (incl. the
38
- // checkout money-path) never pass `id` and previously rendered an unassociated label.
39
- // useId() is called unconditionally (rules-of-hooks) even when `id` is supplied; the
40
- // generated value is simply discarded in that case (`id ||` wins), so it never appears
41
- // for `id`-bearing fields.
42
- const generatedId = React.useId();
43
- const inputId = id || generatedId;
44
- const bound = field.bind();
45
- const fieldType: string = type || field.type || 'text';
46
- const isPassword = fieldType === 'password';
47
- const inputType = isPassword && reveal ? 'text' : fieldType;
48
- const hasError = !!field.hasError && !!field.error;
49
- const isValid = !!showValid && !disabled && !isPassword && !hasError && !!field.value;
50
- // Visible label (a11y). Prefer the translated placeholder key (Auth forms), else translate the
51
- // field's label key (Checkout forms use i18n keys as `label`). t() returns the input unchanged
52
- // when there's no translation (Auth labels are plain strings), so this is safe for both.
53
- const label = field.placeholder ? t(field.placeholder) : field.label ? t(field.label) : '';
54
-
55
- return (
56
- <div className="mfield-group">
57
- {label && !hideLabel ? <label className="md-label-sm mfield-label" htmlFor={inputId}>{label}</label> : null}
58
- <div className={'mfield' + (hasError ? ' mfield--error' : '') + (disabled ? ' mfield--disabled' : '') + (isValid ? ' mfield--valid' : '')}>
59
- <input
60
- {...bound}
61
- id={inputId}
62
- type={inputType}
63
- autoComplete={autoComplete}
64
- disabled={disabled}
65
- placeholder=""
66
- onKeyPress={onKeyPress}
67
- style={{ width: '100%' }}
68
- />
69
- {isPassword ? (
70
- <button
71
- type="button"
72
- className="mfield-eye"
73
- tabIndex={-1}
74
- aria-label={t('autobahn:auth.togglePassword')}
75
- onClick={() => setReveal((r) => !r)}
76
- >
77
- <Icon name={reveal ? 'eye-off' : 'eye'} size={18} />
78
- </button>
79
- ) : null}
80
- {isValid ? <span className="mfield-ok"><Icon name="check" size={18} /></span> : null}
81
- </div>
82
- {hasError ? <span className="mfield-error-text">{field.error}</span> : null}
83
- </div>
84
- );
85
- },
86
- );
87
-
88
- export default FormField;
1
+ // Autobahn (auto.de redesign) — md3 form field bound to a mobx-react-form field.
2
+ //
3
+ // The Wave-0 form-kit input: a labelled, outlined MD3 text field that binds directly to a
4
+ // mobx-react-form field via field.bind() — the SAME field objects the legacy FormInput used
5
+ // (LoginForm.$('email'), RegisterForm.$('password'), …). So every existing validation rule,
6
+ // onChange/onBlur, submit hook and error works unchanged; only the markup is re-skinned.
7
+ //
8
+ // Observer-wrapped so it re-renders on field value/error changes. Renders correctly only inside
9
+ // a `.md3` subtree (scoped theme). Pure/presentational beyond the injected field.
10
+
11
+ import * as React from 'react';
12
+ import { observer } from 'mobx-react';
13
+
14
+ import Icon from './Icon';
15
+
16
+ export interface FormFieldProps {
17
+ /** mobx-react-form field (LoginForm.$('email') etc.). Typed any — the lib ships no TS types. */
18
+ field: any;
19
+ /** i18n translate (AuthRegisterPage ns) — resolves the field's placeholder/label key. */
20
+ t: (key: string, options?: object) => string;
21
+ /** override the field's own type (e.g. force 'password'). */
22
+ type?: string;
23
+ id?: string;
24
+ autoComplete?: 'on' | 'off';
25
+ disabled?: boolean;
26
+ onKeyPress?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
27
+ /** suppress the built-in label (for layouts that supply their own external label next to the field). */
28
+ hideLabel?: boolean;
29
+ /** opt-in: show a green check + green border when the field is filled and valid (checkout). */
30
+ showValid?: boolean;
31
+ }
32
+
33
+ const FormField: React.FunctionComponent<FormFieldProps> = observer(
34
+ ({ field, t, type, id, autoComplete, disabled, onKeyPress, hideLabel, showValid }) => {
35
+ const [reveal, setReveal] = React.useState<boolean>(false);
36
+ // Auto-generate a stable id (React 18 useId) when the caller doesn't pass one, so the
37
+ // <label htmlFor> below is ALWAYS wired to a real input id — ~30 call sites (incl. the
38
+ // checkout money-path) never pass `id` and previously rendered an unassociated label.
39
+ // useId() is called unconditionally (rules-of-hooks) even when `id` is supplied; the
40
+ // generated value is simply discarded in that case (`id ||` wins), so it never appears
41
+ // for `id`-bearing fields.
42
+ const generatedId = React.useId();
43
+ const inputId = id || generatedId;
44
+ const bound = field.bind();
45
+ const fieldType: string = type || field.type || 'text';
46
+ const isPassword = fieldType === 'password';
47
+ const inputType = isPassword && reveal ? 'text' : fieldType;
48
+ const hasError = !!field.hasError && !!field.error;
49
+ const isValid = !!showValid && !disabled && !isPassword && !hasError && !!field.value;
50
+ // Visible label (a11y). Prefer the translated placeholder key (Auth forms), else translate the
51
+ // field's label key (Checkout forms use i18n keys as `label`). t() returns the input unchanged
52
+ // when there's no translation (Auth labels are plain strings), so this is safe for both.
53
+ const label = field.placeholder ? t(field.placeholder) : field.label ? t(field.label) : '';
54
+
55
+ return (
56
+ <div className="mfield-group">
57
+ {label && !hideLabel ? <label className="md-label-sm mfield-label" htmlFor={inputId}>{label}</label> : null}
58
+ <div className={'mfield' + (hasError ? ' mfield--error' : '') + (disabled ? ' mfield--disabled' : '') + (isValid ? ' mfield--valid' : '')}>
59
+ <input
60
+ {...bound}
61
+ id={inputId}
62
+ type={inputType}
63
+ autoComplete={autoComplete}
64
+ disabled={disabled}
65
+ placeholder=""
66
+ onKeyPress={onKeyPress}
67
+ style={{ width: '100%' }}
68
+ />
69
+ {isPassword ? (
70
+ <button
71
+ type="button"
72
+ className="mfield-eye"
73
+ tabIndex={-1}
74
+ aria-label={t('autobahn:auth.togglePassword')}
75
+ onClick={() => setReveal((r) => !r)}
76
+ >
77
+ <Icon name={reveal ? 'eye-off' : 'eye'} size={18} />
78
+ </button>
79
+ ) : null}
80
+ {isValid ? <span className="mfield-ok"><Icon name="check" size={18} /></span> : null}
81
+ </div>
82
+ {hasError ? <span className="mfield-error-text">{field.error}</span> : null}
83
+ </div>
84
+ );
85
+ },
86
+ );
87
+
88
+ export default FormField;
package/ui/FormRadio.tsx CHANGED
@@ -1,93 +1,93 @@
1
- // Autobahn (auto.de redesign) — md3 selectable radio wrapper.
2
- //
3
- // The leaf of the md3 radio pair (used with FormRadioGroup). It is a SELECTABLE WRAPPER around
4
- // ARBITRARY children, re-skinning the legacy fe-ui-core radio child (a `CheckboxMaterial radio`
5
- // or `_common/Radio`) used across 5 pages — including the RICH custom-label radios in
6
- // VehicleEdit/VehicleAdd: exterior/interior color swatches, Feinstaub emission stickers,
7
- // interior-material icons, energy-efficiency bars, and DAT-model spec grids. Text-only is just
8
- // the simple case; the mandatory case is arbitrary children, so a radio can contain any markup.
9
- //
10
- // LEGACY SIGNATURE (replicated so a structure-preserving re-skin is a drop-in):
11
- // In the legacy tree the group (`fe-ui-core` RadioGroup / our FormMaterialRadioGroup → MUI
12
- // RadioGroup) CLONES each child injecting `checked` (computed from `child.value === group.value`)
13
- // plus an `onChange`. The child carries the option key in `value` and renders its visual via
14
- // `content` / `icon` / `label`. Here the SAME shape is preserved: `value` is the option key,
15
- // the children are the visual, and FormRadioGroup injects `checked` + `onSelect` (and the shared
16
- // `name` / `disabled` / `error`) by cloning. The child fires `onSelect(value)` on activation —
17
- // the group is what talks to the mobx field, never the leaf.
18
- //
19
- // A native hidden `<input type="radio">` is kept (as the legacy `_common/Radio` did) so the control
20
- // is real radio semantics for a11y + forms; the visible chrome is the md3 `.mradio` surface with a
21
- // selected ring/outline driven by `checked`. Pure/presentational. Renders correctly only inside a
22
- // `<div className="md3">` subtree (scoped theme).
23
-
24
- import * as React from 'react';
25
-
26
- export interface FormRadioProps {
27
- /** the option key this radio represents (compared against the group's field.value). */
28
- value: any;
29
- /** arbitrary visual: plain text, a color swatch, an emission-sticker <img>, an icon, a spec grid… */
30
- children?: React.ReactNode;
31
- disabled?: boolean;
32
- /** accessible label when `children` is non-text (swatch/icon/img) and needs a name. */
33
- ariaLabel?: string;
34
- /** extra class(es) on the wrapper (layout hooks from the caller). */
35
- className?: string;
36
- /** inline style on the wrapper `<label>` (layout hooks the caller cannot express as a class,
37
- * e.g. a full-width stacked DAT-model row). Optional; merged onto the `.mradio` surface. */
38
- style?: React.CSSProperties;
39
-
40
- // ---- injected by FormRadioGroup via React.cloneElement (do not pass by hand) ----
41
- /** true when this radio's `value` is the group's selected value. */
42
- checked?: boolean;
43
- /** group callback — fires with this radio's `value` on activation. */
44
- onSelect?: (value: any) => void;
45
- /** shared radio-group name (so the native inputs form one exclusive group). */
46
- name?: string;
47
- /** mirrors the group's error state (red ring), matching the legacy `error` clone prop. */
48
- error?: boolean;
49
- }
50
-
51
- const FormRadio: React.FunctionComponent<FormRadioProps> = ({
52
- value,
53
- children,
54
- disabled = false,
55
- ariaLabel,
56
- className,
57
- style,
58
- checked = false,
59
- onSelect,
60
- name,
61
- error = false,
62
- }) => {
63
- const handleChange = () => {
64
- if (disabled) return;
65
- if (onSelect) onSelect(value);
66
- };
67
-
68
- const cls =
69
- 'mradio' +
70
- (checked ? ' mradio--on' : '') +
71
- (disabled ? ' mradio--disabled' : '') +
72
- (error && !checked ? ' mradio--error' : '') +
73
- (className ? ` ${className}` : '');
74
-
75
- return (
76
- <label className={cls} style={style}>
77
- {/* Real radio input (hidden) — keeps native exclusive-group + keyboard + a11y semantics. */}
78
- <input
79
- type="radio"
80
- className="mradio-input"
81
- name={name}
82
- value={value}
83
- checked={checked}
84
- disabled={disabled}
85
- aria-label={ariaLabel}
86
- onChange={handleChange}
87
- />
88
- <span className="mradio-body">{children}</span>
89
- </label>
90
- );
91
- };
92
-
93
- export default FormRadio;
1
+ // Autobahn (auto.de redesign) — md3 selectable radio wrapper.
2
+ //
3
+ // The leaf of the md3 radio pair (used with FormRadioGroup). It is a SELECTABLE WRAPPER around
4
+ // ARBITRARY children, re-skinning the legacy fe-ui-core radio child (a `CheckboxMaterial radio`
5
+ // or `_common/Radio`) used across 5 pages — including the RICH custom-label radios in
6
+ // VehicleEdit/VehicleAdd: exterior/interior color swatches, Feinstaub emission stickers,
7
+ // interior-material icons, energy-efficiency bars, and DAT-model spec grids. Text-only is just
8
+ // the simple case; the mandatory case is arbitrary children, so a radio can contain any markup.
9
+ //
10
+ // LEGACY SIGNATURE (replicated so a structure-preserving re-skin is a drop-in):
11
+ // In the legacy tree the group (`fe-ui-core` RadioGroup / our FormMaterialRadioGroup → MUI
12
+ // RadioGroup) CLONES each child injecting `checked` (computed from `child.value === group.value`)
13
+ // plus an `onChange`. The child carries the option key in `value` and renders its visual via
14
+ // `content` / `icon` / `label`. Here the SAME shape is preserved: `value` is the option key,
15
+ // the children are the visual, and FormRadioGroup injects `checked` + `onSelect` (and the shared
16
+ // `name` / `disabled` / `error`) by cloning. The child fires `onSelect(value)` on activation —
17
+ // the group is what talks to the mobx field, never the leaf.
18
+ //
19
+ // A native hidden `<input type="radio">` is kept (as the legacy `_common/Radio` did) so the control
20
+ // is real radio semantics for a11y + forms; the visible chrome is the md3 `.mradio` surface with a
21
+ // selected ring/outline driven by `checked`. Pure/presentational. Renders correctly only inside a
22
+ // `<div className="md3">` subtree (scoped theme).
23
+
24
+ import * as React from 'react';
25
+
26
+ export interface FormRadioProps {
27
+ /** the option key this radio represents (compared against the group's field.value). */
28
+ value: any;
29
+ /** arbitrary visual: plain text, a color swatch, an emission-sticker <img>, an icon, a spec grid… */
30
+ children?: React.ReactNode;
31
+ disabled?: boolean;
32
+ /** accessible label when `children` is non-text (swatch/icon/img) and needs a name. */
33
+ ariaLabel?: string;
34
+ /** extra class(es) on the wrapper (layout hooks from the caller). */
35
+ className?: string;
36
+ /** inline style on the wrapper `<label>` (layout hooks the caller cannot express as a class,
37
+ * e.g. a full-width stacked DAT-model row). Optional; merged onto the `.mradio` surface. */
38
+ style?: React.CSSProperties;
39
+
40
+ // ---- injected by FormRadioGroup via React.cloneElement (do not pass by hand) ----
41
+ /** true when this radio's `value` is the group's selected value. */
42
+ checked?: boolean;
43
+ /** group callback — fires with this radio's `value` on activation. */
44
+ onSelect?: (value: any) => void;
45
+ /** shared radio-group name (so the native inputs form one exclusive group). */
46
+ name?: string;
47
+ /** mirrors the group's error state (red ring), matching the legacy `error` clone prop. */
48
+ error?: boolean;
49
+ }
50
+
51
+ const FormRadio: React.FunctionComponent<FormRadioProps> = ({
52
+ value,
53
+ children,
54
+ disabled = false,
55
+ ariaLabel,
56
+ className,
57
+ style,
58
+ checked = false,
59
+ onSelect,
60
+ name,
61
+ error = false,
62
+ }) => {
63
+ const handleChange = () => {
64
+ if (disabled) return;
65
+ if (onSelect) onSelect(value);
66
+ };
67
+
68
+ const cls =
69
+ 'mradio' +
70
+ (checked ? ' mradio--on' : '') +
71
+ (disabled ? ' mradio--disabled' : '') +
72
+ (error && !checked ? ' mradio--error' : '') +
73
+ (className ? ` ${className}` : '');
74
+
75
+ return (
76
+ <label className={cls} style={style}>
77
+ {/* Real radio input (hidden) — keeps native exclusive-group + keyboard + a11y semantics. */}
78
+ <input
79
+ type="radio"
80
+ className="mradio-input"
81
+ name={name}
82
+ value={value}
83
+ checked={checked}
84
+ disabled={disabled}
85
+ aria-label={ariaLabel}
86
+ onChange={handleChange}
87
+ />
88
+ <span className="mradio-body">{children}</span>
89
+ </label>
90
+ );
91
+ };
92
+
93
+ export default FormRadio;
@@ -1,106 +1,106 @@
1
- // Autobahn (auto.de redesign) — md3 radio group bound to a mobx-react-form field.
2
- //
3
- // Drop-in re-skin of the legacy radio group (`components/ui/FormMaterialRadioGroup`, which wraps the
4
- // fe-ui-core MUI `RadioGroup`) used on 5 pages: DealerEmployeeSetPage, Checkout (Zahlart / services),
5
- // and the rich VehicleEdit/VehicleAdd sections (ColorPad colors, Environment emission stickers +
6
- // EnVKV type, FormCarEngine DAT models). It binds to the SAME mobx-react-form field objects the
7
- // legacy group used (VehicleEditForm.$('colorPadForm.exterior_exteriorColor'),
8
- // form.$('environmentForm.environmentEmissions_emissionSticker'), …) so every existing validation
9
- // rule / submit hook / error keeps working — only the markup is re-skinned.
10
- //
11
- // LEGACY SIGNATURE (replicated exactly — the contract a structure-preserving re-skin must keep):
12
- // The legacy group owns the selected value from `field.value`, and CLONES each child injecting
13
- // `checked` (computed from `child.value === field.value`) plus an `onChange`. The fe-ui-core
14
- // RadioGroup's own change handler has the shape `onChange(event, value, radioName)`; bound to a
15
- // mobx field via FormMaterialRadioGroup it forwards the selected value into the field. Here the
16
- // same flow is preserved: this group reads `field.value`, clones each FormRadio child with
17
- // `checked={child.value === field.value}` + an `onSelect(value)` + the shared `name`/`disabled`/
18
- // `error`, and on select pushes the value into the field via the kit's standard call
19
- // `field.onChange(value, field.name)` (the exact form DatePicker/Switch use — mobx-react-form
20
- // reads the raw value as the change argument). The inline error mirrors the legacy `field.hasError
21
- // && field.error`.
22
- //
23
- // observer-wrapped so it re-renders when field.value / field.error change. Children are cloned
24
- // (FormRadio leaves) so the group is the single owner of selection + field talk. Renders correctly
25
- // only inside a `<div className="md3">` subtree (scoped theme).
26
-
27
- import * as React from 'react';
28
- import { observer } from 'mobx-react';
29
-
30
- import FormRadio from './FormRadio';
31
-
32
- export interface FormRadioGroupProps {
33
- /** mobx-react-form field (VehicleEditForm.$('colorPadForm.exterior_exteriorColor') etc.). Typed any — the lib ships no TS types. */
34
- field: any;
35
- /** radio-group name for the native inputs; defaults to field.name so each field is its own exclusive group. */
36
- name?: string;
37
- /** FormRadio children (each carries a `value` + arbitrary visual). */
38
- children: React.ReactNode;
39
- /** disables every radio in the group. */
40
- disabled?: boolean;
41
- /** accessible label for the group when there is no adjacent visible heading. */
42
- ariaLabel?: string;
43
- /** extra class(es) on the group container (layout hooks: wrap, swatch grid, sticker row…). */
44
- className?: string;
45
- /**
46
- * extra class(es) on the inner radio row (`.mradio-set`, the element that is the direct
47
- * flex/grid parent of the radios). Use this when a caller's layout class must lay the radios
48
- * out (e.g. the legacy `FormMaterialRadioGroup` call sites whose section classes — `styles.colors`,
49
- * `styles.usageTypesField`, the DAT `styles.radioGroup` … — were applied to the radio container,
50
- * not an outer wrapper). Optional + defaulted, so existing callers are unaffected.
51
- */
52
- setClassName?: string;
53
- }
54
-
55
- const FormRadioGroup: React.FunctionComponent<FormRadioGroupProps> = observer(
56
- ({ field, name, children, disabled = false, ariaLabel, className, setClassName }) => {
57
- const groupName: string = name || (field && field.name) || 'mradio-group';
58
- const selected = field ? field.value : undefined;
59
- const hasError = !!(field && field.hasError && field.error);
60
-
61
- // Push the chosen option key into the mobx field. Matches the kit's bound-control convention
62
- // (DatePicker/Switch): mobx-react-form's onChange takes the raw value as its change argument,
63
- // and we pass field.name as the second arg exactly as the other bound primitives do.
64
- const handleSelect = React.useCallback(
65
- (value: any) => {
66
- if (disabled || !field) return;
67
- field.onChange(value, field.name);
68
- },
69
- [disabled, field],
70
- );
71
-
72
- // Clone each FormRadio leaf, injecting the legacy-style derived props: checked, onSelect, the
73
- // shared name, the merged disabled, and the error flag. Non-element children pass through.
74
- const radios = React.Children.map(children, (child) => {
75
- if (!React.isValidElement(child)) return child;
76
- const childProps = child.props as { value?: any; disabled?: boolean };
77
- return React.cloneElement(child as React.ReactElement<any>, {
78
- checked: childProps.value === selected,
79
- onSelect: handleSelect,
80
- name: groupName,
81
- disabled: disabled || childProps.disabled,
82
- error: hasError,
83
- });
84
- });
85
-
86
- return (
87
- <div className={'mradio-group' + (className ? ` ${className}` : '')}>
88
- <div
89
- className={
90
- 'mradio-set' +
91
- (hasError ? ' mradio-set--error' : '') +
92
- (setClassName ? ` ${setClassName}` : '')
93
- }
94
- role="radiogroup"
95
- aria-label={ariaLabel}
96
- aria-invalid={hasError || undefined}
97
- >
98
- {radios}
99
- </div>
100
- {hasError ? <span className="mfield-error-text">{field.error}</span> : null}
101
- </div>
102
- );
103
- },
104
- );
105
-
106
- export default FormRadioGroup;
1
+ // Autobahn (auto.de redesign) — md3 radio group bound to a mobx-react-form field.
2
+ //
3
+ // Drop-in re-skin of the legacy radio group (`components/ui/FormMaterialRadioGroup`, which wraps the
4
+ // fe-ui-core MUI `RadioGroup`) used on 5 pages: DealerEmployeeSetPage, Checkout (Zahlart / services),
5
+ // and the rich VehicleEdit/VehicleAdd sections (ColorPad colors, Environment emission stickers +
6
+ // EnVKV type, FormCarEngine DAT models). It binds to the SAME mobx-react-form field objects the
7
+ // legacy group used (VehicleEditForm.$('colorPadForm.exterior_exteriorColor'),
8
+ // form.$('environmentForm.environmentEmissions_emissionSticker'), …) so every existing validation
9
+ // rule / submit hook / error keeps working — only the markup is re-skinned.
10
+ //
11
+ // LEGACY SIGNATURE (replicated exactly — the contract a structure-preserving re-skin must keep):
12
+ // The legacy group owns the selected value from `field.value`, and CLONES each child injecting
13
+ // `checked` (computed from `child.value === field.value`) plus an `onChange`. The fe-ui-core
14
+ // RadioGroup's own change handler has the shape `onChange(event, value, radioName)`; bound to a
15
+ // mobx field via FormMaterialRadioGroup it forwards the selected value into the field. Here the
16
+ // same flow is preserved: this group reads `field.value`, clones each FormRadio child with
17
+ // `checked={child.value === field.value}` + an `onSelect(value)` + the shared `name`/`disabled`/
18
+ // `error`, and on select pushes the value into the field via the kit's standard call
19
+ // `field.onChange(value, field.name)` (the exact form DatePicker/Switch use — mobx-react-form
20
+ // reads the raw value as the change argument). The inline error mirrors the legacy `field.hasError
21
+ // && field.error`.
22
+ //
23
+ // observer-wrapped so it re-renders when field.value / field.error change. Children are cloned
24
+ // (FormRadio leaves) so the group is the single owner of selection + field talk. Renders correctly
25
+ // only inside a `<div className="md3">` subtree (scoped theme).
26
+
27
+ import * as React from 'react';
28
+ import { observer } from 'mobx-react';
29
+
30
+ import FormRadio from './FormRadio';
31
+
32
+ export interface FormRadioGroupProps {
33
+ /** mobx-react-form field (VehicleEditForm.$('colorPadForm.exterior_exteriorColor') etc.). Typed any — the lib ships no TS types. */
34
+ field: any;
35
+ /** radio-group name for the native inputs; defaults to field.name so each field is its own exclusive group. */
36
+ name?: string;
37
+ /** FormRadio children (each carries a `value` + arbitrary visual). */
38
+ children: React.ReactNode;
39
+ /** disables every radio in the group. */
40
+ disabled?: boolean;
41
+ /** accessible label for the group when there is no adjacent visible heading. */
42
+ ariaLabel?: string;
43
+ /** extra class(es) on the group container (layout hooks: wrap, swatch grid, sticker row…). */
44
+ className?: string;
45
+ /**
46
+ * extra class(es) on the inner radio row (`.mradio-set`, the element that is the direct
47
+ * flex/grid parent of the radios). Use this when a caller's layout class must lay the radios
48
+ * out (e.g. the legacy `FormMaterialRadioGroup` call sites whose section classes — `styles.colors`,
49
+ * `styles.usageTypesField`, the DAT `styles.radioGroup` … — were applied to the radio container,
50
+ * not an outer wrapper). Optional + defaulted, so existing callers are unaffected.
51
+ */
52
+ setClassName?: string;
53
+ }
54
+
55
+ const FormRadioGroup: React.FunctionComponent<FormRadioGroupProps> = observer(
56
+ ({ field, name, children, disabled = false, ariaLabel, className, setClassName }) => {
57
+ const groupName: string = name || (field && field.name) || 'mradio-group';
58
+ const selected = field ? field.value : undefined;
59
+ const hasError = !!(field && field.hasError && field.error);
60
+
61
+ // Push the chosen option key into the mobx field. Matches the kit's bound-control convention
62
+ // (DatePicker/Switch): mobx-react-form's onChange takes the raw value as its change argument,
63
+ // and we pass field.name as the second arg exactly as the other bound primitives do.
64
+ const handleSelect = React.useCallback(
65
+ (value: any) => {
66
+ if (disabled || !field) return;
67
+ field.onChange(value, field.name);
68
+ },
69
+ [disabled, field],
70
+ );
71
+
72
+ // Clone each FormRadio leaf, injecting the legacy-style derived props: checked, onSelect, the
73
+ // shared name, the merged disabled, and the error flag. Non-element children pass through.
74
+ const radios = React.Children.map(children, (child) => {
75
+ if (!React.isValidElement(child)) return child;
76
+ const childProps = child.props as { value?: any; disabled?: boolean };
77
+ return React.cloneElement(child as React.ReactElement<any>, {
78
+ checked: childProps.value === selected,
79
+ onSelect: handleSelect,
80
+ name: groupName,
81
+ disabled: disabled || childProps.disabled,
82
+ error: hasError,
83
+ });
84
+ });
85
+
86
+ return (
87
+ <div className={'mradio-group' + (className ? ` ${className}` : '')}>
88
+ <div
89
+ className={
90
+ 'mradio-set' +
91
+ (hasError ? ' mradio-set--error' : '') +
92
+ (setClassName ? ` ${setClassName}` : '')
93
+ }
94
+ role="radiogroup"
95
+ aria-label={ariaLabel}
96
+ aria-invalid={hasError || undefined}
97
+ >
98
+ {radios}
99
+ </div>
100
+ {hasError ? <span className="mfield-error-text">{field.error}</span> : null}
101
+ </div>
102
+ );
103
+ },
104
+ );
105
+
106
+ export default FormRadioGroup;