@via-profit/ui-kit 0.2.6 → 0.4.0
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/Accordion/AccordionContainer.js +11 -11
- package/Accordion/AccordionContent.js +16 -7
- package/Accordion/AccordionHeader.d.ts +22 -0
- package/Accordion/AccordionHeader.js +35 -18
- package/Accordion/Chevron.js +3 -3
- package/Accordion/index.d.ts +12 -8
- package/Accordion/index.js +21 -6
- package/Autocomplete/AutocompleteContainer.d.ts +5 -9
- package/Autocomplete/AutocompleteContainer.js +125 -57
- package/Autocomplete/AutocompleteTagsInput.d.ts +15 -0
- package/Autocomplete/AutocompleteTagsInput.js +65 -0
- package/Autocomplete/context.d.ts +1 -0
- package/Autocomplete/context.js +5 -5
- package/Autocomplete/index.js +10 -7
- package/Avatar/AvatarBase.js +1 -1
- package/Avatar/AvatarContainer.js +6 -11
- package/Avatar/AvatarPicture.d.ts +9 -1
- package/Avatar/AvatarPicture.js +4 -3
- package/Avatar/index.js +10 -10
- package/Badge/BadgeBase.d.ts +9 -0
- package/Badge/BadgeBase.js +21 -3
- package/Badge/BadgeContainer.js +2 -1
- package/Badge/BadgeDeleteButton.d.ts +1 -1
- package/Badge/BadgeOutlined.d.ts +1 -1
- package/Badge/BadgeOutlined.js +5 -80
- package/Badge/BadgeStandard.d.ts +1 -1
- package/Badge/BadgeStandard.js +5 -91
- package/Badge/BadgeStyled.d.ts +5 -0
- package/Badge/BadgeStyled.js +125 -0
- package/Badge/index.d.ts +2 -2
- package/Badge/index.js +3 -20
- package/Button/ButtonBase.js +8 -4
- package/Button/ButtonContainer.js +2 -0
- package/Button/ButtonIconWrapper.d.ts +1 -1
- package/Button/ButtonOutlined.d.ts +1 -1
- package/Button/ButtonOutlined.js +5 -80
- package/Button/ButtonPlain.d.ts +1 -1
- package/Button/ButtonPlain.js +5 -85
- package/Button/ButtonStandard.d.ts +1 -1
- package/Button/ButtonStandard.js +5 -97
- package/Button/ButtonStyled.d.ts +10 -0
- package/Button/ButtonStyled.js +205 -0
- package/Button/index.d.ts +5 -5
- package/Button/index.js +3 -24
- package/ButtonGroup/ButtonGroupContext.d.ts +21 -0
- package/ButtonGroup/ButtonGroupContext.js +11 -0
- package/ButtonGroup/index.d.ts +76 -0
- package/ButtonGroup/index.js +132 -0
- package/CHANGELOG.md +160 -0
- package/Calendar/CalendarCell.js +11 -4
- package/Calendar/CalendarComponent.d.ts +15 -4
- package/Calendar/CalendarComponent.js +201 -103
- package/Calendar/CalendarDayBadge.d.ts +1 -1
- package/Calendar/CalendarMonthCell.js +1 -11
- package/Calendar/CalendarWeekDayLabel.js +3 -1
- package/Calendar/CalendarWeekDaysBar.js +6 -1
- package/Calendar/CalendarYearCell.js +1 -16
- package/Calendar/CalendarYearsSelector.d.ts +0 -1
- package/Calendar/CalendarYearsSelector.js +33 -35
- package/Calendar/use-calendar.d.ts +4 -3
- package/Calendar/use-calendar.js +31 -24
- package/Checkbox/CheckboxAsterisk.d.ts +13 -0
- package/{Autocomplete2/Autocomplete2TextField.js → Checkbox/CheckboxAsterisk.js} +24 -10
- package/Checkbox/CheckboxBox.d.ts +22 -0
- package/Checkbox/CheckboxBox.js +88 -0
- package/Checkbox/CheckboxContainer.d.ts +27 -0
- package/Checkbox/CheckboxContainer.js +38 -0
- package/Checkbox/CheckboxErrorText.d.ts +6 -0
- package/Checkbox/CheckboxErrorText.js +76 -0
- package/Checkbox/CheckboxIcon.d.ts +10 -0
- package/Checkbox/CheckboxIcon.js +57 -0
- package/Checkbox/CheckboxTextWrapper.d.ts +4 -0
- package/Checkbox/CheckboxTextWrapper.js +29 -0
- package/Checkbox/CheckboxWrapper.d.ts +4 -0
- package/Checkbox/CheckboxWrapper.js +29 -0
- package/Checkbox/index.d.ts +144 -0
- package/Checkbox/index.js +71 -0
- package/Checkbox/useCheckboxColor.d.ts +6 -0
- package/Checkbox/useCheckboxColor.js +33 -0
- package/ClickOutside/index.d.ts +6 -0
- package/ClickOutside/index.js +19 -3
- package/Color/Color.d.ts +4 -4
- package/Color/Color.js +9 -5
- package/Color/ColorGenerator.d.ts +5 -1
- package/Color/ColorParser.d.ts +9 -0
- package/Color/ColorParser.js +52 -12
- package/CountryFlags/AC.js +5 -1
- package/CountryFlags/AD.js +5 -1
- package/CountryFlags/AE.js +5 -1
- package/CountryFlags/AF.js +5 -1
- package/CountryFlags/AG.js +5 -1
- package/CountryFlags/AI.js +5 -1
- package/CountryFlags/AL.js +5 -1
- package/CountryFlags/AM.js +5 -1
- package/CountryFlags/AO.js +5 -1
- package/CountryFlags/AQ.js +5 -1
- package/CountryFlags/AR.js +5 -1
- package/CountryFlags/AS.js +5 -1
- package/CountryFlags/AT.js +5 -1
- package/CountryFlags/AU.js +5 -1
- package/CountryFlags/AW.js +5 -1
- package/CountryFlags/AX.js +5 -1
- package/CountryFlags/AZ.js +5 -1
- package/CountryFlags/BA.js +5 -1
- package/CountryFlags/BB.js +5 -1
- package/CountryFlags/BD.js +5 -1
- package/CountryFlags/BE.js +5 -1
- package/CountryFlags/BF.js +5 -1
- package/CountryFlags/BG.js +5 -1
- package/CountryFlags/BH.js +5 -1
- package/CountryFlags/BI.js +5 -1
- package/CountryFlags/BJ.js +5 -1
- package/CountryFlags/BL.js +5 -1
- package/CountryFlags/BM.js +5 -1
- package/CountryFlags/BN.js +5 -1
- package/CountryFlags/BO.js +5 -1
- package/CountryFlags/BQ.js +5 -1
- package/CountryFlags/BR.js +5 -1
- package/CountryFlags/BS.js +5 -1
- package/CountryFlags/BT.js +5 -1
- package/CountryFlags/BV.js +5 -1
- package/CountryFlags/BW.js +5 -1
- package/CountryFlags/BY.js +5 -1
- package/CountryFlags/BZ.js +5 -1
- package/CountryFlags/CA.js +5 -1
- package/CountryFlags/CC.js +5 -1
- package/CountryFlags/CD.js +5 -1
- package/CountryFlags/CF.js +5 -1
- package/CountryFlags/CG.js +5 -1
- package/CountryFlags/CH.js +5 -1
- package/CountryFlags/CI.js +5 -1
- package/CountryFlags/CK.js +5 -1
- package/CountryFlags/CL.js +5 -1
- package/CountryFlags/CM.js +5 -1
- package/CountryFlags/CN.js +5 -1
- package/CountryFlags/CO.js +5 -1
- package/CountryFlags/CR.js +5 -1
- package/CountryFlags/CU.js +5 -1
- package/CountryFlags/CV.js +5 -1
- package/CountryFlags/CW.js +5 -1
- package/CountryFlags/CX.js +5 -1
- package/CountryFlags/CY.js +5 -1
- package/CountryFlags/CZ.js +5 -1
- package/CountryFlags/DE.js +5 -1
- package/CountryFlags/DJ.js +5 -1
- package/CountryFlags/DK.js +5 -1
- package/CountryFlags/DM.js +5 -1
- package/CountryFlags/DO.js +5 -1
- package/CountryFlags/DZ.js +5 -1
- package/CountryFlags/EC.js +5 -1
- package/CountryFlags/EE.js +5 -1
- package/CountryFlags/EG.js +5 -1
- package/CountryFlags/EH.js +5 -1
- package/CountryFlags/ER.js +5 -1
- package/CountryFlags/ES.js +5 -1
- package/CountryFlags/ET.js +5 -1
- package/CountryFlags/EU.js +5 -1
- package/CountryFlags/FI.js +5 -1
- package/CountryFlags/FJ.js +5 -1
- package/CountryFlags/FK.js +5 -1
- package/CountryFlags/FM.js +5 -1
- package/CountryFlags/FO.js +5 -1
- package/CountryFlags/FR.js +5 -1
- package/CountryFlags/GA.js +5 -1
- package/CountryFlags/GB.js +5 -1
- package/CountryFlags/GD.js +5 -1
- package/CountryFlags/GE.js +5 -1
- package/CountryFlags/GEAB.js +5 -1
- package/CountryFlags/GEOS.js +5 -1
- package/CountryFlags/GF.js +5 -1
- package/CountryFlags/GG.js +5 -1
- package/CountryFlags/GH.js +5 -1
- package/CountryFlags/GI.js +5 -1
- package/CountryFlags/GL.js +5 -1
- package/CountryFlags/GM.js +5 -1
- package/CountryFlags/GN.js +5 -1
- package/CountryFlags/GP.js +5 -1
- package/CountryFlags/GQ.js +5 -1
- package/CountryFlags/GR.js +5 -1
- package/CountryFlags/GS.js +5 -1
- package/CountryFlags/GT.js +5 -1
- package/CountryFlags/GU.js +5 -1
- package/CountryFlags/GW.js +5 -1
- package/CountryFlags/GY.js +5 -1
- package/CountryFlags/HK.js +5 -1
- package/CountryFlags/HM.js +5 -1
- package/CountryFlags/HN.js +5 -1
- package/CountryFlags/HR.js +5 -1
- package/CountryFlags/HT.js +5 -1
- package/CountryFlags/HU.js +5 -1
- package/CountryFlags/IC.js +5 -1
- package/CountryFlags/ID.js +5 -1
- package/CountryFlags/IE.js +5 -1
- package/CountryFlags/IL.js +5 -1
- package/CountryFlags/IM.js +5 -1
- package/CountryFlags/IN.js +5 -1
- package/CountryFlags/IO.js +5 -1
- package/CountryFlags/IQ.js +5 -1
- package/CountryFlags/IR.js +5 -1
- package/CountryFlags/IS.js +5 -1
- package/CountryFlags/IT.js +5 -1
- package/CountryFlags/JE.js +5 -1
- package/CountryFlags/JM.js +5 -1
- package/CountryFlags/JO.js +5 -1
- package/CountryFlags/JP.js +5 -1
- package/CountryFlags/KE.js +5 -1
- package/CountryFlags/KG.js +5 -1
- package/CountryFlags/KH.js +5 -1
- package/CountryFlags/KI.js +5 -1
- package/CountryFlags/KM.js +5 -1
- package/CountryFlags/KN.js +5 -1
- package/CountryFlags/KP.js +5 -1
- package/CountryFlags/KR.js +5 -1
- package/CountryFlags/KW.js +5 -1
- package/CountryFlags/KY.js +5 -1
- package/CountryFlags/KZ.js +5 -1
- package/CountryFlags/LA.js +5 -1
- package/CountryFlags/LB.js +5 -1
- package/CountryFlags/LC.js +5 -1
- package/CountryFlags/LI.js +5 -1
- package/CountryFlags/LK.js +5 -1
- package/CountryFlags/LR.js +5 -1
- package/CountryFlags/LS.js +5 -1
- package/CountryFlags/LT.js +5 -1
- package/CountryFlags/LU.js +5 -1
- package/CountryFlags/LV.js +5 -1
- package/CountryFlags/LY.js +5 -1
- package/CountryFlags/MA.js +5 -1
- package/CountryFlags/MC.js +5 -1
- package/CountryFlags/MD.js +5 -1
- package/CountryFlags/ME.js +5 -1
- package/CountryFlags/MF.js +5 -1
- package/CountryFlags/MG.js +5 -1
- package/CountryFlags/MH.js +5 -1
- package/CountryFlags/MK.js +5 -1
- package/CountryFlags/ML.js +5 -1
- package/CountryFlags/MM.js +5 -1
- package/CountryFlags/MN.js +5 -1
- package/CountryFlags/MO.js +5 -1
- package/CountryFlags/MP.js +5 -1
- package/CountryFlags/MQ.js +5 -1
- package/CountryFlags/MR.js +5 -1
- package/CountryFlags/MS.js +5 -1
- package/CountryFlags/MT.js +5 -1
- package/CountryFlags/MU.js +5 -1
- package/CountryFlags/MV.js +5 -1
- package/CountryFlags/MW.js +5 -1
- package/CountryFlags/MX.js +5 -1
- package/CountryFlags/MY.js +5 -1
- package/CountryFlags/MZ.js +5 -1
- package/CountryFlags/NA.js +5 -1
- package/CountryFlags/NC.js +5 -1
- package/CountryFlags/NE.js +5 -1
- package/CountryFlags/NF.js +5 -1
- package/CountryFlags/NG.js +5 -1
- package/CountryFlags/NI.js +5 -1
- package/CountryFlags/NL.js +5 -1
- package/CountryFlags/NO.js +5 -1
- package/CountryFlags/NP.js +5 -1
- package/CountryFlags/NR.js +5 -1
- package/CountryFlags/NU.js +5 -1
- package/CountryFlags/NZ.js +5 -1
- package/CountryFlags/OM.js +5 -1
- package/CountryFlags/PA.js +5 -1
- package/CountryFlags/PE.js +5 -1
- package/CountryFlags/PF.js +5 -1
- package/CountryFlags/PG.js +5 -1
- package/CountryFlags/PH.js +5 -1
- package/CountryFlags/PK.js +5 -1
- package/CountryFlags/PL.js +5 -1
- package/CountryFlags/PM.js +5 -1
- package/CountryFlags/PN.js +5 -1
- package/CountryFlags/PR.js +5 -1
- package/CountryFlags/PS.js +5 -1
- package/CountryFlags/PT.js +5 -1
- package/CountryFlags/PW.js +5 -1
- package/CountryFlags/PY.js +5 -1
- package/CountryFlags/QA.js +5 -1
- package/CountryFlags/RE.js +5 -1
- package/CountryFlags/RO.js +5 -1
- package/CountryFlags/RS.js +5 -1
- package/CountryFlags/RU.js +5 -1
- package/CountryFlags/RW.js +5 -1
- package/CountryFlags/SA.js +5 -1
- package/CountryFlags/SB.js +5 -1
- package/CountryFlags/SC.js +5 -1
- package/CountryFlags/SD.js +5 -1
- package/CountryFlags/SE.js +5 -1
- package/CountryFlags/SG.js +5 -1
- package/CountryFlags/SH.js +5 -1
- package/CountryFlags/SI.js +5 -1
- package/CountryFlags/SJ.js +5 -1
- package/CountryFlags/SK.js +5 -1
- package/CountryFlags/SL.js +5 -1
- package/CountryFlags/SM.js +5 -1
- package/CountryFlags/SN.js +5 -1
- package/CountryFlags/SO.js +5 -1
- package/CountryFlags/SR.js +5 -1
- package/CountryFlags/SS.js +5 -1
- package/CountryFlags/ST.js +5 -1
- package/CountryFlags/SV.js +5 -1
- package/CountryFlags/SX.js +5 -1
- package/CountryFlags/SY.js +5 -1
- package/CountryFlags/SZ.js +5 -1
- package/CountryFlags/TA.js +5 -1
- package/CountryFlags/TC.js +5 -1
- package/CountryFlags/TD.js +5 -1
- package/CountryFlags/TF.js +5 -1
- package/CountryFlags/TG.js +5 -1
- package/CountryFlags/TH.js +5 -1
- package/CountryFlags/TJ.js +5 -1
- package/CountryFlags/TK.js +5 -1
- package/CountryFlags/TL.js +5 -1
- package/CountryFlags/TM.js +5 -1
- package/CountryFlags/TN.js +5 -1
- package/CountryFlags/TO.js +5 -1
- package/CountryFlags/TR.js +5 -1
- package/CountryFlags/TT.js +5 -1
- package/CountryFlags/TV.js +5 -1
- package/CountryFlags/TW.js +5 -1
- package/CountryFlags/TZ.js +5 -1
- package/CountryFlags/UA.js +5 -1
- package/CountryFlags/UG.js +5 -1
- package/CountryFlags/UM.js +5 -1
- package/CountryFlags/US.js +5 -1
- package/CountryFlags/UY.js +5 -1
- package/CountryFlags/UZ.js +5 -1
- package/CountryFlags/Uknown.d.ts +7 -3
- package/CountryFlags/Uknown.js +9 -31
- package/CountryFlags/Unknown.d.ts +3 -0
- package/CountryFlags/Unknown.js +42 -0
- package/CountryFlags/VA.js +5 -1
- package/CountryFlags/VC.js +5 -1
- package/CountryFlags/VE.js +5 -1
- package/CountryFlags/VG.js +5 -1
- package/CountryFlags/VI.js +5 -1
- package/CountryFlags/VN.js +5 -1
- package/CountryFlags/VU.js +5 -1
- package/CountryFlags/WF.js +5 -1
- package/CountryFlags/WS.js +5 -1
- package/CountryFlags/XK.js +5 -1
- package/CountryFlags/YE.js +5 -1
- package/CountryFlags/YT.js +5 -1
- package/CountryFlags/ZA.js +5 -1
- package/CountryFlags/ZM.js +5 -1
- package/CountryFlags/ZW.js +5 -1
- package/CountryFlags/index.d.ts +2 -1
- package/CountryFlags/index.js +3 -1
- package/CountryFlags/isLabelled.d.ts +6 -0
- package/CountryFlags/isLabelled.js +7 -0
- package/DatePicker/index.d.ts +23 -6
- package/DatePicker/index.js +84 -23
- package/DatePicker/useDatePickerFormat.js +20 -3
- package/Grid/index.d.ts +60 -0
- package/Grid/index.js +43 -0
- package/Highlighted/index.d.ts +1 -1
- package/Highlighted/index.js +14 -10
- package/LoadingIndicator/LoadingOverlay.d.ts +11 -0
- package/LoadingIndicator/LoadingOverlay.js +63 -0
- package/LoadingIndicator/Spinner.d.ts +34 -5
- package/LoadingIndicator/Spinner.js +48 -37
- package/LoadingIndicator/SpinnerCircle.d.ts +14 -0
- package/LoadingIndicator/SpinnerCircle.js +34 -0
- package/LoadingIndicator/index.d.ts +8 -3
- package/LoadingIndicator/index.js +9 -15
- package/MaskedField/index.d.ts +3 -2
- package/MaskedField/index.js +7 -2
- package/MaskedField/templates.js +2 -0
- package/MaskedField/useMasked.js +26 -12
- package/Menu/MenuContainer.d.ts +11 -3
- package/Menu/MenuContainer.js +127 -65
- package/Menu/MenuItem.js +1 -1
- package/Menu/VirtualizedList.js +1 -3
- package/Menu/context.js +5 -0
- package/Modal/BaseModal/ModalWrapper.js +65 -38
- package/Modal/BaseModal/context.js +6 -0
- package/Modal/BaseModal/index.js +0 -8
- package/Modal/BaseModal/useDialogID.d.ts +6 -0
- package/Modal/BaseModal/useDialogID.js +12 -0
- package/Modal/ConfirmBox/ConfirmBoxContainer.js +5 -1
- package/Modal/ConfirmBox/index.js +2 -1
- package/Modal/Dialog/DialogInner.js +1 -1
- package/Modal/Dialog/index.js +12 -7
- package/Modal/Drawer/DrawerHeader.d.ts +20 -0
- package/Modal/Drawer/DrawerHeader.js +3 -3
- package/Modal/Drawer/DrawerInner.js +9 -1
- package/Modal/Drawer/index.d.ts +7 -0
- package/Modal/Drawer/index.js +12 -10
- package/Modal/MessageBox/MessageBoxContainer.js +1 -1
- package/Modal/MessageBox/index.js +2 -1
- package/PhoneField/CountryFlagComponent.js +2 -2
- package/PhoneField/UnknownFlag.d.ts +6 -3
- package/PhoneField/UnknownFlag.js +8 -31
- package/PhoneField/index.js +45 -55
- package/PhoneField/templates.js +13 -14
- package/PhoneField/usePhoneUtils.d.ts +15 -0
- package/PhoneField/usePhoneUtils.js +30 -37
- package/Popper/Popper.d.ts +30 -10
- package/Popper/Popper.js +9 -7
- package/Popper/usePopper.d.ts +21 -31
- package/Popper/usePopper.js +79 -46
- package/README.md +27 -10
- package/Radio/RadioBox.d.ts +14 -0
- package/Radio/RadioBox.js +100 -0
- package/Radio/RadioContainer.d.ts +27 -0
- package/Radio/RadioContainer.js +38 -0
- package/Radio/RadioTextWrapper.d.ts +4 -0
- package/Radio/RadioTextWrapper.js +29 -0
- package/Radio/index.d.ts +64 -0
- package/Radio/index.js +49 -0
- package/Radio/useRadioColor.d.ts +6 -0
- package/Radio/useRadioColor.js +33 -0
- package/RadioGroup/RadioGroupAsterisk.d.ts +13 -0
- package/RadioGroup/RadioGroupAsterisk.js +53 -0
- package/RadioGroup/RadioGroupContainer.d.ts +4 -0
- package/RadioGroup/RadioGroupContainer.js +36 -0
- package/RadioGroup/RadioGroupContext.d.ts +20 -0
- package/RadioGroup/RadioGroupContext.js +11 -0
- package/RadioGroup/RadioGroupErrorText.d.ts +6 -0
- package/RadioGroup/RadioGroupErrorText.js +76 -0
- package/RadioGroup/RadioGroupItems.d.ts +9 -0
- package/RadioGroup/RadioGroupItems.js +30 -0
- package/RadioGroup/RadioGroupLegend.d.ts +4 -0
- package/RadioGroup/RadioGroupLegend.js +37 -0
- package/RadioGroup/index.d.ts +134 -0
- package/RadioGroup/index.js +62 -0
- package/Selectbox/SelectboxMenu.d.ts +1 -1
- package/Selectbox/index.d.ts +18 -2
- package/Selectbox/index.js +32 -32
- package/Stack/index.d.ts +62 -0
- package/Stack/index.js +38 -0
- package/Surface/SurfaceContainer.js +6 -0
- package/Surface/index.js +7 -3
- package/Swiper/Swiper.d.ts +28 -2
- package/Swiper/Swiper.js +246 -91
- package/Swiper/SwiperContainer.js +0 -2
- package/Swiper/SwiperSlidesRenderer.d.ts +8 -0
- package/Swiper/SwiperSlidesRenderer.js +17 -14
- package/Swiper/SwiperTrack.d.ts +8 -0
- package/Swiper/SwiperTrack.js +8 -3
- package/Swiper/SwiperWrapper.js +9 -1
- package/Switch/SwitchContainer.d.ts +1 -1
- package/Switch/SwitchContainer.js +5 -5
- package/Switch/SwitchDot.js +13 -53
- package/Switch/SwitchToggleWrapper.d.ts +1 -1
- package/Switch/SwitchToggleWrapper.js +5 -6
- package/Switch/SwitchTrack.js +5 -41
- package/Switch/index.d.ts +4 -4
- package/Switch/index.js +21 -11
- package/Switch/useSwitchColor.d.ts +7 -0
- package/Switch/useSwitchColor.js +33 -0
- package/Table/Table.d.ts +6 -0
- package/Table/Table.js +7 -62
- package/Table/TableBody.d.ts +1 -1
- package/Table/TableBody.js +4 -2
- package/Table/TableCaption.d.ts +2 -2
- package/Table/TableCaption.js +2 -3
- package/Table/TableCell.js +2 -5
- package/Table/TableFooter.js +8 -7
- package/Table/TableHeader.js +6 -2
- package/Table/TableHeaderCell.js +8 -9
- package/Table/TableRow.js +1 -5
- package/TextArea/TextAreaIconWrapper.d.ts +1 -1
- package/TextArea/TextAreaInput.js +2 -0
- package/TextArea/index.js +7 -15
- package/TextField/TextFieldInput.js +2 -0
- package/TextField/TextFieldInputWrapper.d.ts +2 -0
- package/TextField/TextFieldInputWrapper.js +12 -2
- package/TextField/index.js +7 -19
- package/ThemeProvider/createTheme.js +2 -3
- package/ThemeProvider/index.d.ts +19 -2
- package/Typography/Base.d.ts +1 -1
- package/Typography/Base.js +1 -1
- package/Typography/Blockquote.js +1 -1
- package/Typography/Del.js +2 -2
- package/Typography/H4.js +1 -1
- package/Typography/H5.js +2 -2
- package/Typography/H6.d.ts +4 -0
- package/Typography/H6.js +28 -0
- package/Typography/SectionDescription.js +0 -1
- package/Typography/SectionTitle.d.ts +4 -7
- package/Typography/SectionTitle.js +26 -8
- package/Typography/index.d.ts +27 -0
- package/Typography/index.js +35 -0
- package/package.json +2 -4
- package/utils/TabManager.d.ts +7 -1
- package/utils/TabManager.js +39 -45
- package/utils/spacing.d.ts +11 -0
- package/utils/spacing.js +14 -0
- package/Autocomplete/OverrideMenuList.d.ts +0 -4
- package/Autocomplete/OverrideMenuList.js +0 -39
- package/Autocomplete2/Autocomplete2.d.ts +0 -12
- package/Autocomplete2/Autocomplete2.js +0 -83
- package/Autocomplete2/Autocomplete2TextField.d.ts +0 -7
- package/Autocomplete2/index.d.ts +0 -2
- package/Autocomplete2/index.js +0 -7
- package/CountryFlags/SwiperOverview.d.ts +0 -257
- package/CountryFlags/SwiperOverview.js +0 -524
package/Popper/usePopper.d.ts
CHANGED
|
@@ -2,9 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import { PositionStrategy } from './PopperContainer';
|
|
3
3
|
/**
|
|
4
4
|
* Base directions for popper positioning.
|
|
5
|
-
*
|
|
5
|
+
* The popper is centered along the chosen side of the anchor.
|
|
6
6
|
*
|
|
7
|
-
* @default 'bottom' (when used as anchorPos)
|
|
8
7
|
* @example
|
|
9
8
|
* ```tsx
|
|
10
9
|
* type Direction = 'top' | 'bottom' | 'left' | 'right';
|
|
@@ -12,38 +11,31 @@ import { PositionStrategy } from './PopperContainer';
|
|
|
12
11
|
*/
|
|
13
12
|
export type Direction = 'top' | 'left' | 'right' | 'bottom';
|
|
14
13
|
/**
|
|
15
|
-
* Auto placement
|
|
16
|
-
*
|
|
17
|
-
* - `auto`:
|
|
18
|
-
*
|
|
14
|
+
* Auto placements. With `autoFlip` the popper picks the first placement that fits in the viewport.
|
|
15
|
+
* - `auto`: Tries all placements starting with the bottom ones
|
|
16
|
+
* - `auto-top`, `auto-bottom`, `auto-left`, `auto-right`: Tries all placements starting with the specified side
|
|
17
|
+
*
|
|
18
|
+
* Without `autoFlip` `auto` works as `bottom`, `auto-top` as `top` and so on.
|
|
19
19
|
*
|
|
20
20
|
* @example
|
|
21
21
|
* ```tsx
|
|
22
22
|
* // Will try to place on top first, but will flip if needed
|
|
23
|
-
* <Popper anchorPos="auto-top">...</Popper>
|
|
24
|
-
*
|
|
25
|
-
* // Will try all directions equally
|
|
26
|
-
* <Popper anchorPos="auto">...</Popper>
|
|
23
|
+
* <Popper anchorPos="auto-top" autoFlip>...</Popper>
|
|
27
24
|
* ```
|
|
28
25
|
*/
|
|
29
26
|
export type AutoModifier = 'auto' | 'auto-top' | 'auto-bottom' | 'auto-left' | 'auto-right';
|
|
30
27
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* - `
|
|
34
|
-
* - `
|
|
35
|
-
* - `
|
|
28
|
+
* Placements that combine a side with an alignment along it:
|
|
29
|
+
* - `start`/`end`: Aligns to the left/right edge of the anchor (text direction is not taken into account)
|
|
30
|
+
* - `left`/`right`: Same as `start`/`end`
|
|
31
|
+
* - `top`/`bottom`: Vertical alignment for the left and right sides
|
|
32
|
+
* - `fill`: Stretches the popper to the anchor width
|
|
36
33
|
*
|
|
37
34
|
* @example
|
|
38
35
|
* ```tsx
|
|
39
|
-
*
|
|
40
|
-
* <Popper anchorPos="top
|
|
41
|
-
*
|
|
42
|
-
* // Logical placements (RTL-friendly)
|
|
43
|
-
* <Popper anchorPos="bottom-start">Aligns to bottom edge, start side</Popper>
|
|
44
|
-
*
|
|
45
|
-
* // Side alignments
|
|
46
|
-
* <Popper anchorPos="left-top">Aligns to left side, top edge</Popper>
|
|
36
|
+
* <Popper anchorPos="bottom-start">Below the anchor, aligned to its left edge</Popper>
|
|
37
|
+
* <Popper anchorPos="left-top">Left of the anchor, aligned to its top edge</Popper>
|
|
38
|
+
* <Popper anchorPos="bottom-fill">Below the anchor, as wide as the anchor</Popper>
|
|
47
39
|
* ```
|
|
48
40
|
*/
|
|
49
41
|
export type Modifier = 'top-start' | 'top-end' | 'top-left' | 'top-right' | 'bottom-end' | 'bottom-start' | 'bottom-right' | 'bottom-left' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom' | 'bottom-fill' | 'top-fill';
|
|
@@ -54,12 +46,13 @@ export type Modifier = 'top-start' | 'top-end' | 'top-left' | 'top-right' | 'bot
|
|
|
54
46
|
*
|
|
55
47
|
* Categories:
|
|
56
48
|
* - **Basic directions**: `top`, `bottom`, `left`, `right` - Centered placement
|
|
57
|
-
* - **
|
|
58
|
-
*
|
|
49
|
+
* - **Edge placements**: `top-start`, `top-end`, `bottom-start`, `bottom-end`
|
|
50
|
+
* and their aliases `top-left`, `top-right`, `bottom-left`, `bottom-right`
|
|
59
51
|
* - **Side alignments**: `left-top`, `left-bottom`, `right-top`, `right-bottom` - Edge-aligned
|
|
60
|
-
* - **
|
|
52
|
+
* - **Fill placements**: `top-fill`, `bottom-fill` - As wide as the anchor
|
|
53
|
+
* - **Auto placements**: `auto`, `auto-top`, `auto-bottom`, `auto-left`, `auto-right` - Picked by `autoFlip`
|
|
61
54
|
*
|
|
62
|
-
* @default '
|
|
55
|
+
* @default 'auto'
|
|
63
56
|
* @example
|
|
64
57
|
* ```tsx
|
|
65
58
|
* // Basic centered placement
|
|
@@ -69,10 +62,7 @@ export type Modifier = 'top-start' | 'top-end' | 'top-left' | 'top-right' | 'bot
|
|
|
69
62
|
* <Popper anchorPos="top-right">Attached to top-right corner</Popper>
|
|
70
63
|
*
|
|
71
64
|
* // Auto placement with priority
|
|
72
|
-
* <Popper anchorPos="auto-left">Try left first, then find best fit</Popper>
|
|
73
|
-
*
|
|
74
|
-
* // RTL-aware placement
|
|
75
|
-
* <Popper anchorPos="top-start">Respects text direction</Popper>
|
|
65
|
+
* <Popper anchorPos="auto-left" autoFlip>Try left first, then find best fit</Popper>
|
|
76
66
|
* ```
|
|
77
67
|
*/
|
|
78
68
|
export type AnchorPos = Direction | Modifier | AutoModifier;
|
package/Popper/usePopper.js
CHANGED
|
@@ -44,10 +44,9 @@ const findScrollableAncestor = (element, includeHidden = false) => {
|
|
|
44
44
|
return window;
|
|
45
45
|
};
|
|
46
46
|
exports.findScrollableAncestor = findScrollableAncestor;
|
|
47
|
+
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? react_1.default.useLayoutEffect : react_1.default.useEffect;
|
|
47
48
|
const usePopper = (props) => {
|
|
48
49
|
const { anchorElement, anchorPos = 'auto', positionStrategy = 'fixed', autoFlip = false, offset = 0, viewportMargin = 10, isOpen = false, alternativePlacements, } = props;
|
|
49
|
-
const isMountedRef = react_1.default.useRef(false);
|
|
50
|
-
const isPositioningRef = react_1.default.useRef(false);
|
|
51
50
|
const [actualPlacement, setActualPlacement] = react_1.default.useState(anchorPos);
|
|
52
51
|
const [style, setStyle] = react_1.default.useState(null);
|
|
53
52
|
const [isVisible, setIsVisible] = react_1.default.useState(false);
|
|
@@ -59,12 +58,15 @@ const usePopper = (props) => {
|
|
|
59
58
|
}
|
|
60
59
|
return (0, exports.findScrollableAncestor)(anchorElement);
|
|
61
60
|
}, [anchorElement]);
|
|
62
|
-
//
|
|
61
|
+
// Reset actualPlacement only when the preferred placement itself changes.
|
|
62
|
+
// Comparing with actualPlacement here would immediately revert every flip.
|
|
63
|
+
const prevAnchorPosRef = react_1.default.useRef(anchorPos);
|
|
63
64
|
react_1.default.useEffect(() => {
|
|
64
|
-
if (
|
|
65
|
+
if (prevAnchorPosRef.current !== anchorPos) {
|
|
66
|
+
prevAnchorPosRef.current = anchorPos;
|
|
65
67
|
setActualPlacement(anchorPos);
|
|
66
68
|
}
|
|
67
|
-
}, [
|
|
69
|
+
}, [anchorPos]);
|
|
68
70
|
const getPositionStyle = react_1.default.useCallback((props) => {
|
|
69
71
|
var _a;
|
|
70
72
|
const { place, anchorRect, popperRect, forViewportCheck = false } = props;
|
|
@@ -383,25 +385,56 @@ const usePopper = (props) => {
|
|
|
383
385
|
}
|
|
384
386
|
const anchorRect = anchorElement.getBoundingClientRect();
|
|
385
387
|
const popperRect = popperRef.current.getBoundingClientRect();
|
|
386
|
-
const { style, placement
|
|
387
|
-
|
|
388
|
-
setActualPlacement(placement);
|
|
389
|
-
}
|
|
388
|
+
const { style, placement } = getPreferredPlacements(anchorPos, anchorRect, popperRect);
|
|
389
|
+
setActualPlacement(placement);
|
|
390
390
|
setStyle(style);
|
|
391
391
|
}, [anchorElement, anchorPos, getPreferredPlacements]);
|
|
392
|
+
const frameRef = react_1.default.useRef(null);
|
|
393
|
+
const scheduleUpdate = react_1.default.useCallback(() => {
|
|
394
|
+
if (frameRef.current !== null) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
frameRef.current = window.requestAnimationFrame(() => {
|
|
398
|
+
frameRef.current = null;
|
|
399
|
+
calculatePosition();
|
|
400
|
+
});
|
|
401
|
+
}, [calculatePosition]);
|
|
402
|
+
// Cancel the pending frame on unmount
|
|
403
|
+
react_1.default.useEffect(() => () => {
|
|
404
|
+
if (frameRef.current !== null) {
|
|
405
|
+
window.cancelAnimationFrame(frameRef.current);
|
|
406
|
+
frameRef.current = null;
|
|
407
|
+
}
|
|
408
|
+
}, []);
|
|
392
409
|
/**
|
|
393
|
-
*
|
|
410
|
+
* Close popper logic
|
|
394
411
|
*/
|
|
395
412
|
react_1.default.useEffect(() => {
|
|
396
413
|
if (!isOpen) {
|
|
397
414
|
setIsVisible(false);
|
|
398
415
|
setStyle(null);
|
|
399
416
|
}
|
|
400
|
-
|
|
417
|
+
}, [isOpen]);
|
|
418
|
+
/**
|
|
419
|
+
* Open popper logic.
|
|
420
|
+
* Runs after every render because the popper node can appear later than `isOpen`
|
|
421
|
+
* becomes true (e.g. the portal is rendered only after the client mount)
|
|
422
|
+
*/
|
|
423
|
+
useIsomorphicLayoutEffect(() => {
|
|
424
|
+
if (isOpen && !isVisible && anchorElement && popperRef.current) {
|
|
401
425
|
calculatePosition();
|
|
402
426
|
setIsVisible(true);
|
|
403
427
|
}
|
|
404
|
-
}
|
|
428
|
+
});
|
|
429
|
+
/**
|
|
430
|
+
* Recalculate position when the positioning params are changed
|
|
431
|
+
*/
|
|
432
|
+
react_1.default.useEffect(() => {
|
|
433
|
+
if (isOpen && isVisible) {
|
|
434
|
+
calculatePosition();
|
|
435
|
+
}
|
|
436
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
437
|
+
}, [calculatePosition]);
|
|
405
438
|
/**
|
|
406
439
|
* The anchor element changes
|
|
407
440
|
*/
|
|
@@ -409,12 +442,7 @@ const usePopper = (props) => {
|
|
|
409
442
|
if (!isOpen || !anchorElement) {
|
|
410
443
|
return;
|
|
411
444
|
}
|
|
412
|
-
const observer = new MutationObserver(
|
|
413
|
-
window.requestAnimationFrame(() => {
|
|
414
|
-
// console.log('The anchor element was change');
|
|
415
|
-
calculatePosition();
|
|
416
|
-
});
|
|
417
|
-
});
|
|
445
|
+
const observer = new MutationObserver(scheduleUpdate);
|
|
418
446
|
observer.observe(anchorElement, {
|
|
419
447
|
attributes: true,
|
|
420
448
|
childList: true,
|
|
@@ -424,36 +452,47 @@ const usePopper = (props) => {
|
|
|
424
452
|
return () => {
|
|
425
453
|
observer.disconnect();
|
|
426
454
|
};
|
|
427
|
-
}, [isOpen, anchorElement,
|
|
455
|
+
}, [isOpen, anchorElement, scheduleUpdate]);
|
|
428
456
|
/**
|
|
429
|
-
*
|
|
457
|
+
* The size of the anchor or popper changes
|
|
430
458
|
*/
|
|
431
459
|
react_1.default.useEffect(() => {
|
|
432
|
-
if (!isOpen || !
|
|
460
|
+
if (!isOpen || !isVisible || typeof ResizeObserver === 'undefined') {
|
|
433
461
|
return;
|
|
434
462
|
}
|
|
435
|
-
const
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
});
|
|
439
|
-
};
|
|
440
|
-
// parent scroll listener
|
|
441
|
-
if (scrollableAncestor instanceof HTMLElement) {
|
|
442
|
-
scrollableAncestor.addEventListener('scroll', handleScroll, { passive: true });
|
|
463
|
+
const observer = new ResizeObserver(scheduleUpdate);
|
|
464
|
+
if (anchorElement) {
|
|
465
|
+
observer.observe(anchorElement);
|
|
443
466
|
}
|
|
444
|
-
|
|
445
|
-
|
|
467
|
+
if (popperRef.current) {
|
|
468
|
+
observer.observe(popperRef.current);
|
|
446
469
|
}
|
|
447
470
|
// eslint-disable-next-line consistent-return
|
|
448
471
|
return () => {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
472
|
+
observer.disconnect();
|
|
473
|
+
};
|
|
474
|
+
}, [isOpen, isVisible, anchorElement, scheduleUpdate]);
|
|
475
|
+
/**
|
|
476
|
+
* On scroll of any ancestor (captured on window) - recalculate position
|
|
477
|
+
*/
|
|
478
|
+
react_1.default.useEffect(() => {
|
|
479
|
+
if (!isOpen) {
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
const handleScroll = (event) => {
|
|
483
|
+
var _a;
|
|
484
|
+
// Scrolling inside the popper does not move it
|
|
485
|
+
if (event.target instanceof Node && ((_a = popperRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
|
|
486
|
+
return;
|
|
454
487
|
}
|
|
488
|
+
scheduleUpdate();
|
|
489
|
+
};
|
|
490
|
+
window.addEventListener('scroll', handleScroll, { passive: true, capture: true });
|
|
491
|
+
// eslint-disable-next-line consistent-return
|
|
492
|
+
return () => {
|
|
493
|
+
window.removeEventListener('scroll', handleScroll, { capture: true });
|
|
455
494
|
};
|
|
456
|
-
}, [isOpen,
|
|
495
|
+
}, [isOpen, scheduleUpdate]);
|
|
457
496
|
/**
|
|
458
497
|
* On window resize - recalculate position
|
|
459
498
|
*/
|
|
@@ -461,18 +500,12 @@ const usePopper = (props) => {
|
|
|
461
500
|
if (!isOpen) {
|
|
462
501
|
return;
|
|
463
502
|
}
|
|
464
|
-
|
|
465
|
-
window.requestAnimationFrame(() => {
|
|
466
|
-
calculatePosition();
|
|
467
|
-
});
|
|
468
|
-
};
|
|
469
|
-
// parent scroll listener
|
|
470
|
-
window.addEventListener('resize', handleResize);
|
|
503
|
+
window.addEventListener('resize', scheduleUpdate);
|
|
471
504
|
// eslint-disable-next-line consistent-return
|
|
472
505
|
return () => {
|
|
473
|
-
window.removeEventListener('resize',
|
|
506
|
+
window.removeEventListener('resize', scheduleUpdate);
|
|
474
507
|
};
|
|
475
|
-
}, [
|
|
508
|
+
}, [scheduleUpdate, isOpen]);
|
|
476
509
|
return {
|
|
477
510
|
actualPlacement,
|
|
478
511
|
style,
|
package/README.md
CHANGED
|
@@ -1,17 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
# @via-profit/ui-kit
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- react
|
|
6
|
-
- react-dom
|
|
7
|
-
- @emotion/styled - CSS In JS
|
|
8
|
-
- @emotion/react - CSS In JS React
|
|
9
|
-
- react-popper - Выпадающие меню
|
|
3
|
+
Набор React-компонентов для интерфейсов: поля ввода, кнопки, календарь, меню, модальные окна и другие. Компоненты оформлены по теме, которую вы задаёте один раз для всего приложения.
|
|
10
4
|
|
|
5
|
+
## Установка
|
|
11
6
|
|
|
12
7
|
```bash
|
|
13
|
-
|
|
8
|
+
npm install @via-profit/ui-kit @emotion/react @emotion/styled react react-dom
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Пакету нужны `react` и `react-dom` версии 18.2 и новее, `@emotion/react` и `@emotion/styled` версии 11.10.6 и новее.
|
|
12
|
+
|
|
13
|
+
## Быстрый старт
|
|
14
14
|
|
|
15
|
+
```tsx
|
|
16
|
+
import React from 'react';
|
|
17
|
+
import { createRoot } from 'react-dom/client';
|
|
18
|
+
import ThemeProvider, { createTheme } from '@via-profit/ui-kit/ThemeProvider';
|
|
19
|
+
import Button from '@via-profit/ui-kit/Button';
|
|
20
|
+
|
|
21
|
+
const theme = createTheme();
|
|
22
|
+
|
|
23
|
+
createRoot(document.getElementById('app')!).render(
|
|
24
|
+
<ThemeProvider theme={theme}>
|
|
25
|
+
<Button color="primary">Привет</Button>
|
|
26
|
+
</ThemeProvider>,
|
|
27
|
+
);
|
|
15
28
|
```
|
|
16
29
|
|
|
17
|
-
## Документация
|
|
30
|
+
## Документация
|
|
31
|
+
|
|
32
|
+
[Документация](https://github.com/via-profit/ui-kit/blob/master/packages/ui-kit/docs/README.md) — установка, тема оформления, общие принципы и описание всех компонентов.
|
|
33
|
+
|
|
34
|
+
[Список изменений](./CHANGELOG.md)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type RadioBoxProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> & {
|
|
3
|
+
/**
|
|
4
|
+
* Paints the border with the error color
|
|
5
|
+
*/
|
|
6
|
+
readonly error?: boolean;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> & {
|
|
9
|
+
/**
|
|
10
|
+
* Paints the border with the error color
|
|
11
|
+
*/
|
|
12
|
+
readonly error?: boolean | undefined;
|
|
13
|
+
} & React.RefAttributes<HTMLInputElement>>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const react_2 = require("@emotion/react");
|
|
20
|
+
const useRadioColor_1 = __importDefault(require("./useRadioColor"));
|
|
21
|
+
const Root = styled_1.default.span `
|
|
22
|
+
position: relative;
|
|
23
|
+
display: inline-flex;
|
|
24
|
+
flex-shrink: 0;
|
|
25
|
+
width: 1.15em;
|
|
26
|
+
height: 1.15em;
|
|
27
|
+
`;
|
|
28
|
+
/**
|
|
29
|
+
* The checked look comes from the `:checked` state of the input, not from the props:
|
|
30
|
+
* the browser unchecks the other radio buttons of the same `name` itself
|
|
31
|
+
* (data attributes, not class names: emotion labels are absent in the published package)
|
|
32
|
+
*/
|
|
33
|
+
const StyledInput = styled_1.default.input `
|
|
34
|
+
position: absolute;
|
|
35
|
+
inset: 0;
|
|
36
|
+
width: 100%;
|
|
37
|
+
height: 100%;
|
|
38
|
+
margin: 0;
|
|
39
|
+
padding: 0;
|
|
40
|
+
opacity: 0;
|
|
41
|
+
cursor: inherit;
|
|
42
|
+
z-index: 1;
|
|
43
|
+
|
|
44
|
+
&:checked + [data-radio-circle] {
|
|
45
|
+
border-color: ${({ theme, $color, $error }) => $error ? theme.color.error.toString() : $color.toString()};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&:checked + [data-radio-circle] [data-radio-dot] {
|
|
49
|
+
transform: scale(1);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&:focus-visible + [data-radio-circle] {
|
|
53
|
+
outline: 0.14em solid ${({ theme }) => theme.color.accentPrimary.toString()};
|
|
54
|
+
outline-offset: 0.14em;
|
|
55
|
+
}
|
|
56
|
+
`;
|
|
57
|
+
const Circle = styled_1.default.span `
|
|
58
|
+
box-sizing: border-box;
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: center;
|
|
62
|
+
width: 100%;
|
|
63
|
+
height: 100%;
|
|
64
|
+
border-radius: 50%;
|
|
65
|
+
border-width: 0.1em;
|
|
66
|
+
border-style: solid;
|
|
67
|
+
background-color: ${({ theme }) => theme.color.surface.toString()};
|
|
68
|
+
transition: border-color 150ms ease-out;
|
|
69
|
+
border-color: ${({ theme, $error }) => $error ? theme.color.error.toString() : theme.color.textPrimary.alpha(0.4).toString()};
|
|
70
|
+
|
|
71
|
+
${({ $disabled, $error, $color }) => !$disabled &&
|
|
72
|
+
!$error &&
|
|
73
|
+
(0, react_2.css) `
|
|
74
|
+
label:hover & {
|
|
75
|
+
border-color: ${$color.toString()};
|
|
76
|
+
}
|
|
77
|
+
`}
|
|
78
|
+
`;
|
|
79
|
+
const Dot = styled_1.default.span `
|
|
80
|
+
width: 50%;
|
|
81
|
+
height: 50%;
|
|
82
|
+
border-radius: 50%;
|
|
83
|
+
background-color: ${({ $color }) => $color.toString()};
|
|
84
|
+
transform: scale(0);
|
|
85
|
+
transition: transform 150ms ease-out;
|
|
86
|
+
`;
|
|
87
|
+
/**
|
|
88
|
+
* The circle with the native input over it.
|
|
89
|
+
* The ref and the input attributes go to the input: it is the element that holds the value and the focus.
|
|
90
|
+
* `className` and `style` go to the root element, so `styled(RadioBox)` styles the circle
|
|
91
|
+
*/
|
|
92
|
+
const RadioBox = (props, ref) => {
|
|
93
|
+
const { error, color, disabled, className, style } = props, nativeProps = __rest(props, ["error", "color", "disabled", "className", "style"]);
|
|
94
|
+
const $color = (0, useRadioColor_1.default)(color);
|
|
95
|
+
return (react_1.default.createElement(Root, { className: className, style: style },
|
|
96
|
+
react_1.default.createElement(StyledInput, Object.assign({}, nativeProps, { type: "radio", disabled: disabled, "$color": $color, "$error": Boolean(error), ref: ref })),
|
|
97
|
+
react_1.default.createElement(Circle, { "data-radio-circle": "", "$color": $color, "$error": Boolean(error), "$disabled": Boolean(disabled) },
|
|
98
|
+
react_1.default.createElement(Dot, { "data-radio-dot": "", "$color": $color }))));
|
|
99
|
+
};
|
|
100
|
+
exports.default = react_1.default.forwardRef(RadioBox);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type RadioLabelPosition = 'start' | 'end' | 'top' | 'bottom';
|
|
3
|
+
export type RadioContainerProps = React.LabelHTMLAttributes<HTMLLabelElement> & {
|
|
4
|
+
/**
|
|
5
|
+
* Position of the label relative to the radio button
|
|
6
|
+
* Default: `end`
|
|
7
|
+
*/
|
|
8
|
+
readonly labelPosition?: RadioLabelPosition;
|
|
9
|
+
/**
|
|
10
|
+
* If `true` the radio button state can not be changed
|
|
11
|
+
* Default: false;
|
|
12
|
+
*/
|
|
13
|
+
readonly disabled?: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare const _default: React.ForwardRefExoticComponent<React.LabelHTMLAttributes<HTMLLabelElement> & {
|
|
16
|
+
/**
|
|
17
|
+
* Position of the label relative to the radio button
|
|
18
|
+
* Default: `end`
|
|
19
|
+
*/
|
|
20
|
+
readonly labelPosition?: RadioLabelPosition | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* If `true` the radio button state can not be changed
|
|
23
|
+
* Default: false;
|
|
24
|
+
*/
|
|
25
|
+
readonly disabled?: boolean | undefined;
|
|
26
|
+
} & React.RefAttributes<HTMLLabelElement>>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const directions = {
|
|
20
|
+
start: 'row-reverse',
|
|
21
|
+
end: 'row',
|
|
22
|
+
top: 'column-reverse',
|
|
23
|
+
bottom: 'column',
|
|
24
|
+
};
|
|
25
|
+
const StyledContainer = styled_1.default.label `
|
|
26
|
+
cursor: ${({ $disabled }) => ($disabled ? 'default' : 'pointer')};
|
|
27
|
+
font-size: 1em;
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: 0.5em;
|
|
31
|
+
opacity: ${({ $disabled }) => ($disabled ? 0.6 : 1)};
|
|
32
|
+
flex-direction: ${({ $labelPosition }) => directions[$labelPosition || 'end']};
|
|
33
|
+
`;
|
|
34
|
+
const RadioContainer = (props, ref) => {
|
|
35
|
+
const { children, labelPosition, disabled } = props, nativeProps = __rest(props, ["children", "labelPosition", "disabled"]);
|
|
36
|
+
return (react_1.default.createElement(StyledContainer, Object.assign({}, nativeProps, { "$labelPosition": labelPosition, "$disabled": disabled, ref: ref }), children));
|
|
37
|
+
};
|
|
38
|
+
exports.default = react_1.default.forwardRef(RadioContainer);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const TextWrapper = styled_1.default.span `
|
|
20
|
+
font-size: 0.86em;
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
user-select: none;
|
|
24
|
+
`;
|
|
25
|
+
const RadioTextWrapper = (props, ref) => {
|
|
26
|
+
const { children } = props, nativeProps = __rest(props, ["children"]);
|
|
27
|
+
return (react_1.default.createElement(TextWrapper, Object.assign({}, nativeProps, { ref: ref }), children));
|
|
28
|
+
};
|
|
29
|
+
exports.default = react_1.default.forwardRef(RadioTextWrapper);
|
package/Radio/index.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RadioContainerProps, RadioLabelPosition } from './RadioContainer';
|
|
3
|
+
import { RadioBoxProps } from './RadioBox';
|
|
4
|
+
import { RadioTextWrapperProps } from './RadioTextWrapper';
|
|
5
|
+
export type { RadioLabelPosition };
|
|
6
|
+
export type RadioProps = Omit<RadioBoxProps, 'color' | 'error'> & {
|
|
7
|
+
/**
|
|
8
|
+
* The value of the radio button. Inside `<RadioGroup>` it is required:
|
|
9
|
+
* the group compares it with its own value
|
|
10
|
+
*/
|
|
11
|
+
readonly value?: string;
|
|
12
|
+
/**
|
|
13
|
+
* You can pass the primary, default, secondary name of the colors or your specified color value\
|
|
14
|
+
* **Default:** `default`, inside `<RadioGroup>` — the color of the group
|
|
15
|
+
*/
|
|
16
|
+
readonly color?: 'default' | 'primary' | 'secondary' | string;
|
|
17
|
+
/**
|
|
18
|
+
* Position of the label relative to the radio button\
|
|
19
|
+
* **Default:** `end`
|
|
20
|
+
*/
|
|
21
|
+
readonly labelPosition?: RadioLabelPosition;
|
|
22
|
+
/**
|
|
23
|
+
* Paints the circle with the error color. Inside `<RadioGroup>` it comes from the group
|
|
24
|
+
*/
|
|
25
|
+
readonly error?: boolean;
|
|
26
|
+
readonly overrides?: RadioOverrides;
|
|
27
|
+
};
|
|
28
|
+
export interface RadioOverrides {
|
|
29
|
+
/**
|
|
30
|
+
* The label element with the radio button and the text
|
|
31
|
+
*/
|
|
32
|
+
readonly Container?: React.ComponentType<RadioContainerProps & React.RefAttributes<HTMLLabelElement>>;
|
|
33
|
+
/**
|
|
34
|
+
* The circle with the native input
|
|
35
|
+
*/
|
|
36
|
+
readonly Box?: React.ComponentType<RadioBoxProps & React.RefAttributes<HTMLInputElement>>;
|
|
37
|
+
/**
|
|
38
|
+
* The text wrapper
|
|
39
|
+
*/
|
|
40
|
+
readonly TextWrapper?: React.ComponentType<RadioTextWrapperProps & React.RefAttributes<HTMLSpanElement>>;
|
|
41
|
+
}
|
|
42
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<RadioBoxProps, "color" | "error"> & {
|
|
43
|
+
/**
|
|
44
|
+
* The value of the radio button. Inside `<RadioGroup>` it is required:
|
|
45
|
+
* the group compares it with its own value
|
|
46
|
+
*/
|
|
47
|
+
readonly value?: string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* You can pass the primary, default, secondary name of the colors or your specified color value\
|
|
50
|
+
* **Default:** `default`, inside `<RadioGroup>` — the color of the group
|
|
51
|
+
*/
|
|
52
|
+
readonly color?: string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Position of the label relative to the radio button\
|
|
55
|
+
* **Default:** `end`
|
|
56
|
+
*/
|
|
57
|
+
readonly labelPosition?: RadioLabelPosition | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Paints the circle with the error color. Inside `<RadioGroup>` it comes from the group
|
|
60
|
+
*/
|
|
61
|
+
readonly error?: boolean | undefined;
|
|
62
|
+
readonly overrides?: RadioOverrides | undefined;
|
|
63
|
+
} & React.RefAttributes<HTMLInputElement>>;
|
|
64
|
+
export default _default;
|