@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.
- package/assets/autode-logo.svg +6 -6
- package/cards/CarCard.tsx +174 -174
- package/cards/CarRow.tsx +186 -182
- package/cards/cardParts.tsx +529 -489
- package/cards/index.ts +37 -35
- package/cards/types.ts +122 -114
- package/chrome/Footer.tsx +189 -189
- package/chrome/TopBar.tsx +405 -405
- package/chrome/index.ts +20 -20
- package/chrome/svg.d.ts +11 -11
- package/compat/AccardionSection/AccardionSection.styl +45 -45
- package/compat/AccardionSection/AccardionSection.tsx +56 -56
- package/compat/AccordionWidget/AccordionWidget.styl +220 -220
- package/compat/AccordionWidget/AccordionWidget.tsx +257 -257
- package/compat/AccordionWrapper/AccordionItem/AccordionItem.styl +34 -34
- package/compat/AccordionWrapper/AccordionItem/AccordionItem.tsx +64 -64
- package/compat/AccordionWrapper/AccordionWrapper.tsx +34 -34
- package/compat/AdvantageItem/AdvantageItem.styl +47 -47
- package/compat/AdvantageItem/AdvantageItem.tsx +26 -26
- package/compat/Alternative/DealerInfo.styl +116 -116
- package/compat/Alternative/DealerInfo.tsx +171 -171
- package/compat/Badge/Badge.styl +44 -44
- package/compat/Badge/Badge.tsx +25 -25
- package/compat/BodyTypeIcons/Audi.tsx +9 -9
- package/compat/BodyTypeIcons/Bmw.tsx +860 -860
- package/compat/BodyTypeIcons/Ford.tsx +31 -31
- package/compat/BodyTypeIcons/IconsConfig.tsx +44 -44
- package/compat/BodyTypeIcons/IconsConfigCompact.tsx +30 -30
- package/compat/BodyTypeIcons/Mazda.tsx +44 -44
- package/compat/BodyTypeIcons/MercedesBenz.tsx +38 -38
- package/compat/BodyTypeIcons/Opel.tsx +19 -19
- package/compat/BodyTypeIcons/Search.tsx +19 -19
- package/compat/BodyTypeIcons/SelectorCategoryCombi.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryCompact.tsx +20 -20
- package/compat/BodyTypeIcons/SelectorCategoryConvertible.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryCoupe.tsx +60 -60
- package/compat/BodyTypeIcons/SelectorCategoryMinibus.tsx +64 -64
- package/compat/BodyTypeIcons/SelectorCategorySedan.tsx +69 -69
- package/compat/BodyTypeIcons/SelectorCategorySuv.tsx +77 -77
- package/compat/BodyTypeIcons/SelectorCategoryTransporter.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryVan.tsx +72 -72
- package/compat/BodyTypeIcons/Volkswagen.tsx +330 -330
- package/compat/BodyTypeIcons/index.ts +17 -17
- package/compat/Button/Button.tsx +65 -65
- package/compat/ButtonOld/Button.styl +65 -65
- package/compat/ButtonOld/Button.tsx +84 -84
- package/compat/Checkbox/Checkbox.styl +119 -119
- package/compat/Checkbox/Checkbox.tsx +151 -151
- package/compat/Checkbox/FormCheckbox.styl +22 -22
- package/compat/Checkbox/FormCheckbox.tsx +86 -86
- package/compat/Co2Widget/CO2Efficiency.styl +219 -219
- package/compat/Co2Widget/CO2Efficiency.tsx +93 -93
- package/compat/ContactInfo/ContactInfo.styl +22 -22
- package/compat/ContactInfo/ContactInfo.tsx +161 -161
- package/compat/ContactInfo/TemporaryTranslation.ts +11 -11
- package/compat/CookieModal/CookieModal.tsx +49 -49
- package/compat/CookieModal/Modal.tsx +43 -43
- package/compat/CookieModal/ModalsConfig.tsx +23 -23
- package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.styl +86 -86
- package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.tsx +184 -184
- package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.styl +66 -66
- package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.tsx +51 -51
- package/compat/CookieModal/modals/TestModal.tsx +7 -7
- package/compat/CookieModal/useModal.ts +13 -13
- package/compat/CustomerQuote/CustomerQuote.styl +79 -79
- package/compat/CustomerQuote/CustomerQuote.tsx +68 -68
- package/compat/CustomerQuotesSlider/CustomerQuotesSlider.styl +46 -46
- package/compat/CustomerQuotesSlider/CustomerQuotesSlider.tsx +79 -79
- package/compat/CustomerQuotesSlider/SliderArrow.tsx +20 -20
- package/compat/CustomerQuotesSlider/slider.global.styl +2 -2
- package/compat/ExpansionPanel/ExpansionPanel.tsx +68 -68
- package/compat/FirstInfoBlock/FirstInfoBlock.styl +33 -33
- package/compat/FirstInfoBlock/FirstInfoBlock.tsx +49 -49
- package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.styl +66 -66
- package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.tsx +21 -21
- package/compat/FormattedNumber/FormattedNumber.styl +1 -1
- package/compat/FormattedNumber/FormattedNumber.tsx +90 -90
- package/compat/IconContainer/IconContainer.styl +23 -23
- package/compat/IconContainer/IconContainer.tsx +34 -34
- package/compat/Image/Image.styl +109 -109
- package/compat/Image/Image.tsx +302 -302
- package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.styl +7 -7
- package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.tsx +30 -30
- package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.styl +122 -122
- package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.tsx +199 -199
- package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.styl +3 -3
- package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.tsx +15 -15
- package/compat/ImageSettings/OptionsTable/OptionsTable.styl +47 -47
- package/compat/ImageSettings/OptionsTable/OptionsTable.tsx +122 -122
- package/compat/ImageSettings/PricePlan/PricePlan.styl +63 -63
- package/compat/ImageSettings/PricePlan/PricePlan.tsx +32 -32
- package/compat/ImageSettings/index.ts +42 -42
- package/compat/ImagesSet/ImagesSet.styl +27 -27
- package/compat/ImagesSet/ImagesSet.tsx +76 -76
- package/compat/InfoBlockWrapper/InfoBlockWrapper.styl +41 -41
- package/compat/InfoBlockWrapper/InfoBlockWrapper.tsx +46 -46
- package/compat/Loader/Loader.styl +39 -39
- package/compat/Loader/Loader.tsx +32 -32
- package/compat/MagnifyGlass/MagnifyGlass.styl +33 -33
- package/compat/MagnifyGlass/MagnifyGlass.tsx +213 -213
- package/compat/MdAccordionGroup/MdAccordionGroup.tsx +53 -53
- package/compat/MdCheckbox/MdCheckbox.tsx +69 -69
- package/compat/MdField/MdField.tsx +100 -100
- package/compat/MdSelect/MdSelect.tsx +103 -103
- package/compat/MdSwitch/MdSwitch.tsx +29 -29
- package/compat/MdTabs/MdTabs.tsx +47 -47
- package/compat/MdTooltip/MdTooltip.tsx +31 -31
- package/compat/OfferDetailedSection/OfferDetailedSection.styl +31 -31
- package/compat/OfferDetailedSection/OfferDetailedSection.tsx +100 -100
- package/compat/OfferDetailedSection/partials/PanelConfig.styl +131 -131
- package/compat/OfferDetailedSection/partials/PanelConfig.tsx +121 -121
- package/compat/OfferPanel/AboAccordion/AboAccordion.styl +24 -24
- package/compat/OfferPanel/AboAccordion/AboAccordion.tsx +128 -128
- package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.styl +11 -11
- package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.tsx +35 -35
- package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.styl +20 -20
- package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.tsx +25 -25
- package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.styl +13 -13
- package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.tsx +39 -39
- package/compat/OfferPanel/MuiOfferPeriod/MuiOfferPeriod.tsx +42 -42
- package/compat/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +140 -140
- package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +144 -144
- package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +23 -23
- package/compat/OfferPanel/OfferPanel.styl +193 -193
- package/compat/OfferPanel/OfferPanel.tsx +81 -81
- package/compat/OfferPanel/OfferPeriod/OfferPeriod.styl +24 -24
- package/compat/OfferPanel/OfferPeriod/OfferPeriod.tsx +45 -45
- package/compat/OfferPanel/RangeGroup/RangeGroup.tsx +39 -39
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styl +119 -119
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styled.tsx +33 -33
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.tsx +122 -122
- package/compat/PriceRating/PriceRating.styl +47 -47
- package/compat/PriceRating/PriceRating.tsx +64 -64
- package/compat/PriceRatingDetailed/PriceRatingDetailed.styl +120 -120
- package/compat/PriceRatingDetailed/PriceRatingDetailed.tsx +191 -191
- package/compat/PricingToolBlock/PricingTool.styl +6 -6
- package/compat/PricingToolBlock/PricingTool.tsx +29 -29
- package/compat/Radio/Radio.styl +115 -115
- package/compat/Radio/Radio.tsx +141 -141
- package/compat/Radio/RadioGroup.styl +5 -5
- package/compat/Radio/RadioGroup.tsx +65 -65
- package/compat/Range/Range.tsx +79 -79
- package/compat/RateSearchValue/RateSearchValue.styl +22 -22
- package/compat/RateSearchValue/RateSearchValue.tsx +55 -55
- package/compat/RateSearchWidget/RateSearchWidget.styl +106 -106
- package/compat/RateSearchWidget/RateSearchWidget.tsx +163 -163
- package/compat/ServiceBlockItem/ServiceBlockItem.styl +47 -47
- package/compat/ServiceBlockItem/ServiceBlockItem.tsx +25 -25
- package/compat/SkeletonItem/SkeletonItem.styl +80 -80
- package/compat/SkeletonItem/SkeletonItem.tsx +80 -80
- package/compat/StarButton/StarButton.styl +39 -39
- package/compat/StarButton/StarButton.tsx +31 -31
- package/compat/TabPanel/TabPanel.tsx +28 -28
- package/compat/TimePicker/TimePicker.styl +22 -22
- package/compat/TimePicker/TimePicker.tsx +156 -156
- package/compat/Tooltip/Tooltip.styl +117 -117
- package/compat/Tooltip/Tooltip.tsx +63 -63
- package/compat/Usp/Usp.styl +78 -78
- package/compat/Usp/Usp.tsx +30 -30
- package/compat/Usp/uspTranslate.ts +12 -12
- package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.styl +36 -36
- package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +178 -178
- package/compat/VehicleDetailedSidebar/partials/Price.styl +27 -27
- package/compat/VehicleDetailedSidebar/partials/Price.tsx +41 -41
- package/compat/VehicleDetailedSidebar/partials/PriceContent.styl +123 -123
- package/compat/VehicleDetailedSidebar/partials/PriceContent.tsx +128 -128
- package/compat/VehicleDetailedSidebar/partials/Properties.styl +58 -58
- package/compat/VehicleDetailedSidebar/partials/Properties.tsx +155 -155
- package/compat/VehicleDetailedSidebar/partials/Title.styl +35 -35
- package/compat/VehicleDetailedSidebar/partials/Title.tsx +33 -33
- package/compat/VehicleDetailedSlider/VehicleDetailedSlider.styl +146 -146
- package/compat/VehicleDetailedSlider/VehicleDetailedSlider.tsx +382 -382
- package/compat/VehicleDetailedSlider/partials/MobileStast.tsx +61 -61
- package/compat/VehicleDetailedSlider/partials/MobileStats.styl +71 -71
- package/compat/VehicleDetailedSlider/partials/PriceData.styl +50 -50
- package/compat/VehicleDetailedSlider/partials/PriceData.tsx +67 -67
- package/compat/VehicleDetailedSlider/partials/Stats.styl +80 -80
- package/compat/VehicleDetailedSlider/partials/Stats.tsx +62 -62
- package/compat/VehicleDetailedSlider/partials/Title.styl +44 -44
- package/compat/VehicleDetailedSlider/partials/Title.tsx +36 -36
- package/compat/VehicleFormattedPrice/VehicleFormattedPrice.styl +148 -148
- package/compat/VehicleFormattedPrice/VehicleFormattedPrice.tsx +163 -163
- package/compat/VehicleSlider/VehicleSlider.styl +62 -62
- package/compat/VehicleSlider/VehicleSlider.tsx +125 -125
- package/compat/VehicleSlider/VehicleSliderForSRL.tsx +175 -175
- package/compat/VehicleSmallCard/SeoText/SeoText.styl +8 -8
- package/compat/VehicleSmallCard/SeoText/SeoText.tsx +16 -16
- package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +204 -204
- package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +199 -199
- package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +273 -273
- package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +179 -179
- package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +165 -165
- package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.tsx +299 -299
- package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +32 -32
- package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +35 -35
- package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.styl +135 -135
- package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +91 -91
- package/compat/VehicleSmallCard/VehicleSmallCard.styl +309 -309
- package/compat/VehicleSmallCard/VehicleSmallCard.tsx +448 -448
- package/compat/index.ts +77 -77
- package/compat/legacy-theme/mixins.styl +93 -93
- package/compat/legacy-theme/priceReviewColors.styl +12 -12
- package/compat/legacy-theme/slider.global.styl +5 -5
- package/compat/legacy-theme/theme.styl +136 -136
- package/compat/withLabel/withLabel.styl +33 -33
- package/compat/withLabel/withLabel.tsx +44 -44
- package/compat/withStats/withStats.styl +174 -174
- package/compat/withStats/withStats.tsx +238 -238
- package/constants/RateSearchWidget.ts +15 -15
- package/constants/Search.ts +290 -290
- package/constants/SearchWidget.ts +108 -108
- package/constants/app.ts +223 -223
- package/constants/common.ts +127 -127
- package/constants/core.ts +131 -131
- package/constants/highlights.ts +165 -165
- package/constants/price.ts +9 -9
- package/constants/selectors.ts +38 -38
- package/constants.ts +91 -91
- package/data/DataTransformers.ts +88 -88
- package/data/fieldMapping.ts +364 -342
- package/data/toAutobahnCar.ts +455 -442
- package/iconsvg/IconSVG.tsx +30 -30
- package/iconsvg/IconSVGConfig.tsx +768 -768
- package/iconsvg/SVG/AboPartner.tsx +16 -16
- package/iconsvg/SVG/ArrowQuotes.tsx +22 -22
- package/iconsvg/SVG/CloseIcon.tsx +17 -17
- package/iconsvg/SVG/CloseIconSelect.tsx +18 -18
- package/iconsvg/SVG/ClosedLockIcon.tsx +18 -18
- package/iconsvg/SVG/DealerCheckIcon.tsx +18 -18
- package/iconsvg/SVG/DealerPopoverMail.tsx +21 -21
- package/iconsvg/SVG/DealerPopoverPhone.tsx +21 -21
- package/iconsvg/SVG/GrayPhoneIcon.tsx +22 -22
- package/iconsvg/SVG/InternetIcon.tsx +18 -18
- package/iconsvg/SVG/WhiteEnvelopeIcon.tsx +21 -21
- package/iconsvg/SVG/bodyType/Cabrio.tsx +23 -23
- package/iconsvg/SVG/bodyType/Coupe.tsx +22 -22
- package/iconsvg/SVG/bodyType/Minibus.tsx +22 -22
- package/iconsvg/SVG/bodyType/Other.tsx +25 -25
- package/iconsvg/SVG/bodyType/Sedan.tsx +22 -22
- package/iconsvg/SVG/bodyType/SelectorCategoryCombi.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryCompact.tsx +20 -20
- package/iconsvg/SVG/bodyType/SelectorCategoryConvertible.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryCoupe.tsx +60 -60
- package/iconsvg/SVG/bodyType/SelectorCategoryMinibus.tsx +64 -64
- package/iconsvg/SVG/bodyType/SelectorCategoryOther.tsx +60 -60
- package/iconsvg/SVG/bodyType/SelectorCategorySedan.tsx +69 -69
- package/iconsvg/SVG/bodyType/SelectorCategorySuv.tsx +77 -77
- package/iconsvg/SVG/bodyType/SelectorCategoryTransporter.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryVan.tsx +72 -72
- package/iconsvg/SVG/bodyType/Small.tsx +23 -23
- package/iconsvg/SVG/bodyType/Suv.tsx +23 -23
- package/iconsvg/SVG/bodyType/Van.tsx +23 -23
- package/iconsvg/SVG/bodyType/Wagon.tsx +23 -23
- package/iconsvg/SVG/common/AddIcon.tsx +16 -16
- package/iconsvg/SVG/common/AddPlus.tsx +16 -16
- package/iconsvg/SVG/common/AddressDashboard.tsx +29 -29
- package/iconsvg/SVG/common/AddressIcon.tsx +20 -20
- package/iconsvg/SVG/common/ArrowDetailedAccordionBlue.tsx +26 -26
- package/iconsvg/SVG/common/ArrowDownBlue.tsx +21 -21
- package/iconsvg/SVG/common/ArrowSelect.tsx +23 -23
- package/iconsvg/SVG/common/ArrowStepDown.tsx +18 -18
- package/iconsvg/SVG/common/Autocheck.tsx +19 -19
- package/iconsvg/SVG/common/AutodeLogo.tsx +36 -36
- package/iconsvg/SVG/common/Avatar.tsx +17 -17
- package/iconsvg/SVG/common/BellGray.tsx +19 -19
- package/iconsvg/SVG/common/BigInfoTransparent.tsx +13 -13
- package/iconsvg/SVG/common/Browse.tsx +20 -20
- package/iconsvg/SVG/common/Calendar.tsx +24 -24
- package/iconsvg/SVG/common/CallbackDashboard.tsx +30 -30
- package/iconsvg/SVG/common/Camera.tsx +17 -17
- package/iconsvg/SVG/common/Car.tsx +16 -16
- package/iconsvg/SVG/common/CarBody.tsx +19 -19
- package/iconsvg/SVG/common/CarFront.tsx +43 -43
- package/iconsvg/SVG/common/CarInspectionCheck.tsx +21 -21
- package/iconsvg/SVG/common/CarInspectionScheme0.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme1.tsx +53 -53
- package/iconsvg/SVG/common/CarInspectionScheme2.tsx +52 -52
- package/iconsvg/SVG/common/CarInspectionScheme3.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme4.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme5.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme6.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionSchemeGeneral copy.tsx +24 -24
- package/iconsvg/SVG/common/CarInspectionSchemeGeneral.tsx +24 -24
- package/iconsvg/SVG/common/CheckBlue.tsx +18 -18
- package/iconsvg/SVG/common/CheckGreen.tsx +22 -22
- package/iconsvg/SVG/common/CheckMark.tsx +16 -16
- package/iconsvg/SVG/common/CheckWhite.tsx +19 -19
- package/iconsvg/SVG/common/Chevron.tsx +17 -17
- package/iconsvg/SVG/common/CircledCheckmark.tsx +25 -25
- package/iconsvg/SVG/common/Clock.tsx +18 -18
- package/iconsvg/SVG/common/Close.tsx +19 -19
- package/iconsvg/SVG/common/CloseGrey.tsx +22 -22
- package/iconsvg/SVG/common/ContactEmail.tsx +21 -21
- package/iconsvg/SVG/common/ContactPhone.tsx +28 -28
- package/iconsvg/SVG/common/CopyIcon copy.tsx +22 -22
- package/iconsvg/SVG/common/CopyIcon.tsx +22 -22
- package/iconsvg/SVG/common/CopyIconForDealer.tsx +21 -21
- package/iconsvg/SVG/common/DashboardIcon.tsx +20 -20
- package/iconsvg/SVG/common/DashboardQuestionMark.tsx +20 -20
- package/iconsvg/SVG/common/DealersIcon.tsx +20 -20
- package/iconsvg/SVG/common/DeleteCircle.tsx +31 -31
- package/iconsvg/SVG/common/DeleteV1Icon.tsx +18 -18
- package/iconsvg/SVG/common/DeliveryDashboard.tsx +25 -25
- package/iconsvg/SVG/common/DeliveryMail.tsx +24 -24
- package/iconsvg/SVG/common/Discount100De.tsx +18 -18
- package/iconsvg/SVG/common/Discount100En.tsx +19 -19
- package/iconsvg/SVG/common/Discount66De.tsx +28 -28
- package/iconsvg/SVG/common/Discount66En.tsx +20 -20
- package/iconsvg/SVG/common/DoneIcon.tsx +18 -18
- package/iconsvg/SVG/common/EditCircle.tsx +32 -32
- package/iconsvg/SVG/common/EditPriceIcon.tsx +20 -20
- package/iconsvg/SVG/common/EuroCurrency.tsx +18 -18
- package/iconsvg/SVG/common/Export.tsx +20 -20
- package/iconsvg/SVG/common/Eye.tsx +17 -17
- package/iconsvg/SVG/common/EyeCatch.tsx +19 -19
- package/iconsvg/SVG/common/FavoritesIcon.tsx +20 -20
- package/iconsvg/SVG/common/FilterRange.tsx +16 -16
- package/iconsvg/SVG/common/FilterToolBlack.tsx +23 -23
- package/iconsvg/SVG/common/FlagDe.tsx +21 -21
- package/iconsvg/SVG/common/FlagEn.tsx +43 -43
- package/iconsvg/SVG/common/GrayEnvelopeIcon.tsx +19 -19
- package/iconsvg/SVG/common/HamburgerMenuIcon.tsx +18 -18
- package/iconsvg/SVG/common/HandingOverDashboard.tsx +32 -32
- package/iconsvg/SVG/common/ImageSettingsIcon.tsx +20 -20
- package/iconsvg/SVG/common/Info.tsx +16 -16
- package/iconsvg/SVG/common/InfoIcon.tsx +17 -17
- package/iconsvg/SVG/common/InfoTransparent.tsx +18 -18
- package/iconsvg/SVG/common/LogoutIcon.tsx +20 -20
- package/iconsvg/SVG/common/MagnifyingGlass.tsx +31 -31
- package/iconsvg/SVG/common/MenuArrow.tsx +16 -16
- package/iconsvg/SVG/common/MenuGrey.tsx +22 -22
- package/iconsvg/SVG/common/MobileDeLogo.tsx +108 -108
- package/iconsvg/SVG/common/MyOrderIcon.tsx +20 -20
- package/iconsvg/SVG/common/MyVehiclesIcon.tsx +20 -20
- package/iconsvg/SVG/common/NewFlagDe.tsx +25 -25
- package/iconsvg/SVG/common/NewFlagEn.tsx +34 -34
- package/iconsvg/SVG/common/OrderReceivedDashboard.tsx +27 -27
- package/iconsvg/SVG/common/Package.tsx +30 -30
- package/iconsvg/SVG/common/Phone.tsx +18 -18
- package/iconsvg/SVG/common/PhoneGrey.tsx +22 -22
- package/iconsvg/SVG/common/PickupDashboard.tsx +30 -30
- package/iconsvg/SVG/common/Picture.tsx +24 -24
- package/iconsvg/SVG/common/Pictures.tsx +32 -32
- package/iconsvg/SVG/common/Plus.tsx +16 -16
- package/iconsvg/SVG/common/PlusNew.tsx +16 -16
- package/iconsvg/SVG/common/PreparationDashboard.tsx +29 -29
- package/iconsvg/SVG/common/ProfileDashboard.tsx +24 -24
- package/iconsvg/SVG/common/ProfileIcon.tsx +17 -17
- package/iconsvg/SVG/common/Question.tsx +19 -19
- package/iconsvg/SVG/common/QuestionBold.tsx +25 -25
- package/iconsvg/SVG/common/RegistrationDashboard.tsx +31 -31
- package/iconsvg/SVG/common/SavedSearchsIcon.tsx +20 -20
- package/iconsvg/SVG/common/Search.tsx +19 -19
- package/iconsvg/SVG/common/SearchGrey.tsx +22 -22
- package/iconsvg/SVG/common/SettingPenIcon.tsx +20 -20
- package/iconsvg/SVG/common/Share.tsx +16 -16
- package/iconsvg/SVG/common/ShoppingCart.tsx +18 -18
- package/iconsvg/SVG/common/SliderArrow.tsx +21 -21
- package/iconsvg/SVG/common/SliderEye.tsx +17 -17
- package/iconsvg/SVG/common/SortUpDownArrows.tsx +18 -18
- package/iconsvg/SVG/common/Speedometer.tsx +23 -23
- package/iconsvg/SVG/common/Star.tsx +20 -20
- package/iconsvg/SVG/common/StarNew.tsx +16 -16
- package/iconsvg/SVG/common/StarOutline.tsx +20 -20
- package/iconsvg/SVG/common/StarRoundedCorners.tsx +18 -18
- package/iconsvg/SVG/common/Stats.tsx +17 -17
- package/iconsvg/SVG/common/Step1.tsx +21 -21
- package/iconsvg/SVG/common/Step2.tsx +20 -20
- package/iconsvg/SVG/common/Step3.tsx +21 -21
- package/iconsvg/SVG/common/SupportCallbackIcon.tsx +20 -20
- package/iconsvg/SVG/common/Telephone.tsx +22 -22
- package/iconsvg/SVG/common/Time.tsx +17 -17
- package/iconsvg/SVG/common/Timetable.tsx +18 -18
- package/iconsvg/SVG/common/Trash.tsx +22 -22
- package/iconsvg/SVG/common/TrashRed.tsx +23 -23
- package/iconsvg/SVG/common/Upload.tsx +17 -17
- package/iconsvg/SVG/common/UserGrey.tsx +22 -22
- package/iconsvg/SVG/common/UserProfileIcon.tsx +20 -20
- package/iconsvg/SVG/common/ValidateFailure.tsx +21 -21
- package/iconsvg/SVG/common/ValidateSuccess.tsx +21 -21
- package/iconsvg/SVG/common/WarningTriangle.tsx +20 -20
- package/iconsvg/SVG/common/WhiteArrowUp.tsx +21 -21
- package/iconsvg/SVG/common/WhiteKey.tsx +21 -21
- package/iconsvg/SVG/common/WhitePeople.tsx +23 -23
- package/iconsvg/SVG/common/WhiteTick.tsx +19 -19
- package/iconsvg/SVG/flags/AT.tsx +19 -19
- package/iconsvg/SVG/flags/BE.tsx +20 -20
- package/iconsvg/SVG/flags/BG.tsx +20 -20
- package/iconsvg/SVG/flags/CH.tsx +22 -22
- package/iconsvg/SVG/flags/CZ.tsx +18 -18
- package/iconsvg/SVG/flags/DE.tsx +18 -18
- package/iconsvg/SVG/flags/DK.tsx +18 -18
- package/iconsvg/SVG/flags/ES.tsx +2585 -2585
- package/iconsvg/SVG/flags/FI.tsx +18 -18
- package/iconsvg/SVG/flags/FR.tsx +20 -20
- package/iconsvg/SVG/flags/GB.tsx +26 -26
- package/iconsvg/SVG/flags/HR.tsx +135 -135
- package/iconsvg/SVG/flags/HU.tsx +20 -20
- package/iconsvg/SVG/flags/IT.tsx +20 -20
- package/iconsvg/SVG/flags/LI.tsx +106 -106
- package/iconsvg/SVG/flags/LU.tsx +18 -18
- package/iconsvg/SVG/flags/NL.tsx +18 -18
- package/iconsvg/SVG/flags/NO.tsx +20 -20
- package/iconsvg/SVG/flags/PL.tsx +19 -19
- package/iconsvg/SVG/flags/RO.tsx +20 -20
- package/iconsvg/SVG/flags/RU.tsx +20 -20
- package/iconsvg/SVG/flags/SE.tsx +20 -20
- package/iconsvg/SVG/flags/SI.tsx +54 -54
- package/iconsvg/SVG/flags/SK.tsx +34 -34
- package/iconsvg/SVG/flags/UA.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/14DaysReturnPolicy.tsx +18 -18
- package/iconsvg/SVG/infoBlocks/AlertInfo.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/Autocheck.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/CheckTheStory.tsx +22 -22
- package/iconsvg/SVG/infoBlocks/CustomerServiceWhite.tsx +16 -16
- package/iconsvg/SVG/infoBlocks/Guarantee.tsx +16 -16
- package/iconsvg/SVG/infoBlocks/OrderWhite.tsx +13 -13
- package/iconsvg/SVG/infoBlocks/PriceGuarantee.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/PriceGuaranteeWhite.tsx +17 -17
- package/iconsvg/SVG/infoBlocks/TransportAndDelivery.tsx +21 -21
- package/iconsvg/SVG/infoBlocks/Warranty.tsx +23 -23
- package/iconsvg/SVG/popower/Mail.tsx +18 -18
- package/iconsvg/SVG/popower/Phone.tsx +19 -19
- package/iconsvg/SVG/popower/Schedule.tsx +18 -18
- package/iconsvg/SVG/searchWidgets/drive/AAllWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/AllWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/FrontWheelDrive.tsx +25 -25
- package/iconsvg/SVG/searchWidgets/drive/OtherWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/RearWheelDrive.tsx +25 -25
- package/iconsvg/SVG/searchWidgets/fuel/FuelDiesel.tsx +18 -18
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectrical.tsx +19 -19
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalDiesel.tsx +34 -34
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalPetrol.tsx +20 -20
- package/iconsvg/SVG/searchWidgets/fuel/FuelEthanol.tsx +53 -53
- package/iconsvg/SVG/searchWidgets/fuel/FuelHydrogen.tsx +24 -24
- package/iconsvg/SVG/searchWidgets/fuel/FuelLpg.tsx +24 -24
- package/iconsvg/SVG/searchWidgets/fuel/FuelNaturalGas.tsx +23 -23
- package/iconsvg/SVG/searchWidgets/fuel/FuelOther.tsx +28 -28
- package/iconsvg/SVG/searchWidgets/fuel/FuelPetrol.tsx +18 -18
- package/iconsvg/SVG/settings/Account.tsx +17 -17
- package/iconsvg/SVG/settings/DataUsage.tsx +17 -17
- package/iconsvg/SVG/settings/MarketResearch.tsx +17 -17
- package/iconsvg/SVG/settings/Newsletter.tsx +17 -17
- package/iconsvg/SVG/settings/RemoveEye.tsx +17 -17
- package/iconsvg/SVG/settings/RemoveEyeOff.tsx +17 -17
- package/iconsvg/SVG/settings/Security.tsx +17 -17
- package/iconsvg/SVG/settings/Warning.tsx +17 -17
- package/iconsvg/SVG/slider/360.tsx +23 -23
- package/iconsvg/SVG/slider/360New.tsx +20 -20
- package/iconsvg/SVG/slider/Checked.tsx +19 -19
- package/iconsvg/SVG/slider/DiscountRibbon.tsx +51 -51
- package/iconsvg/SVG/slider/DiscountRibbonMobile.tsx +47 -47
- package/iconsvg/SVG/slider/DiscountRibbonNew.tsx +29 -29
- package/iconsvg/SVG/slider/Easy.tsx +19 -19
- package/iconsvg/SVG/slider/Fullscreen.tsx +16 -16
- package/iconsvg/SVG/slider/FullscreenWindow.tsx +23 -23
- package/iconsvg/SVG/slider/Safe.tsx +19 -19
- package/iconsvg/SVG/slider/ToBuy.tsx +19 -19
- package/iconsvg/SVG/slider/YoutubeButton.tsx +26 -26
- package/iconsvg/SVG/slider/ZoomIn.tsx +21 -21
- package/iconsvg/SVG/slider/ZoomOut.tsx +21 -21
- package/iconsvg/SVG/social/AndroidLogo.tsx +18 -18
- package/iconsvg/SVG/social/Apple.tsx +19 -19
- package/iconsvg/SVG/social/FacebookF.tsx +19 -19
- package/iconsvg/SVG/social/GooglePlusG.tsx +19 -19
- package/iconsvg/SVG/social/Instagram.tsx +17 -17
- package/iconsvg/SVG/social/Pinterest.tsx +19 -19
- package/iconsvg/SVG/social/SharingInterface.tsx +21 -21
- package/iconsvg/SVG/social/Twitter.tsx +19 -19
- package/iconsvg/SVG/social/Youtube.tsx +19 -19
- package/iconsvg/SVG/vehicle/AboIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Abs.tsx +24 -24
- package/iconsvg/SVG/vehicle/AirCond.tsx +34 -34
- package/iconsvg/SVG/vehicle/Airbag.tsx +21 -21
- package/iconsvg/SVG/vehicle/AuxiliaryHeating.tsx +23 -23
- package/iconsvg/SVG/vehicle/Bluetooth.tsx +22 -22
- package/iconsvg/SVG/vehicle/BuyIcon.tsx +15 -15
- package/iconsvg/SVG/vehicle/CarAvailability.tsx +22 -22
- package/iconsvg/SVG/vehicle/CarInspectionCheck.tsx +21 -21
- package/iconsvg/SVG/vehicle/CarInspectionCross.tsx +21 -21
- package/iconsvg/SVG/vehicle/CheckoutChecked.tsx +15 -15
- package/iconsvg/SVG/vehicle/Co2.tsx +24 -24
- package/iconsvg/SVG/vehicle/CruiseControl.tsx +25 -25
- package/iconsvg/SVG/vehicle/Date.tsx +21 -21
- package/iconsvg/SVG/vehicle/Delivery.tsx +12 -12
- package/iconsvg/SVG/vehicle/Diesel.tsx +28 -28
- package/iconsvg/SVG/vehicle/Display.tsx +25 -25
- package/iconsvg/SVG/vehicle/Done.tsx +11 -11
- package/iconsvg/SVG/vehicle/Door.tsx +19 -19
- package/iconsvg/SVG/vehicle/DoubleDone.tsx +18 -18
- package/iconsvg/SVG/vehicle/EditIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/EmergencyBrakeAssistant.tsx +27 -27
- package/iconsvg/SVG/vehicle/Eps.tsx +24 -24
- package/iconsvg/SVG/vehicle/Esp.tsx +24 -24
- package/iconsvg/SVG/vehicle/FinancingIcon.tsx +20 -20
- package/iconsvg/SVG/vehicle/FuelConsumption.tsx +20 -20
- package/iconsvg/SVG/vehicle/Fueling.tsx +22 -22
- package/iconsvg/SVG/vehicle/FullDrive.tsx +24 -24
- package/iconsvg/SVG/vehicle/GasElectric.tsx +28 -28
- package/iconsvg/SVG/vehicle/HandsFreePhoneSystem.tsx +24 -24
- package/iconsvg/SVG/vehicle/Kw.tsx +23 -23
- package/iconsvg/SVG/vehicle/LastCrawledAt.tsx +22 -22
- package/iconsvg/SVG/vehicle/LeasingIcon.tsx +14 -14
- package/iconsvg/SVG/vehicle/Led.tsx +24 -24
- package/iconsvg/SVG/vehicle/LightSensor.tsx +22 -22
- package/iconsvg/SVG/vehicle/LinkAlternative.tsx +15 -15
- package/iconsvg/SVG/vehicle/Location.tsx +17 -17
- package/iconsvg/SVG/vehicle/MinusIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Mirror.tsx +19 -19
- package/iconsvg/SVG/vehicle/Navigation.tsx +27 -27
- package/iconsvg/SVG/vehicle/NewCar.tsx +21 -21
- package/iconsvg/SVG/vehicle/NoImage.tsx +17 -17
- package/iconsvg/SVG/vehicle/Owner.tsx +18 -18
- package/iconsvg/SVG/vehicle/PanoramicRoof.tsx +23 -23
- package/iconsvg/SVG/vehicle/ParkingAssistants.tsx +24 -24
- package/iconsvg/SVG/vehicle/PickYourself.tsx +18 -18
- package/iconsvg/SVG/vehicle/PlusIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Power.tsx +21 -21
- package/iconsvg/SVG/vehicle/Ps.tsx +19 -19
- package/iconsvg/SVG/vehicle/Question.tsx +24 -24
- package/iconsvg/SVG/vehicle/Seats.tsx +21 -21
- package/iconsvg/SVG/vehicle/SeatsHeating.tsx +26 -26
- package/iconsvg/SVG/vehicle/SelectorGearboxAutomatic.tsx +24 -24
- package/iconsvg/SVG/vehicle/SelectorGearboxManualShift.tsx +19 -19
- package/iconsvg/SVG/vehicle/SelectorGearboxOther.tsx +24 -24
- package/iconsvg/SVG/vehicle/SelectorGearboxSemiAutomatic.tsx +30 -30
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeAlcantara.tsx +225 -225
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeFabric.tsx +29 -29
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeFullLeather.tsx +29 -29
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeOther.tsx +26 -26
- package/iconsvg/SVG/vehicle/SelectorInteriorTypePartLeather.tsx +142 -142
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeSyntheticLeather.tsx +27 -27
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeVelours.tsx +39 -39
- package/iconsvg/SVG/vehicle/Shield.tsx +39 -39
- package/iconsvg/SVG/vehicle/Speedometer.tsx +17 -17
- package/iconsvg/SVG/vehicle/StartStopSystem.tsx +30 -30
- package/iconsvg/SVG/vehicle/Stop.tsx +25 -25
- package/iconsvg/SVG/vehicle/TickMark.tsx +21 -21
- package/iconsvg/SVG/vehicle/TrafficSignRecognition.tsx +29 -29
- package/iconsvg/SVG/vehicle/TrailerCoupling.tsx +24 -24
- package/iconsvg/SVG/vehicle/Transmission.tsx +27 -27
- package/iconsvg/SVG/vehicle/Wheel.tsx +43 -43
- package/iconsvg/SVG/vehicle/Wipers.tsx +22 -22
- package/iconsvg/SVG/vehicle/Wrench.tsx +17 -17
- package/iconsvg/index.ts +7 -7
- package/index.ts +18 -18
- package/locales/de/autobahn.json +676 -671
- package/locales/en/autobahn.json +676 -671
- package/locales/legacy/SearchDetailedPage.ts +205 -205
- package/locales/legacy/cbd.ts +719 -719
- package/locales/legacy/common.ts +109 -109
- package/locales/legacy/data.ts +1118 -1118
- package/locales/legacy/priceRating.ts +10 -10
- package/locales/legacy/sortingOptions.ts +21 -21
- package/media/images/raiting-stars-min.svg +7 -7
- package/media/images/refresh-button.svg +49 -49
- package/media/images/user-icon.svg +16 -16
- package/media/svg/infoBlocks/whyAutodeIconSet-F.svg +9 -9
- package/media/svg/infoBlocks/whyAutodeIconSet-G.svg +8 -8
- package/media/svg/infoBlocks/whyAutodeIconSet-Q.svg +6 -6
- package/media/svg/infoBlocks/whyAutodeIconSet-R.svg +9 -9
- package/media/svg/usp/icon1.svg +16 -16
- package/media/svg/usp/icon2.svg +13 -13
- package/media/svg/usp/icon3.svg +10 -10
- package/media/svg/usp/icon4.svg +14 -14
- package/package.json +30 -30
- package/schemes/AggregationScheme.ts +73 -73
- package/searchFilters/filterOptions.ts +119 -119
- package/searchFilters/filterProps.ts +35 -35
- package/searchFilters/index.ts +15 -15
- package/theme/autobahn.css +25 -25
- package/theme/colors_and_type.css +113 -113
- package/theme/md3.css +2045 -2034
- package/types/types.ts +373 -373
- package/types.ts +8 -8
- package/ui/Accordion.tsx +134 -134
- package/ui/Button.tsx +62 -62
- package/ui/CardCarousel.tsx +133 -133
- package/ui/Chip.tsx +29 -29
- package/ui/DatePicker.tsx +145 -145
- package/ui/Dropdown.tsx +205 -205
- package/ui/FileUpload.tsx +154 -154
- package/ui/FormCheckbox.tsx +79 -79
- package/ui/FormDropdown.tsx +327 -327
- package/ui/FormField.tsx +88 -88
- package/ui/FormRadio.tsx +93 -93
- package/ui/FormRadioGroup.tsx +106 -106
- package/ui/Icon.tsx +391 -391
- package/ui/IconButton.tsx +44 -44
- package/ui/Modal.tsx +187 -187
- package/ui/Pagination.tsx +140 -140
- package/ui/Price.tsx +25 -25
- package/ui/PriceEvalBar.tsx +48 -48
- package/ui/SaveChip.tsx +34 -34
- package/ui/Segmented.tsx +48 -48
- package/ui/Skeleton.tsx +75 -75
- package/ui/Spec.tsx +24 -24
- package/ui/Stars.tsx +29 -29
- package/ui/StatChip.tsx +21 -21
- package/ui/Stepper.tsx +106 -106
- package/ui/Switch.tsx +65 -65
- package/ui/Table.tsx +156 -156
- package/ui/Textarea.tsx +58 -58
- package/ui/index.ts +88 -88
- package/utils/CommonUtils.ts +648 -648
- package/utils/DateUtils.ts +101 -101
- package/utils/index.ts +74 -74
- package/utils/power.ts +11 -11
- package/utils/query.ts +21 -21
- package/vdp/FinanceCalculator.tsx +465 -465
- package/vdp/VdpModules.tsx +1490 -1490
- package/vdp/VdpViewer.tsx +209 -209
- package/vdp/index.ts +75 -75
- package/vdp/types.ts +197 -197
- package/vehiclesProps/cbdSelectors.ts +117 -117
- package/vehiclesProps/decoratedLightProps.tsx +572 -572
- package/vehiclesProps/decoratedProps.tsx +1746 -1746
- package/vehiclesProps/equipment.ts +129 -129
- package/vehiclesProps/vehicleDetails.ts +428 -428
- package/widgets/SearchBox.tsx +256 -256
- package/widgets/index.ts +5 -5
package/assets/autode-logo.svg
CHANGED
|
@@ -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;
|