@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/ui/IconButton.tsx
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import Icon from './Icon';
|
|
4
|
-
|
|
5
|
-
export interface IconButtonProps {
|
|
6
|
-
/** kebab-case lucide icon name. */
|
|
7
|
-
name: string;
|
|
8
|
-
filled?: boolean;
|
|
9
|
-
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
10
|
-
/** accessible label (aria-label). */
|
|
11
|
-
label?: string;
|
|
12
|
-
color?: string;
|
|
13
|
-
/** when active, tints + fills the icon with the primary color. */
|
|
14
|
-
active?: boolean;
|
|
15
|
-
size?: number;
|
|
16
|
-
style?: React.CSSProperties;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const IconButton: React.FunctionComponent<IconButtonProps> = ({
|
|
20
|
-
name,
|
|
21
|
-
filled,
|
|
22
|
-
onClick,
|
|
23
|
-
label,
|
|
24
|
-
color,
|
|
25
|
-
active,
|
|
26
|
-
size = 20,
|
|
27
|
-
style,
|
|
28
|
-
}) => (
|
|
29
|
-
<button
|
|
30
|
-
className={'icon-btn' + (filled ? ' icon-btn--filled' : '')}
|
|
31
|
-
onClick={onClick}
|
|
32
|
-
aria-label={label}
|
|
33
|
-
style={style}
|
|
34
|
-
>
|
|
35
|
-
<Icon
|
|
36
|
-
name={name}
|
|
37
|
-
size={size}
|
|
38
|
-
color={active ? 'var(--md-primary)' : color}
|
|
39
|
-
style={{ fill: active ? 'var(--md-primary)' : 'none' }}
|
|
40
|
-
/>
|
|
41
|
-
</button>
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
export default IconButton;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import Icon from './Icon';
|
|
4
|
+
|
|
5
|
+
export interface IconButtonProps {
|
|
6
|
+
/** kebab-case lucide icon name. */
|
|
7
|
+
name: string;
|
|
8
|
+
filled?: boolean;
|
|
9
|
+
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
10
|
+
/** accessible label (aria-label). */
|
|
11
|
+
label?: string;
|
|
12
|
+
color?: string;
|
|
13
|
+
/** when active, tints + fills the icon with the primary color. */
|
|
14
|
+
active?: boolean;
|
|
15
|
+
size?: number;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const IconButton: React.FunctionComponent<IconButtonProps> = ({
|
|
20
|
+
name,
|
|
21
|
+
filled,
|
|
22
|
+
onClick,
|
|
23
|
+
label,
|
|
24
|
+
color,
|
|
25
|
+
active,
|
|
26
|
+
size = 20,
|
|
27
|
+
style,
|
|
28
|
+
}) => (
|
|
29
|
+
<button
|
|
30
|
+
className={'icon-btn' + (filled ? ' icon-btn--filled' : '')}
|
|
31
|
+
onClick={onClick}
|
|
32
|
+
aria-label={label}
|
|
33
|
+
style={style}
|
|
34
|
+
>
|
|
35
|
+
<Icon
|
|
36
|
+
name={name}
|
|
37
|
+
size={size}
|
|
38
|
+
color={active ? 'var(--md-primary)' : color}
|
|
39
|
+
style={{ fill: active ? 'var(--md-primary)' : 'none' }}
|
|
40
|
+
/>
|
|
41
|
+
</button>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export default IconButton;
|
package/ui/Modal.tsx
CHANGED
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
// Autobahn (auto.de redesign) — md3 dialog (modal).
|
|
2
|
-
//
|
|
3
|
-
// A real MD3 dialog used by the new Autobahn pages in place of the legacy fe-ui-core
|
|
4
|
-
// modals (which the page shows via appStore.showModal('SOME_ID', props) and a global
|
|
5
|
-
// modal host renders into document.body — OUTSIDE the page's `.md3` subtree, so the
|
|
6
|
-
// scoped md3 theme is lost there).
|
|
7
|
-
//
|
|
8
|
-
// To keep the md3 tokens, this component does NOT render inline: it ReactDOM.createPortal's
|
|
9
|
-
// into a freshly-appended `<div className="md3">` on document.body, so `--md-*` tokens and
|
|
10
|
-
// every `.md3 .xxx` rule resolve correctly even though the DOM node sits at body level.
|
|
11
|
-
//
|
|
12
|
-
// Behaviour parity with a typical dialog:
|
|
13
|
-
// - controlled via `open`; `onClose` fires on scrim click (when dismissOnScrim),
|
|
14
|
-
// the close IconButton, and Esc.
|
|
15
|
-
// - scrim ~50% black; body scroll-locked while open; basic focus trap (Tab/Shift+Tab
|
|
16
|
-
// cycle within the surface, focus moves into the dialog on open and is restored to the
|
|
17
|
-
// previously-focused element on close).
|
|
18
|
-
// - a11y: role=dialog, aria-modal, aria-labelledby wired to the title when present.
|
|
19
|
-
//
|
|
20
|
-
// Pure/presentational — no store/API access beyond document/body (all SSR-guarded). The
|
|
21
|
-
// portal root carries `className="md3"` so the surface renders correctly even at body level.
|
|
22
|
-
|
|
23
|
-
import * as React from 'react';
|
|
24
|
-
import * as ReactDOM from 'react-dom';
|
|
25
|
-
|
|
26
|
-
import IconButton from './IconButton';
|
|
27
|
-
|
|
28
|
-
export type ModalSize = 'sm' | 'md' | 'lg';
|
|
29
|
-
|
|
30
|
-
export interface ModalProps {
|
|
31
|
-
/** whether the dialog is mounted/visible. */
|
|
32
|
-
open: boolean;
|
|
33
|
-
/** fired on scrim click (if dismissOnScrim), the close button, or Esc. */
|
|
34
|
-
onClose: () => void;
|
|
35
|
-
/** dialog heading; when set, wires aria-labelledby and renders the title row label. */
|
|
36
|
-
title?: React.ReactNode;
|
|
37
|
-
/** dialog body content (scrolls when taller than the viewport). */
|
|
38
|
-
children?: React.ReactNode;
|
|
39
|
-
/** optional actions row pinned to the bottom of the surface. */
|
|
40
|
-
footer?: React.ReactNode;
|
|
41
|
-
/** surface max-width preset (default 'md'). */
|
|
42
|
-
size?: ModalSize;
|
|
43
|
-
/** close when the scrim (backdrop) is clicked (default true). */
|
|
44
|
-
dismissOnScrim?: boolean;
|
|
45
|
-
/** extra class(es) appended on the surface (layout hooks). */
|
|
46
|
-
className?: string;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// focusable descendants used by the basic focus trap.
|
|
50
|
-
const FOCUSABLE =
|
|
51
|
-
'a[href],area[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
52
|
-
|
|
53
|
-
const Modal: React.FunctionComponent<ModalProps> = ({
|
|
54
|
-
open,
|
|
55
|
-
onClose,
|
|
56
|
-
title,
|
|
57
|
-
children,
|
|
58
|
-
footer,
|
|
59
|
-
size = 'md',
|
|
60
|
-
dismissOnScrim = true,
|
|
61
|
-
className,
|
|
62
|
-
}) => {
|
|
63
|
-
const surfaceRef = React.useRef<HTMLDivElement | null>(null);
|
|
64
|
-
// the element focused before the dialog opened, so focus can be restored on close.
|
|
65
|
-
const prevFocusRef = React.useRef<HTMLElement | null>(null);
|
|
66
|
-
// stable id for aria-labelledby (avoids Math.random/Date.now, unavailable in this env).
|
|
67
|
-
const titleId = React.useMemo(
|
|
68
|
-
() => (title ? `mmodal-title-${Math.round((surfaceRef.current ? 1 : 0))}-${size}` : undefined),
|
|
69
|
-
[title, size],
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
// The portal root: a div.md3 appended to body so the scoped theme applies at body level.
|
|
73
|
-
// Created lazily and only in the browser (SSR-guarded), reused for the component's life.
|
|
74
|
-
const portalRoot = React.useMemo<HTMLDivElement | null>(() => {
|
|
75
|
-
if (typeof document === 'undefined') return null;
|
|
76
|
-
const el = document.createElement('div');
|
|
77
|
-
el.className = 'md3';
|
|
78
|
-
return el;
|
|
79
|
-
}, []);
|
|
80
|
-
|
|
81
|
-
// mount/unmount the portal root on body while open; restore body scroll + focus on close.
|
|
82
|
-
React.useEffect(() => {
|
|
83
|
-
if (!open || !portalRoot || typeof document === 'undefined') return undefined;
|
|
84
|
-
|
|
85
|
-
prevFocusRef.current = (document.activeElement as HTMLElement) || null;
|
|
86
|
-
document.body.appendChild(portalRoot);
|
|
87
|
-
|
|
88
|
-
// body scroll lock (preserve and restore the prior inline overflow).
|
|
89
|
-
const prevOverflow = document.body.style.overflow;
|
|
90
|
-
document.body.style.overflow = 'hidden';
|
|
91
|
-
|
|
92
|
-
// move focus into the dialog (first focusable, else the surface itself).
|
|
93
|
-
const surface = surfaceRef.current;
|
|
94
|
-
if (surface) {
|
|
95
|
-
const first = surface.querySelector<HTMLElement>(FOCUSABLE);
|
|
96
|
-
(first || surface).focus();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return () => {
|
|
100
|
-
document.body.style.overflow = prevOverflow;
|
|
101
|
-
if (portalRoot.parentNode) portalRoot.parentNode.removeChild(portalRoot);
|
|
102
|
-
// restore focus to whatever was focused before opening.
|
|
103
|
-
if (prevFocusRef.current && prevFocusRef.current.focus) prevFocusRef.current.focus();
|
|
104
|
-
};
|
|
105
|
-
}, [open, portalRoot]);
|
|
106
|
-
|
|
107
|
-
// Esc to close + basic Tab focus trap, bound at the document level while open.
|
|
108
|
-
React.useEffect(() => {
|
|
109
|
-
if (!open || typeof document === 'undefined') return undefined;
|
|
110
|
-
const onKeyDown = (e: KeyboardEvent) => {
|
|
111
|
-
if (e.key === 'Escape') {
|
|
112
|
-
e.preventDefault();
|
|
113
|
-
onClose();
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (e.key !== 'Tab') return;
|
|
117
|
-
const surface = surfaceRef.current;
|
|
118
|
-
if (!surface) return;
|
|
119
|
-
const nodes = Array.prototype.slice.call(
|
|
120
|
-
surface.querySelectorAll<HTMLElement>(FOCUSABLE),
|
|
121
|
-
) as HTMLElement[];
|
|
122
|
-
if (!nodes.length) {
|
|
123
|
-
// nothing focusable inside — keep focus on the surface.
|
|
124
|
-
e.preventDefault();
|
|
125
|
-
surface.focus();
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const first = nodes[0];
|
|
129
|
-
const last = nodes[nodes.length - 1];
|
|
130
|
-
const active = document.activeElement as HTMLElement | null;
|
|
131
|
-
// wrap at the edges; also pull focus back in if it has escaped the surface.
|
|
132
|
-
if (e.shiftKey) {
|
|
133
|
-
if (active === first || !surface.contains(active)) {
|
|
134
|
-
e.preventDefault();
|
|
135
|
-
last.focus();
|
|
136
|
-
}
|
|
137
|
-
} else if (active === last || !surface.contains(active)) {
|
|
138
|
-
e.preventDefault();
|
|
139
|
-
first.focus();
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
document.addEventListener('keydown', onKeyDown, true);
|
|
143
|
-
return () => document.removeEventListener('keydown', onKeyDown, true);
|
|
144
|
-
}, [open, onClose]);
|
|
145
|
-
|
|
146
|
-
if (!open || !portalRoot) return null;
|
|
147
|
-
|
|
148
|
-
const surfaceCls = ['mmodal', `mmodal--${size}`, className].filter(Boolean).join(' ');
|
|
149
|
-
|
|
150
|
-
return ReactDOM.createPortal(
|
|
151
|
-
<div
|
|
152
|
-
className="mmodal-scrim"
|
|
153
|
-
onMouseDown={(e) => {
|
|
154
|
-
// only a click that starts AND lands on the scrim itself dismisses (not a drag
|
|
155
|
-
// that ends on the backdrop after starting inside the surface).
|
|
156
|
-
if (dismissOnScrim && e.target === e.currentTarget) onClose();
|
|
157
|
-
}}
|
|
158
|
-
>
|
|
159
|
-
<div
|
|
160
|
-
ref={surfaceRef}
|
|
161
|
-
className={surfaceCls}
|
|
162
|
-
role="dialog"
|
|
163
|
-
aria-modal="true"
|
|
164
|
-
aria-labelledby={title ? titleId : undefined}
|
|
165
|
-
tabIndex={-1}
|
|
166
|
-
onMouseDown={(e) => e.stopPropagation()}
|
|
167
|
-
>
|
|
168
|
-
{/* head row always renders so the close button is always present. */}
|
|
169
|
-
<div className="mmodal-head">
|
|
170
|
-
{title ? (
|
|
171
|
-
<h2 id={titleId} className="mmodal-title md-headline-sm">
|
|
172
|
-
{title}
|
|
173
|
-
</h2>
|
|
174
|
-
) : (
|
|
175
|
-
<span className="mmodal-title" aria-hidden="true" />
|
|
176
|
-
)}
|
|
177
|
-
<IconButton name="x" label="Schließen" onClick={onClose} />
|
|
178
|
-
</div>
|
|
179
|
-
<div className="mmodal-body">{children}</div>
|
|
180
|
-
{footer ? <div className="mmodal-foot">{footer}</div> : null}
|
|
181
|
-
</div>
|
|
182
|
-
</div>,
|
|
183
|
-
portalRoot,
|
|
184
|
-
);
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
export default Modal;
|
|
1
|
+
// Autobahn (auto.de redesign) — md3 dialog (modal).
|
|
2
|
+
//
|
|
3
|
+
// A real MD3 dialog used by the new Autobahn pages in place of the legacy fe-ui-core
|
|
4
|
+
// modals (which the page shows via appStore.showModal('SOME_ID', props) and a global
|
|
5
|
+
// modal host renders into document.body — OUTSIDE the page's `.md3` subtree, so the
|
|
6
|
+
// scoped md3 theme is lost there).
|
|
7
|
+
//
|
|
8
|
+
// To keep the md3 tokens, this component does NOT render inline: it ReactDOM.createPortal's
|
|
9
|
+
// into a freshly-appended `<div className="md3">` on document.body, so `--md-*` tokens and
|
|
10
|
+
// every `.md3 .xxx` rule resolve correctly even though the DOM node sits at body level.
|
|
11
|
+
//
|
|
12
|
+
// Behaviour parity with a typical dialog:
|
|
13
|
+
// - controlled via `open`; `onClose` fires on scrim click (when dismissOnScrim),
|
|
14
|
+
// the close IconButton, and Esc.
|
|
15
|
+
// - scrim ~50% black; body scroll-locked while open; basic focus trap (Tab/Shift+Tab
|
|
16
|
+
// cycle within the surface, focus moves into the dialog on open and is restored to the
|
|
17
|
+
// previously-focused element on close).
|
|
18
|
+
// - a11y: role=dialog, aria-modal, aria-labelledby wired to the title when present.
|
|
19
|
+
//
|
|
20
|
+
// Pure/presentational — no store/API access beyond document/body (all SSR-guarded). The
|
|
21
|
+
// portal root carries `className="md3"` so the surface renders correctly even at body level.
|
|
22
|
+
|
|
23
|
+
import * as React from 'react';
|
|
24
|
+
import * as ReactDOM from 'react-dom';
|
|
25
|
+
|
|
26
|
+
import IconButton from './IconButton';
|
|
27
|
+
|
|
28
|
+
export type ModalSize = 'sm' | 'md' | 'lg';
|
|
29
|
+
|
|
30
|
+
export interface ModalProps {
|
|
31
|
+
/** whether the dialog is mounted/visible. */
|
|
32
|
+
open: boolean;
|
|
33
|
+
/** fired on scrim click (if dismissOnScrim), the close button, or Esc. */
|
|
34
|
+
onClose: () => void;
|
|
35
|
+
/** dialog heading; when set, wires aria-labelledby and renders the title row label. */
|
|
36
|
+
title?: React.ReactNode;
|
|
37
|
+
/** dialog body content (scrolls when taller than the viewport). */
|
|
38
|
+
children?: React.ReactNode;
|
|
39
|
+
/** optional actions row pinned to the bottom of the surface. */
|
|
40
|
+
footer?: React.ReactNode;
|
|
41
|
+
/** surface max-width preset (default 'md'). */
|
|
42
|
+
size?: ModalSize;
|
|
43
|
+
/** close when the scrim (backdrop) is clicked (default true). */
|
|
44
|
+
dismissOnScrim?: boolean;
|
|
45
|
+
/** extra class(es) appended on the surface (layout hooks). */
|
|
46
|
+
className?: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// focusable descendants used by the basic focus trap.
|
|
50
|
+
const FOCUSABLE =
|
|
51
|
+
'a[href],area[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
52
|
+
|
|
53
|
+
const Modal: React.FunctionComponent<ModalProps> = ({
|
|
54
|
+
open,
|
|
55
|
+
onClose,
|
|
56
|
+
title,
|
|
57
|
+
children,
|
|
58
|
+
footer,
|
|
59
|
+
size = 'md',
|
|
60
|
+
dismissOnScrim = true,
|
|
61
|
+
className,
|
|
62
|
+
}) => {
|
|
63
|
+
const surfaceRef = React.useRef<HTMLDivElement | null>(null);
|
|
64
|
+
// the element focused before the dialog opened, so focus can be restored on close.
|
|
65
|
+
const prevFocusRef = React.useRef<HTMLElement | null>(null);
|
|
66
|
+
// stable id for aria-labelledby (avoids Math.random/Date.now, unavailable in this env).
|
|
67
|
+
const titleId = React.useMemo(
|
|
68
|
+
() => (title ? `mmodal-title-${Math.round((surfaceRef.current ? 1 : 0))}-${size}` : undefined),
|
|
69
|
+
[title, size],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// The portal root: a div.md3 appended to body so the scoped theme applies at body level.
|
|
73
|
+
// Created lazily and only in the browser (SSR-guarded), reused for the component's life.
|
|
74
|
+
const portalRoot = React.useMemo<HTMLDivElement | null>(() => {
|
|
75
|
+
if (typeof document === 'undefined') return null;
|
|
76
|
+
const el = document.createElement('div');
|
|
77
|
+
el.className = 'md3';
|
|
78
|
+
return el;
|
|
79
|
+
}, []);
|
|
80
|
+
|
|
81
|
+
// mount/unmount the portal root on body while open; restore body scroll + focus on close.
|
|
82
|
+
React.useEffect(() => {
|
|
83
|
+
if (!open || !portalRoot || typeof document === 'undefined') return undefined;
|
|
84
|
+
|
|
85
|
+
prevFocusRef.current = (document.activeElement as HTMLElement) || null;
|
|
86
|
+
document.body.appendChild(portalRoot);
|
|
87
|
+
|
|
88
|
+
// body scroll lock (preserve and restore the prior inline overflow).
|
|
89
|
+
const prevOverflow = document.body.style.overflow;
|
|
90
|
+
document.body.style.overflow = 'hidden';
|
|
91
|
+
|
|
92
|
+
// move focus into the dialog (first focusable, else the surface itself).
|
|
93
|
+
const surface = surfaceRef.current;
|
|
94
|
+
if (surface) {
|
|
95
|
+
const first = surface.querySelector<HTMLElement>(FOCUSABLE);
|
|
96
|
+
(first || surface).focus();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return () => {
|
|
100
|
+
document.body.style.overflow = prevOverflow;
|
|
101
|
+
if (portalRoot.parentNode) portalRoot.parentNode.removeChild(portalRoot);
|
|
102
|
+
// restore focus to whatever was focused before opening.
|
|
103
|
+
if (prevFocusRef.current && prevFocusRef.current.focus) prevFocusRef.current.focus();
|
|
104
|
+
};
|
|
105
|
+
}, [open, portalRoot]);
|
|
106
|
+
|
|
107
|
+
// Esc to close + basic Tab focus trap, bound at the document level while open.
|
|
108
|
+
React.useEffect(() => {
|
|
109
|
+
if (!open || typeof document === 'undefined') return undefined;
|
|
110
|
+
const onKeyDown = (e: KeyboardEvent) => {
|
|
111
|
+
if (e.key === 'Escape') {
|
|
112
|
+
e.preventDefault();
|
|
113
|
+
onClose();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (e.key !== 'Tab') return;
|
|
117
|
+
const surface = surfaceRef.current;
|
|
118
|
+
if (!surface) return;
|
|
119
|
+
const nodes = Array.prototype.slice.call(
|
|
120
|
+
surface.querySelectorAll<HTMLElement>(FOCUSABLE),
|
|
121
|
+
) as HTMLElement[];
|
|
122
|
+
if (!nodes.length) {
|
|
123
|
+
// nothing focusable inside — keep focus on the surface.
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
surface.focus();
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const first = nodes[0];
|
|
129
|
+
const last = nodes[nodes.length - 1];
|
|
130
|
+
const active = document.activeElement as HTMLElement | null;
|
|
131
|
+
// wrap at the edges; also pull focus back in if it has escaped the surface.
|
|
132
|
+
if (e.shiftKey) {
|
|
133
|
+
if (active === first || !surface.contains(active)) {
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
last.focus();
|
|
136
|
+
}
|
|
137
|
+
} else if (active === last || !surface.contains(active)) {
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
first.focus();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
document.addEventListener('keydown', onKeyDown, true);
|
|
143
|
+
return () => document.removeEventListener('keydown', onKeyDown, true);
|
|
144
|
+
}, [open, onClose]);
|
|
145
|
+
|
|
146
|
+
if (!open || !portalRoot) return null;
|
|
147
|
+
|
|
148
|
+
const surfaceCls = ['mmodal', `mmodal--${size}`, className].filter(Boolean).join(' ');
|
|
149
|
+
|
|
150
|
+
return ReactDOM.createPortal(
|
|
151
|
+
<div
|
|
152
|
+
className="mmodal-scrim"
|
|
153
|
+
onMouseDown={(e) => {
|
|
154
|
+
// only a click that starts AND lands on the scrim itself dismisses (not a drag
|
|
155
|
+
// that ends on the backdrop after starting inside the surface).
|
|
156
|
+
if (dismissOnScrim && e.target === e.currentTarget) onClose();
|
|
157
|
+
}}
|
|
158
|
+
>
|
|
159
|
+
<div
|
|
160
|
+
ref={surfaceRef}
|
|
161
|
+
className={surfaceCls}
|
|
162
|
+
role="dialog"
|
|
163
|
+
aria-modal="true"
|
|
164
|
+
aria-labelledby={title ? titleId : undefined}
|
|
165
|
+
tabIndex={-1}
|
|
166
|
+
onMouseDown={(e) => e.stopPropagation()}
|
|
167
|
+
>
|
|
168
|
+
{/* head row always renders so the close button is always present. */}
|
|
169
|
+
<div className="mmodal-head">
|
|
170
|
+
{title ? (
|
|
171
|
+
<h2 id={titleId} className="mmodal-title md-headline-sm">
|
|
172
|
+
{title}
|
|
173
|
+
</h2>
|
|
174
|
+
) : (
|
|
175
|
+
<span className="mmodal-title" aria-hidden="true" />
|
|
176
|
+
)}
|
|
177
|
+
<IconButton name="x" label="Schließen" onClick={onClose} />
|
|
178
|
+
</div>
|
|
179
|
+
<div className="mmodal-body">{children}</div>
|
|
180
|
+
{footer ? <div className="mmodal-foot">{footer}</div> : null}
|
|
181
|
+
</div>
|
|
182
|
+
</div>,
|
|
183
|
+
portalRoot,
|
|
184
|
+
);
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
export default Modal;
|