@arkyn/components 3.0.1-beta.21 → 3.0.1-beta.23
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/README.md +264 -0
- package/dist/bundle.js +1485 -859
- package/dist/bundle.umd.cjs +1 -1
- package/dist/components/alert/alertContainer/index.d.ts.map +1 -0
- package/dist/components/alert/alertContent/index.d.ts.map +1 -0
- package/dist/components/alert/alertDescription/index.d.ts.map +1 -0
- package/dist/components/alert/alertIcon/index.d.ts.map +1 -0
- package/dist/components/alert/alertTitle/index.d.ts.map +1 -0
- package/dist/components/audioPlayer/index.d.ts.map +1 -0
- package/dist/components/audioUpload/hasFileContent/index.d.ts +13 -0
- package/dist/components/audioUpload/hasFileContent/index.d.ts.map +1 -0
- package/dist/components/audioUpload/hasFileContent/index.js +26 -0
- package/dist/components/audioUpload/index.d.ts +82 -0
- package/dist/components/audioUpload/index.d.ts.map +1 -0
- package/dist/components/audioUpload/index.js +120 -0
- package/dist/components/audioUpload/noFileContent/index.d.ts +12 -0
- package/dist/components/audioUpload/noFileContent/index.d.ts.map +1 -0
- package/dist/components/audioUpload/noFileContent/index.js +29 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/cardTab/cardTabButton/index.d.ts.map +1 -0
- package/dist/components/cardTab/cardTabContainer/index.d.ts.map +1 -0
- package/dist/components/cardTab/cardTabContext.d.ts.map +1 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/clientOnly.d.ts +86 -0
- package/dist/components/clientOnly.d.ts.map +1 -0
- package/dist/components/clientOnly.js +86 -0
- package/dist/components/currencyInput/index.d.ts.map +1 -0
- package/dist/components/divider/index.d.ts.map +1 -0
- package/dist/components/drawer/drawerContainer/index.d.ts.map +1 -0
- package/dist/components/drawer/drawerContext.d.ts.map +1 -0
- package/dist/components/drawer/drawerHeader/index.d.ts.map +1 -0
- package/dist/components/fieldError/index.d.ts.map +1 -0
- package/dist/components/fieldLabel/index.d.ts.map +1 -0
- package/dist/components/fieldWrapper/index.d.ts.map +1 -0
- package/dist/components/fileUpload/hasFileContent/index.d.ts +13 -0
- package/dist/components/fileUpload/hasFileContent/index.d.ts.map +1 -0
- package/dist/components/fileUpload/hasFileContent/index.js +34 -0
- package/dist/components/fileUpload/index.d.ts +94 -0
- package/dist/components/fileUpload/index.d.ts.map +1 -0
- package/dist/components/fileUpload/index.js +127 -0
- package/dist/components/fileUpload/noFileContent/index.d.ts +12 -0
- package/dist/components/fileUpload/noFileContent/index.d.ts.map +1 -0
- package/dist/components/fileUpload/noFileContent/index.js +29 -0
- package/dist/components/iconButton/index.d.ts.map +1 -0
- package/dist/components/imageUpload/hasFileContent/index.d.ts +13 -0
- package/dist/components/imageUpload/hasFileContent/index.d.ts.map +1 -0
- package/dist/components/imageUpload/hasFileContent/index.js +24 -0
- package/dist/components/imageUpload/index.d.ts +114 -0
- package/dist/components/imageUpload/index.d.ts.map +1 -0
- package/dist/components/imageUpload/index.js +148 -0
- package/dist/components/imageUpload/noFileContent/index.d.ts +12 -0
- package/dist/components/imageUpload/noFileContent/index.d.ts.map +1 -0
- package/dist/components/imageUpload/noFileContent/index.js +29 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/maskedInput/index.d.ts.map +1 -0
- package/dist/components/modal/modalContainer/index.d.ts.map +1 -0
- package/dist/components/modal/modalContext.d.ts.map +1 -0
- package/dist/components/modal/modalFooter/index.d.ts.map +1 -0
- package/dist/components/modal/modalHeader/index.d.ts.map +1 -0
- package/dist/components/multiSelect/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectChevron/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectContainer/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectContent/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectMark/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectOption/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectOptionsContainer/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectOverlay/index.d.ts.map +1 -0
- package/dist/components/multiSelect/multiSelectSpinner/index.d.ts.map +1 -0
- package/dist/components/phoneInput/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputContainer/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputCountriesOverlay/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputCountryOption/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputCountryOptionsContainer/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputCountrySelector/index.d.ts.map +1 -0
- package/dist/components/phoneInput/phoneInputMask/index.d.ts.map +1 -0
- package/dist/components/radio/radioBox/index.d.ts.map +1 -0
- package/dist/components/radio/radioContext.d.ts.map +1 -0
- package/dist/components/radio/radioGroup/index.d.ts.map +1 -0
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/tab/tabButton/index.d.ts.map +1 -0
- package/dist/components/tab/tabContainer/index.d.ts.map +1 -0
- package/dist/components/tab/tabContext.d.ts.map +1 -0
- package/dist/components/table/tableBody/index.d.ts +67 -0
- package/dist/components/table/tableBody/index.d.ts.map +1 -0
- package/dist/components/table/tableBody/index.js +69 -0
- package/dist/components/table/tableCaption/index.d.ts +62 -0
- package/dist/components/table/tableCaption/index.d.ts.map +1 -0
- package/dist/components/table/tableCaption/index.js +64 -0
- package/dist/components/table/tableContainer/index.d.ts +64 -0
- package/dist/components/table/tableContainer/index.d.ts.map +1 -0
- package/dist/components/table/tableContainer/index.js +66 -0
- package/dist/components/table/tableFooter/index.d.ts +45 -0
- package/dist/components/table/tableFooter/index.d.ts.map +1 -0
- package/dist/components/table/tableFooter/index.js +47 -0
- package/dist/components/table/tableHeader/index.d.ts +44 -0
- package/dist/components/table/tableHeader/index.d.ts.map +1 -0
- package/dist/components/table/tableHeader/index.js +46 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/{src/components → components}/tooltip/index.js +1 -1
- package/dist/hooks/useDrawer.d.ts +86 -0
- package/dist/hooks/useDrawer.d.ts.map +1 -0
- package/dist/hooks/useDrawer.js +20 -0
- package/dist/hooks/useForm.d.ts.map +1 -0
- package/dist/hooks/useHydrated.d.ts +76 -0
- package/dist/hooks/useHydrated.d.ts.map +1 -0
- package/dist/hooks/useHydrated.js +81 -0
- package/dist/hooks/useModal.d.ts +81 -0
- package/dist/hooks/useModal.d.ts.map +1 -0
- package/dist/hooks/useModal.js +20 -0
- package/dist/hooks/useScopedParams.d.ts.map +1 -0
- package/dist/hooks/useScrollLock.d.ts.map +1 -0
- package/dist/hooks/useSlider.d.ts.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +14 -0
- package/dist/providers/drawerProvider.d.ts +106 -0
- package/dist/providers/drawerProvider.d.ts.map +1 -0
- package/dist/providers/drawerProvider.js +120 -0
- package/dist/providers/formProvider.d.ts.map +1 -0
- package/dist/providers/modalProvider.d.ts +103 -0
- package/dist/providers/modalProvider.d.ts.map +1 -0
- package/dist/providers/modalProvider.js +119 -0
- package/dist/services/iconRenderer.d.ts.map +1 -0
- package/dist/services/maskCurrencyValues.d.ts.map +1 -0
- package/dist/style.css +1 -1
- package/dist/{src/utils → utils}/phoneInputUtilities.d.ts.map +1 -1
- package/package.json +19 -2
- package/dist/documentation/src/app.d.ts +0 -3
- package/dist/documentation/src/app.d.ts.map +0 -1
- package/dist/documentation/src/app.js +0 -55
- package/dist/documentation/src/components/examples.alert.d.ts +0 -3
- package/dist/documentation/src/components/examples.alert.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.alert.js +0 -7
- package/dist/documentation/src/components/examples.audioPlayer.d.ts +0 -3
- package/dist/documentation/src/components/examples.audioPlayer.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.audioPlayer.js +0 -8
- package/dist/documentation/src/components/examples.badge.d.ts +0 -3
- package/dist/documentation/src/components/examples.badge.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.badge.js +0 -9
- package/dist/documentation/src/components/examples.button.d.ts +0 -3
- package/dist/documentation/src/components/examples.button.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.button.js +0 -9
- package/dist/documentation/src/components/examples.cardTab.d.ts +0 -3
- package/dist/documentation/src/components/examples.cardTab.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.cardTab.js +0 -7
- package/dist/documentation/src/components/examples.checkbox.d.ts +0 -3
- package/dist/documentation/src/components/examples.checkbox.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.checkbox.js +0 -13
- package/dist/documentation/src/components/examples.currencyInput.d.ts +0 -3
- package/dist/documentation/src/components/examples.currencyInput.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.currencyInput.js +0 -9
- package/dist/documentation/src/components/examples.divider.d.ts +0 -3
- package/dist/documentation/src/components/examples.divider.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.divider.js +0 -7
- package/dist/documentation/src/components/examples.drawer.d.ts +0 -3
- package/dist/documentation/src/components/examples.drawer.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.drawer.js +0 -11
- package/dist/documentation/src/components/examples.iconButton.d.ts +0 -3
- package/dist/documentation/src/components/examples.iconButton.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.iconButton.js +0 -9
- package/dist/documentation/src/components/examples.input.d.ts +0 -3
- package/dist/documentation/src/components/examples.input.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.input.js +0 -9
- package/dist/documentation/src/components/examples.maskedInput.d.ts +0 -3
- package/dist/documentation/src/components/examples.maskedInput.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.maskedInput.js +0 -9
- package/dist/documentation/src/components/examples.modal.d.ts +0 -3
- package/dist/documentation/src/components/examples.modal.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.modal.js +0 -10
- package/dist/documentation/src/components/examples.multiSelect.d.ts +0 -3
- package/dist/documentation/src/components/examples.multiSelect.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.multiSelect.js +0 -92
- package/dist/documentation/src/components/examples.phoneInput.d.ts +0 -3
- package/dist/documentation/src/components/examples.phoneInput.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.phoneInput.js +0 -26
- package/dist/documentation/src/components/examples.radio.d.ts +0 -3
- package/dist/documentation/src/components/examples.radio.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.radio.js +0 -11
- package/dist/documentation/src/components/examples.slider.d.ts +0 -3
- package/dist/documentation/src/components/examples.slider.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.slider.js +0 -10
- package/dist/documentation/src/components/examples.switch.d.ts +0 -3
- package/dist/documentation/src/components/examples.switch.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.switch.js +0 -20
- package/dist/documentation/src/components/examples.tab.d.ts +0 -3
- package/dist/documentation/src/components/examples.tab.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.tab.js +0 -7
- package/dist/documentation/src/components/examples.texarea.d.ts +0 -3
- package/dist/documentation/src/components/examples.texarea.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.texarea.js +0 -34
- package/dist/documentation/src/components/examples.tooltip.d.ts +0 -3
- package/dist/documentation/src/components/examples.tooltip.d.ts.map +0 -1
- package/dist/documentation/src/components/examples.tooltip.js +0 -8
- package/dist/documentation/src/main.d.ts +0 -3
- package/dist/documentation/src/main.d.ts.map +0 -1
- package/dist/documentation/src/main.js +0 -7
- package/dist/documentation/src/ui/box.d.ts +0 -8
- package/dist/documentation/src/ui/box.d.ts.map +0 -1
- package/dist/documentation/src/ui/box.js +0 -5
- package/dist/documentation/src/ui/row.d.ts +0 -7
- package/dist/documentation/src/ui/row.d.ts.map +0 -1
- package/dist/documentation/src/ui/row.js +0 -5
- package/dist/documentation/vite.config.d.ts +0 -3
- package/dist/documentation/vite.config.d.ts.map +0 -1
- package/dist/documentation/vite.config.js +0 -12
- package/dist/src/components/alert/alertContainer/index.d.ts.map +0 -1
- package/dist/src/components/alert/alertContent/index.d.ts.map +0 -1
- package/dist/src/components/alert/alertDescription/index.d.ts.map +0 -1
- package/dist/src/components/alert/alertIcon/index.d.ts.map +0 -1
- package/dist/src/components/alert/alertTitle/index.d.ts.map +0 -1
- package/dist/src/components/audioPlayer/index.d.ts.map +0 -1
- package/dist/src/components/badge/index.d.ts.map +0 -1
- package/dist/src/components/button/index.d.ts.map +0 -1
- package/dist/src/components/cardTab/cardTabButton/index.d.ts.map +0 -1
- package/dist/src/components/cardTab/cardTabContainer/index.d.ts.map +0 -1
- package/dist/src/components/cardTab/cardTabContext.d.ts.map +0 -1
- package/dist/src/components/checkbox/index.d.ts.map +0 -1
- package/dist/src/components/currencyInput/index.d.ts.map +0 -1
- package/dist/src/components/divider/index.d.ts.map +0 -1
- package/dist/src/components/drawer/drawerContainer/index.d.ts.map +0 -1
- package/dist/src/components/drawer/drawerContext.d.ts.map +0 -1
- package/dist/src/components/drawer/drawerHeader/index.d.ts.map +0 -1
- package/dist/src/components/fieldError/index.d.ts.map +0 -1
- package/dist/src/components/fieldLabel/index.d.ts.map +0 -1
- package/dist/src/components/fieldWrapper/index.d.ts.map +0 -1
- package/dist/src/components/iconButton/index.d.ts.map +0 -1
- package/dist/src/components/input/index.d.ts.map +0 -1
- package/dist/src/components/maskedInput/index.d.ts.map +0 -1
- package/dist/src/components/modal/modalContainer/index.d.ts.map +0 -1
- package/dist/src/components/modal/modalContext.d.ts.map +0 -1
- package/dist/src/components/modal/modalFooter/index.d.ts.map +0 -1
- package/dist/src/components/modal/modalHeader/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectChevron/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectContainer/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectContent/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectMark/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectOption/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectOptionsContainer/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectOverlay/index.d.ts.map +0 -1
- package/dist/src/components/multiSelect/multiSelectSpinner/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputContainer/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputCountriesOverlay/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputCountryOption/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputCountryOptionsContainer/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputCountrySelector/index.d.ts.map +0 -1
- package/dist/src/components/phoneInput/phoneInputMask/index.d.ts.map +0 -1
- package/dist/src/components/radio/radioBox/index.d.ts.map +0 -1
- package/dist/src/components/radio/radioContext.d.ts.map +0 -1
- package/dist/src/components/radio/radioGroup/index.d.ts.map +0 -1
- package/dist/src/components/slider/index.d.ts.map +0 -1
- package/dist/src/components/switch/index.d.ts.map +0 -1
- package/dist/src/components/tab/tabButton/index.d.ts.map +0 -1
- package/dist/src/components/tab/tabContainer/index.d.ts.map +0 -1
- package/dist/src/components/tab/tabContext.d.ts.map +0 -1
- package/dist/src/components/textarea/index.d.ts.map +0 -1
- package/dist/src/components/tooltip/index.d.ts.map +0 -1
- package/dist/src/hooks/useForm.d.ts.map +0 -1
- package/dist/src/hooks/useScopedParams.d.ts.map +0 -1
- package/dist/src/hooks/useScrollLock.d.ts.map +0 -1
- package/dist/src/hooks/useSlider.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/providers/formProvider.d.ts.map +0 -1
- package/dist/src/services/iconRenderer.d.ts.map +0 -1
- package/dist/src/services/maskCurrencyValues.d.ts.map +0 -1
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.d.ts.map +0 -1
- package/dist/vite.config.js +0 -30
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -4
- package/documentation/css/reset.css +0 -38
- package/documentation/css/variables.css +0 -41
- package/documentation/index.html +0 -13
- package/documentation/src/app.tsx +0 -93
- package/documentation/src/components/examples.alert.tsx +0 -49
- package/documentation/src/components/examples.audioPlayer.tsx +0 -16
- package/documentation/src/components/examples.badge.tsx +0 -38
- package/documentation/src/components/examples.button.tsx +0 -66
- package/documentation/src/components/examples.cardTab.tsx +0 -36
- package/documentation/src/components/examples.checkbox.tsx +0 -94
- package/documentation/src/components/examples.currencyInput.tsx +0 -263
- package/documentation/src/components/examples.divider.tsx +0 -12
- package/documentation/src/components/examples.drawer.tsx +0 -43
- package/documentation/src/components/examples.iconButton.tsx +0 -78
- package/documentation/src/components/examples.input.tsx +0 -256
- package/documentation/src/components/examples.maskedInput.tsx +0 -274
- package/documentation/src/components/examples.modal.tsx +0 -31
- package/documentation/src/components/examples.multiSelect.tsx +0 -320
- package/documentation/src/components/examples.phoneInput.tsx +0 -262
- package/documentation/src/components/examples.radio.tsx +0 -149
- package/documentation/src/components/examples.slider.tsx +0 -28
- package/documentation/src/components/examples.switch.tsx +0 -180
- package/documentation/src/components/examples.tab.tsx +0 -36
- package/documentation/src/components/examples.texarea.tsx +0 -188
- package/documentation/src/components/examples.tooltip.tsx +0 -45
- package/documentation/src/main.tsx +0 -12
- package/documentation/src/ui/box.tsx +0 -17
- package/documentation/src/ui/row.tsx +0 -11
- package/documentation/vite.config.ts +0 -13
- package/src/components/alert/alertContainer/index.tsx +0 -92
- package/src/components/alert/alertContainer/styles.css +0 -33
- package/src/components/alert/alertContent/index.tsx +0 -53
- package/src/components/alert/alertContent/styles.css +0 -5
- package/src/components/alert/alertDescription/index.tsx +0 -57
- package/src/components/alert/alertDescription/styles.css +0 -7
- package/src/components/alert/alertIcon/index.tsx +0 -79
- package/src/components/alert/alertIcon/styles.css +0 -23
- package/src/components/alert/alertTitle/index.tsx +0 -54
- package/src/components/alert/alertTitle/styles.css +0 -7
- package/src/components/audioPlayer/index.tsx +0 -187
- package/src/components/audioPlayer/styles.css +0 -50
- package/src/components/badge/index.tsx +0 -80
- package/src/components/badge/styles.css +0 -145
- package/src/components/button/index.tsx +0 -104
- package/src/components/button/styles.css +0 -208
- package/src/components/cardTab/cardTabButton/index.tsx +0 -114
- package/src/components/cardTab/cardTabButton/styles.css +0 -30
- package/src/components/cardTab/cardTabContainer/index.tsx +0 -121
- package/src/components/cardTab/cardTabContainer/styles.css +0 -9
- package/src/components/cardTab/cardTabContext.tsx +0 -30
- package/src/components/checkbox/index.tsx +0 -158
- package/src/components/checkbox/styles.css +0 -78
- package/src/components/currencyInput/index.tsx +0 -312
- package/src/components/currencyInput/style.css +0 -226
- package/src/components/divider/index.tsx +0 -58
- package/src/components/divider/styles.css +0 -17
- package/src/components/drawer/drawerContainer/index.tsx +0 -123
- package/src/components/drawer/drawerContainer/styles.css +0 -46
- package/src/components/drawer/drawerContext.tsx +0 -26
- package/src/components/drawer/drawerHeader/index.tsx +0 -88
- package/src/components/drawer/drawerHeader/styles.css +0 -38
- package/src/components/fieldError/index.tsx +0 -43
- package/src/components/fieldError/styles.css +0 -6
- package/src/components/fieldLabel/index.tsx +0 -52
- package/src/components/fieldLabel/styles.css +0 -15
- package/src/components/fieldWrapper/index.tsx +0 -54
- package/src/components/fieldWrapper/styles.css +0 -7
- package/src/components/iconButton/index.tsx +0 -83
- package/src/components/iconButton/styles.css +0 -166
- package/src/components/input/index.tsx +0 -233
- package/src/components/input/style.css +0 -226
- package/src/components/maskedInput/index.tsx +0 -260
- package/src/components/maskedInput/style.css +0 -226
- package/src/components/modal/modalContainer/index.tsx +0 -127
- package/src/components/modal/modalContainer/styles.css +0 -37
- package/src/components/modal/modalContext.tsx +0 -26
- package/src/components/modal/modalFooter/index.tsx +0 -80
- package/src/components/modal/modalFooter/styles.css +0 -27
- package/src/components/modal/modalHeader/index.tsx +0 -99
- package/src/components/modal/modalHeader/styles.css +0 -38
- package/src/components/multiSelect/index.tsx +0 -319
- package/src/components/multiSelect/multiSelectChevron/index.tsx +0 -26
- package/src/components/multiSelect/multiSelectChevron/styles.css +0 -7
- package/src/components/multiSelect/multiSelectContainer/index.tsx +0 -51
- package/src/components/multiSelect/multiSelectContainer/styles.css +0 -134
- package/src/components/multiSelect/multiSelectContent/index.tsx +0 -15
- package/src/components/multiSelect/multiSelectContent/styles.css +0 -24
- package/src/components/multiSelect/multiSelectMark/index.tsx +0 -32
- package/src/components/multiSelect/multiSelectMark/styles.css +0 -44
- package/src/components/multiSelect/multiSelectOption/index.tsx +0 -25
- package/src/components/multiSelect/multiSelectOption/styles.css +0 -37
- package/src/components/multiSelect/multiSelectOptionsContainer/index.tsx +0 -81
- package/src/components/multiSelect/multiSelectOptionsContainer/styles.css +0 -45
- package/src/components/multiSelect/multiSelectOverlay/index.tsx +0 -14
- package/src/components/multiSelect/multiSelectOverlay/styles.css +0 -8
- package/src/components/multiSelect/multiSelectSpinner/index.tsx +0 -22
- package/src/components/multiSelect/multiSelectSpinner/styles.css +0 -12
- package/src/components/phoneInput/index.tsx +0 -332
- package/src/components/phoneInput/phoneInputContainer/index.tsx +0 -46
- package/src/components/phoneInput/phoneInputContainer/styles.css +0 -59
- package/src/components/phoneInput/phoneInputCountriesOverlay/index.tsx +0 -16
- package/src/components/phoneInput/phoneInputCountriesOverlay/styles.css +0 -8
- package/src/components/phoneInput/phoneInputCountryOption/index.tsx +0 -35
- package/src/components/phoneInput/phoneInputCountryOption/styles.css +0 -50
- package/src/components/phoneInput/phoneInputCountryOptionsContainer/index.tsx +0 -77
- package/src/components/phoneInput/phoneInputCountryOptionsContainer/styles.css +0 -59
- package/src/components/phoneInput/phoneInputCountrySelector/index.tsx +0 -37
- package/src/components/phoneInput/phoneInputCountrySelector/styles.css +0 -26
- package/src/components/phoneInput/phoneInputMask/index.tsx +0 -105
- package/src/components/phoneInput/phoneInputMask/style.css +0 -36
- package/src/components/radio/radioBox/index.tsx +0 -124
- package/src/components/radio/radioBox/styles.css +0 -95
- package/src/components/radio/radioContext.tsx +0 -34
- package/src/components/radio/radioGroup/index.tsx +0 -150
- package/src/components/radio/radioGroup/styles.css +0 -5
- package/src/components/slider/index.tsx +0 -132
- package/src/components/slider/styles.css +0 -45
- package/src/components/switch/index.tsx +0 -156
- package/src/components/switch/styles.css +0 -90
- package/src/components/tab/tabButton/index.tsx +0 -114
- package/src/components/tab/tabButton/styles.css +0 -41
- package/src/components/tab/tabContainer/index.tsx +0 -121
- package/src/components/tab/tabContainer/styles.css +0 -11
- package/src/components/tab/tabContext.tsx +0 -28
- package/src/components/textarea/index.tsx +0 -193
- package/src/components/textarea/styles.css +0 -93
- package/src/components/tooltip/index.tsx +0 -172
- package/src/components/tooltip/styles.css +0 -112
- package/src/hooks/useForm.ts +0 -55
- package/src/hooks/useScopedParams.ts +0 -111
- package/src/hooks/useScrollLock.ts +0 -52
- package/src/hooks/useSlider.ts +0 -52
- package/src/index.ts +0 -44
- package/src/providers/formProvider.tsx +0 -88
- package/src/services/iconRenderer.tsx +0 -23
- package/src/services/maskCurrencyValues.ts +0 -54
- package/src/utils/phoneInputUtilities.ts +0 -138
- package/tsconfig.json +0 -35
- package/variables.css +0 -41
- package/vite.config.ts +0 -31
- package/vitest.config.ts +0 -5
- /package/dist/{src/components → components}/alert/alertContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/alert/alertContainer/index.js +0 -0
- /package/dist/{src/components → components}/alert/alertContent/index.d.ts +0 -0
- /package/dist/{src/components → components}/alert/alertContent/index.js +0 -0
- /package/dist/{src/components → components}/alert/alertDescription/index.d.ts +0 -0
- /package/dist/{src/components → components}/alert/alertDescription/index.js +0 -0
- /package/dist/{src/components → components}/alert/alertIcon/index.d.ts +0 -0
- /package/dist/{src/components → components}/alert/alertIcon/index.js +0 -0
- /package/dist/{src/components → components}/alert/alertTitle/index.d.ts +0 -0
- /package/dist/{src/components → components}/alert/alertTitle/index.js +0 -0
- /package/dist/{src/components → components}/audioPlayer/index.d.ts +0 -0
- /package/dist/{src/components → components}/audioPlayer/index.js +0 -0
- /package/dist/{src/components → components}/badge/index.d.ts +0 -0
- /package/dist/{src/components → components}/badge/index.js +0 -0
- /package/dist/{src/components → components}/button/index.d.ts +0 -0
- /package/dist/{src/components → components}/button/index.js +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabButton/index.d.ts +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabButton/index.js +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabContainer/index.js +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabContext.d.ts +0 -0
- /package/dist/{src/components → components}/cardTab/cardTabContext.js +0 -0
- /package/dist/{src/components → components}/checkbox/index.d.ts +0 -0
- /package/dist/{src/components → components}/checkbox/index.js +0 -0
- /package/dist/{src/components → components}/currencyInput/index.d.ts +0 -0
- /package/dist/{src/components → components}/currencyInput/index.js +0 -0
- /package/dist/{src/components → components}/divider/index.d.ts +0 -0
- /package/dist/{src/components → components}/divider/index.js +0 -0
- /package/dist/{src/components → components}/drawer/drawerContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/drawer/drawerContainer/index.js +0 -0
- /package/dist/{src/components → components}/drawer/drawerContext.d.ts +0 -0
- /package/dist/{src/components → components}/drawer/drawerContext.js +0 -0
- /package/dist/{src/components → components}/drawer/drawerHeader/index.d.ts +0 -0
- /package/dist/{src/components → components}/drawer/drawerHeader/index.js +0 -0
- /package/dist/{src/components → components}/fieldError/index.d.ts +0 -0
- /package/dist/{src/components → components}/fieldError/index.js +0 -0
- /package/dist/{src/components → components}/fieldLabel/index.d.ts +0 -0
- /package/dist/{src/components → components}/fieldLabel/index.js +0 -0
- /package/dist/{src/components → components}/fieldWrapper/index.d.ts +0 -0
- /package/dist/{src/components → components}/fieldWrapper/index.js +0 -0
- /package/dist/{src/components → components}/iconButton/index.d.ts +0 -0
- /package/dist/{src/components → components}/iconButton/index.js +0 -0
- /package/dist/{src/components → components}/input/index.d.ts +0 -0
- /package/dist/{src/components → components}/input/index.js +0 -0
- /package/dist/{src/components → components}/maskedInput/index.d.ts +0 -0
- /package/dist/{src/components → components}/maskedInput/index.js +0 -0
- /package/dist/{src/components → components}/modal/modalContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/modal/modalContainer/index.js +0 -0
- /package/dist/{src/components → components}/modal/modalContext.d.ts +0 -0
- /package/dist/{src/components → components}/modal/modalContext.js +0 -0
- /package/dist/{src/components → components}/modal/modalFooter/index.d.ts +0 -0
- /package/dist/{src/components → components}/modal/modalFooter/index.js +0 -0
- /package/dist/{src/components → components}/modal/modalHeader/index.d.ts +0 -0
- /package/dist/{src/components → components}/modal/modalHeader/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectChevron/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectChevron/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectContainer/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectContent/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectContent/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectMark/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectMark/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOption/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOption/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOptionsContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOptionsContainer/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOverlay/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectOverlay/index.js +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectSpinner/index.d.ts +0 -0
- /package/dist/{src/components → components}/multiSelect/multiSelectSpinner/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputContainer/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountriesOverlay/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountriesOverlay/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountryOption/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountryOption/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountryOptionsContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountryOptionsContainer/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountrySelector/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputCountrySelector/index.js +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputMask/index.d.ts +0 -0
- /package/dist/{src/components → components}/phoneInput/phoneInputMask/index.js +0 -0
- /package/dist/{src/components → components}/radio/radioBox/index.d.ts +0 -0
- /package/dist/{src/components → components}/radio/radioBox/index.js +0 -0
- /package/dist/{src/components → components}/radio/radioContext.d.ts +0 -0
- /package/dist/{src/components → components}/radio/radioContext.js +0 -0
- /package/dist/{src/components → components}/radio/radioGroup/index.d.ts +0 -0
- /package/dist/{src/components → components}/radio/radioGroup/index.js +0 -0
- /package/dist/{src/components → components}/slider/index.d.ts +0 -0
- /package/dist/{src/components → components}/slider/index.js +0 -0
- /package/dist/{src/components → components}/switch/index.d.ts +0 -0
- /package/dist/{src/components → components}/switch/index.js +0 -0
- /package/dist/{src/components → components}/tab/tabButton/index.d.ts +0 -0
- /package/dist/{src/components → components}/tab/tabButton/index.js +0 -0
- /package/dist/{src/components → components}/tab/tabContainer/index.d.ts +0 -0
- /package/dist/{src/components → components}/tab/tabContainer/index.js +0 -0
- /package/dist/{src/components → components}/tab/tabContext.d.ts +0 -0
- /package/dist/{src/components → components}/tab/tabContext.js +0 -0
- /package/dist/{src/components → components}/textarea/index.d.ts +0 -0
- /package/dist/{src/components → components}/textarea/index.js +0 -0
- /package/dist/{src/components → components}/tooltip/index.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useForm.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useForm.js +0 -0
- /package/dist/{src/hooks → hooks}/useScopedParams.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useScopedParams.js +0 -0
- /package/dist/{src/hooks → hooks}/useScrollLock.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useScrollLock.js +0 -0
- /package/dist/{src/hooks → hooks}/useSlider.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useSlider.js +0 -0
- /package/dist/{src/providers → providers}/formProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/formProvider.js +0 -0
- /package/dist/{src/services → services}/iconRenderer.d.ts +0 -0
- /package/dist/{src/services → services}/iconRenderer.js +0 -0
- /package/dist/{src/services → services}/maskCurrencyValues.d.ts +0 -0
- /package/dist/{src/services → services}/maskCurrencyValues.js +0 -0
- /package/dist/{src/utils → utils}/phoneInputUtilities.d.ts +0 -0
- /package/dist/{src/utils → utils}/phoneInputUtilities.js +0 -0
@@ -1,80 +0,0 @@
|
|
1
|
-
import { HTMLAttributes } from "react";
|
2
|
-
import "./styles.css";
|
3
|
-
|
4
|
-
type ModalFooterProps = HTMLAttributes<HTMLElement> & {
|
5
|
-
alignment?: "left" | "center" | "right" | "between" | "around";
|
6
|
-
};
|
7
|
-
|
8
|
-
/**
|
9
|
-
* ModalFooter component - footer section for modals with flexible alignment options
|
10
|
-
*
|
11
|
-
* @param props - ModalFooter component properties
|
12
|
-
* @param props.alignment - Content alignment within the footer. Default: "right"
|
13
|
-
*
|
14
|
-
* **...Other valid HTML properties for footer element**
|
15
|
-
*
|
16
|
-
* @returns ModalFooter JSX element
|
17
|
-
*
|
18
|
-
* @example
|
19
|
-
* ```tsx
|
20
|
-
* // Basic footer with right alignment (default)
|
21
|
-
* <ModalFooter>
|
22
|
-
* <button>Cancel</button>
|
23
|
-
* <button>Save</button>
|
24
|
-
* </ModalFooter>
|
25
|
-
*
|
26
|
-
* // Left aligned footer
|
27
|
-
* <ModalFooter alignment="left">
|
28
|
-
* <button>Delete</button>
|
29
|
-
* </ModalFooter>
|
30
|
-
*
|
31
|
-
* // Center aligned footer
|
32
|
-
* <ModalFooter alignment="center">
|
33
|
-
* <button>OK</button>
|
34
|
-
* </ModalFooter>
|
35
|
-
*
|
36
|
-
* // Space between buttons
|
37
|
-
* <ModalFooter alignment="between">
|
38
|
-
* <button>Cancel</button>
|
39
|
-
* <button>Confirm</button>
|
40
|
-
* </ModalFooter>
|
41
|
-
*
|
42
|
-
* // Space around buttons
|
43
|
-
* <ModalFooter alignment="around">
|
44
|
-
* <button>Previous</button>
|
45
|
-
* <button>Next</button>
|
46
|
-
* <button>Finish</button>
|
47
|
-
* </ModalFooter>
|
48
|
-
*
|
49
|
-
* // Complete modal example
|
50
|
-
* <ModalContainer isVisible={isOpen} makeInvisible={() => setIsOpen(false)}>
|
51
|
-
* <div className="modal-content">
|
52
|
-
* <header>
|
53
|
-
* <h2>Confirm Action</h2>
|
54
|
-
* </header>
|
55
|
-
*
|
56
|
-
* <main>
|
57
|
-
* <p>Are you sure you want to delete this item?</p>
|
58
|
-
* </main>
|
59
|
-
*
|
60
|
-
* <ModalFooter alignment="right">
|
61
|
-
* <button onClick={() => setIsOpen(false)}>
|
62
|
-
* Cancel
|
63
|
-
* </button>
|
64
|
-
* <button onClick={handleDelete}>
|
65
|
-
* Delete
|
66
|
-
* </button>
|
67
|
-
* </ModalFooter>
|
68
|
-
* </div>
|
69
|
-
* </ModalContainer>
|
70
|
-
* ```
|
71
|
-
*/
|
72
|
-
|
73
|
-
function ModalFooter(args: ModalFooterProps) {
|
74
|
-
const { alignment = "right", className: baseClassName, ...rest } = args;
|
75
|
-
const className = `arkynModalFooter ${alignment} ${baseClassName}`;
|
76
|
-
|
77
|
-
return <footer className={className.trim()} {...rest} />;
|
78
|
-
}
|
79
|
-
|
80
|
-
export { ModalFooter };
|
@@ -1,27 +0,0 @@
|
|
1
|
-
.arkynModalFooter {
|
2
|
-
display: flex;
|
3
|
-
align-items: center;
|
4
|
-
gap: 16px;
|
5
|
-
padding: 16px;
|
6
|
-
border-top: 1px solid var(--border);
|
7
|
-
}
|
8
|
-
|
9
|
-
.arkynModalFooter.left {
|
10
|
-
justify-content: flex-start;
|
11
|
-
}
|
12
|
-
|
13
|
-
.arkynModalFooter.right {
|
14
|
-
justify-content: flex-end;
|
15
|
-
}
|
16
|
-
|
17
|
-
.arkynModalFooter.center {
|
18
|
-
justify-content: center;
|
19
|
-
}
|
20
|
-
|
21
|
-
.arkynModalFooter.between {
|
22
|
-
justify-content: space-between;
|
23
|
-
}
|
24
|
-
|
25
|
-
.arkynModalFooter.around {
|
26
|
-
justify-content: space-around;
|
27
|
-
}
|
@@ -1,99 +0,0 @@
|
|
1
|
-
import { X } from "lucide-react";
|
2
|
-
import { HTMLAttributes } from "react";
|
3
|
-
|
4
|
-
import { useModal } from "../modalContext";
|
5
|
-
import "./styles.css";
|
6
|
-
|
7
|
-
type ModalHeaderProps = HTMLAttributes<HTMLElement> & {
|
8
|
-
showCloseButton?: boolean;
|
9
|
-
};
|
10
|
-
|
11
|
-
/**
|
12
|
-
* ModalHeader component - header section for modals with optional close button
|
13
|
-
*
|
14
|
-
* @param props - ModalHeader component properties
|
15
|
-
* @param props.showCloseButton - Shows close button in header. Default: true
|
16
|
-
*
|
17
|
-
* **...Other valid HTML properties for header element**
|
18
|
-
*
|
19
|
-
* @returns ModalHeader JSX element
|
20
|
-
*
|
21
|
-
* @example
|
22
|
-
* ```tsx
|
23
|
-
* // Basic modal header with close button
|
24
|
-
* <ModalHeader>
|
25
|
-
* <h2>Modal Title</h2>
|
26
|
-
* </ModalHeader>
|
27
|
-
*
|
28
|
-
* // Header without close button
|
29
|
-
* <ModalHeader showCloseButton={false}>
|
30
|
-
* <h2>Important Notice</h2>
|
31
|
-
* </ModalHeader>
|
32
|
-
*
|
33
|
-
* // Header with subtitle
|
34
|
-
* <ModalHeader>
|
35
|
-
* <div>
|
36
|
-
* <h2>Settings</h2>
|
37
|
-
* <p>Manage your preferences</p>
|
38
|
-
* </div>
|
39
|
-
* </ModalHeader>
|
40
|
-
*
|
41
|
-
* // Complete modal example
|
42
|
-
* <ModalContainer isVisible={isOpen} makeInvisible={() => setIsOpen(false)}>
|
43
|
-
* <div className="modal-content">
|
44
|
-
* <ModalHeader>
|
45
|
-
* <h2>Confirm Delete</h2>
|
46
|
-
* <p>This action cannot be undone</p>
|
47
|
-
* </ModalHeader>
|
48
|
-
*
|
49
|
-
* <main>
|
50
|
-
* <p>Are you sure you want to delete this item?</p>
|
51
|
-
* </main>
|
52
|
-
*
|
53
|
-
* <ModalFooter>
|
54
|
-
* <button onClick={() => setIsOpen(false)}>Cancel</button>
|
55
|
-
* <button onClick={handleDelete}>Delete</button>
|
56
|
-
* </ModalFooter>
|
57
|
-
* </div>
|
58
|
-
* </ModalContainer>
|
59
|
-
*
|
60
|
-
* // Custom styled header
|
61
|
-
* <ModalHeader className="custom-header">
|
62
|
-
* <div className="header-content">
|
63
|
-
* <img src="/icon.png" alt="Icon" />
|
64
|
-
* <h1>Welcome</h1>
|
65
|
-
* </div>
|
66
|
-
* </ModalHeader>
|
67
|
-
* ```
|
68
|
-
*/
|
69
|
-
|
70
|
-
function ModalHeader(args: ModalHeaderProps) {
|
71
|
-
const {
|
72
|
-
showCloseButton = true,
|
73
|
-
className: baseClassName,
|
74
|
-
children,
|
75
|
-
...rest
|
76
|
-
} = args;
|
77
|
-
|
78
|
-
const { makeInvisible } = useModal();
|
79
|
-
const className = `arkynModalHeader ${baseClassName}`;
|
80
|
-
|
81
|
-
return (
|
82
|
-
<header className={className.trim()} {...rest}>
|
83
|
-
{children}
|
84
|
-
|
85
|
-
{showCloseButton && (
|
86
|
-
<button
|
87
|
-
type="button"
|
88
|
-
onClick={makeInvisible}
|
89
|
-
aria-label="Close modal button"
|
90
|
-
className="arkynModalHeaderCloseButton"
|
91
|
-
>
|
92
|
-
<X size={24} />
|
93
|
-
</button>
|
94
|
-
)}
|
95
|
-
</header>
|
96
|
-
);
|
97
|
-
}
|
98
|
-
|
99
|
-
export { ModalHeader };
|
@@ -1,38 +0,0 @@
|
|
1
|
-
.arkynModalHeader {
|
2
|
-
display: flex;
|
3
|
-
align-items: center;
|
4
|
-
|
5
|
-
height: 56px;
|
6
|
-
padding: 16px;
|
7
|
-
|
8
|
-
font-size: 16px;
|
9
|
-
font-weight: 600;
|
10
|
-
line-height: 20px;
|
11
|
-
|
12
|
-
color: var(--text-heading);
|
13
|
-
|
14
|
-
border-bottom: 1px solid var(--border);
|
15
|
-
}
|
16
|
-
|
17
|
-
.arkynModalHeaderCloseButton {
|
18
|
-
display: flex;
|
19
|
-
align-items: center;
|
20
|
-
justify-content: center;
|
21
|
-
|
22
|
-
margin-left: auto;
|
23
|
-
|
24
|
-
padding: 2px;
|
25
|
-
border-radius: 4px;
|
26
|
-
|
27
|
-
border: none;
|
28
|
-
background: none;
|
29
|
-
|
30
|
-
color: var(--text-body);
|
31
|
-
background-color: var(--card);
|
32
|
-
transition: all 0.15s ease-out;
|
33
|
-
}
|
34
|
-
|
35
|
-
.arkynModalHeaderCloseButton:hover {
|
36
|
-
cursor: pointer;
|
37
|
-
filter: brightness(0.9);
|
38
|
-
}
|
@@ -1,319 +0,0 @@
|
|
1
|
-
import { LucideIcon } from "lucide-react";
|
2
|
-
import { FocusEvent, useId, useRef, useState } from "react";
|
3
|
-
|
4
|
-
import { useForm } from "../../hooks/useForm";
|
5
|
-
import { IconRenderer } from "../../services/iconRenderer";
|
6
|
-
|
7
|
-
import { FieldError } from "../fieldError";
|
8
|
-
import { FieldLabel } from "../fieldLabel";
|
9
|
-
import { FieldWrapper } from "../fieldWrapper";
|
10
|
-
import { MultiSelectChevron } from "./multiSelectChevron";
|
11
|
-
import { MultiSelectContainer } from "./multiSelectContainer";
|
12
|
-
import { MultiSelectContent } from "./multiSelectContent";
|
13
|
-
import { MultiSelectMark } from "./multiSelectMark";
|
14
|
-
import { MultiSelectOption } from "./multiSelectOption";
|
15
|
-
import { MultiSelectOptionsContainer } from "./multiSelectOptionsContainer";
|
16
|
-
import { MultiSelectOverlay } from "./multiSelectOverlay";
|
17
|
-
import { MultiSelectSpinner } from "./multiSelectSpinner";
|
18
|
-
|
19
|
-
type MultiSelectProps = {
|
20
|
-
name: string;
|
21
|
-
options: { label: string; value: string }[];
|
22
|
-
|
23
|
-
id?: string;
|
24
|
-
value?: string[];
|
25
|
-
defaultValue?: string[];
|
26
|
-
showAsterisk?: boolean;
|
27
|
-
label?: string;
|
28
|
-
errorMessage?: string;
|
29
|
-
|
30
|
-
placeholder?: string;
|
31
|
-
notFoundText?: string;
|
32
|
-
className?: string;
|
33
|
-
|
34
|
-
disabled?: boolean;
|
35
|
-
readOnly?: boolean;
|
36
|
-
|
37
|
-
isLoading?: boolean;
|
38
|
-
isSearchable?: boolean;
|
39
|
-
|
40
|
-
closeOnSelect?: boolean;
|
41
|
-
|
42
|
-
onSearch?: (value: string) => void;
|
43
|
-
onChange?: (value: string[]) => void;
|
44
|
-
|
45
|
-
onFocus?: () => void;
|
46
|
-
onBlur?: (e: FocusEvent<HTMLDivElement>) => void;
|
47
|
-
|
48
|
-
size?: "md" | "lg";
|
49
|
-
variant?: "solid" | "outline" | "underline";
|
50
|
-
|
51
|
-
prefix?: string | LucideIcon;
|
52
|
-
leftIcon?: LucideIcon;
|
53
|
-
|
54
|
-
optionMaxHeight?: number;
|
55
|
-
};
|
56
|
-
|
57
|
-
/**
|
58
|
-
* MultiSelect component - used for selecting multiple options from a dropdown list with support for search, labels, and validation
|
59
|
-
*
|
60
|
-
* @param props - MultiSelect component properties
|
61
|
-
* @param props.name - Required field name for form handling
|
62
|
-
* @param props.options - Array of options with label and value properties
|
63
|
-
* @param props.id - Optional unique identifier for the component
|
64
|
-
* @param props.value - Controlled value array of selected option values
|
65
|
-
* @param props.defaultValue - Default selected values. Default: []
|
66
|
-
* @param props.showAsterisk - Whether to show asterisk on label for required fields
|
67
|
-
* @param props.label - Optional label text to display above the multiselect
|
68
|
-
* @param props.errorMessage - Error message to display below the multiselect
|
69
|
-
* @param props.placeholder - Placeholder text when no options are selected. Default: "Selecione..."
|
70
|
-
* @param props.notFoundText - Text to display when no options match search. Default: "Sem opções disponíveis"
|
71
|
-
* @param props.className - Additional CSS classes to apply
|
72
|
-
* @param props.disabled - Whether the multiselect is disabled. Default: false
|
73
|
-
* @param props.readOnly - Whether the multiselect is read-only. Default: false
|
74
|
-
* @param props.isLoading - Controls loading state with spinner. Default: false
|
75
|
-
* @param props.isSearchable - Whether the multiselect supports search functionality. Default: false
|
76
|
-
* @param props.closeOnSelect - Whether to close dropdown after selecting an option. Default: false
|
77
|
-
* @param props.onSearch - Callback function called when search value changes
|
78
|
-
* @param props.onChange - Callback function called when selected values change
|
79
|
-
* @param props.onFocus - Callback function called when multiselect gains focus
|
80
|
-
* @param props.onBlur - Callback function called when multiselect loses focus
|
81
|
-
* @param props.size - MultiSelect size. Default: "md"
|
82
|
-
* @param props.variant - Visual variant of the multiselect. Default: "solid"
|
83
|
-
* @param props.prefix - Text or icon to display at the beginning of the multiselect
|
84
|
-
* @param props.leftIcon - Optional icon to display on the left side
|
85
|
-
* @param props.optionMaxHeight - Maximum height for the options dropdown
|
86
|
-
*
|
87
|
-
* @returns MultiSelect JSX element wrapped in FieldWrapper with optional label and error
|
88
|
-
*
|
89
|
-
* @example
|
90
|
-
* ```tsx
|
91
|
-
* // Basic multiselect
|
92
|
-
* <MultiSelect
|
93
|
-
* name="categories"
|
94
|
-
* options={[
|
95
|
-
* { label: "Technology", value: "tech" },
|
96
|
-
* { label: "Design", value: "design" },
|
97
|
-
* { label: "Marketing", value: "marketing" }
|
98
|
-
* ]}
|
99
|
-
* />
|
100
|
-
*
|
101
|
-
* // MultiSelect with label and validation
|
102
|
-
* <MultiSelect
|
103
|
-
* name="skills"
|
104
|
-
* label="Select Skills"
|
105
|
-
* showAsterisk
|
106
|
-
* errorMessage="Please select at least one skill"
|
107
|
-
* options={skillOptions}
|
108
|
-
* placeholder="Choose your skills..."
|
109
|
-
* />
|
110
|
-
*
|
111
|
-
* // Searchable multiselect with custom styling
|
112
|
-
* <MultiSelect
|
113
|
-
* name="countries"
|
114
|
-
* label="Countries"
|
115
|
-
* isSearchable
|
116
|
-
* variant="outline"
|
117
|
-
* size="lg"
|
118
|
-
* leftIcon={GlobeIcon}
|
119
|
-
* options={countryOptions}
|
120
|
-
* notFoundText="No countries found"
|
121
|
-
* />
|
122
|
-
*
|
123
|
-
* // Controlled multiselect with callbacks
|
124
|
-
* <MultiSelect
|
125
|
-
* name="tags"
|
126
|
-
* label="Tags"
|
127
|
-
* value={selectedTags}
|
128
|
-
* onChange={setSelectedTags}
|
129
|
-
* onSearch={handleSearch}
|
130
|
-
* closeOnSelect={false}
|
131
|
-
* isLoading={isLoadingTags}
|
132
|
-
* options={tagOptions}
|
133
|
-
* />
|
134
|
-
*
|
135
|
-
* // MultiSelect with prefix and custom behavior
|
136
|
-
* <MultiSelect
|
137
|
-
* name="departments"
|
138
|
-
* label="Departments"
|
139
|
-
* prefix="Dept:"
|
140
|
-
* closeOnSelect={true}
|
141
|
-
* variant="underline"
|
142
|
-
* defaultValue={["hr", "it"]}
|
143
|
-
* options={departmentOptions}
|
144
|
-
* />
|
145
|
-
* ```
|
146
|
-
*/
|
147
|
-
|
148
|
-
function MultiSelect(props: MultiSelectProps) {
|
149
|
-
const {
|
150
|
-
name,
|
151
|
-
options,
|
152
|
-
className = "",
|
153
|
-
placeholder = "Selecione...",
|
154
|
-
closeOnSelect = false,
|
155
|
-
defaultValue = [],
|
156
|
-
errorMessage: baseErrorMessage,
|
157
|
-
isLoading = false,
|
158
|
-
readOnly = false,
|
159
|
-
isSearchable = false,
|
160
|
-
id,
|
161
|
-
label,
|
162
|
-
optionMaxHeight,
|
163
|
-
showAsterisk,
|
164
|
-
leftIcon: LeftIcon,
|
165
|
-
onSearch,
|
166
|
-
onChange,
|
167
|
-
onBlur,
|
168
|
-
notFoundText = "Sem opções disponíveis",
|
169
|
-
onFocus,
|
170
|
-
disabled: baseDisabled = false,
|
171
|
-
prefix,
|
172
|
-
size = "md",
|
173
|
-
value,
|
174
|
-
variant = "solid",
|
175
|
-
} = props;
|
176
|
-
|
177
|
-
const { fieldErrors } = useForm();
|
178
|
-
|
179
|
-
const multiSelectRef = useRef<HTMLInputElement>(null);
|
180
|
-
const multiSelectId = id || useId();
|
181
|
-
|
182
|
-
const errorMessage = baseErrorMessage || fieldErrors?.[name];
|
183
|
-
const isError = !!errorMessage;
|
184
|
-
const disabled = baseDisabled || isLoading || readOnly;
|
185
|
-
|
186
|
-
const iconSizes = { md: 20, lg: 20 };
|
187
|
-
const iconSize = iconSizes[size];
|
188
|
-
|
189
|
-
const [search, setSearch] = useState("");
|
190
|
-
const [isFocused, setIsFocused] = useState(false);
|
191
|
-
const [selectedOptions, setSelectedOptions] = useState(defaultValue);
|
192
|
-
|
193
|
-
const forceSelectedOptions = value || selectedOptions;
|
194
|
-
|
195
|
-
function optionHasSelected(value: string) {
|
196
|
-
return forceSelectedOptions.includes(value);
|
197
|
-
}
|
198
|
-
|
199
|
-
function getOptionLabel(value: string) {
|
200
|
-
const option = options.find((option) => option.value === value);
|
201
|
-
return option?.label || "";
|
202
|
-
}
|
203
|
-
|
204
|
-
function handleContainerFocus() {
|
205
|
-
if (disabled || !multiSelectRef?.current || isFocused) return;
|
206
|
-
setIsFocused(true);
|
207
|
-
multiSelectRef.current.focus();
|
208
|
-
onFocus && onFocus();
|
209
|
-
}
|
210
|
-
|
211
|
-
function handleBlur() {
|
212
|
-
setIsFocused(false);
|
213
|
-
if (onBlur && multiSelectRef.current) multiSelectRef.current.blur();
|
214
|
-
}
|
215
|
-
|
216
|
-
function handleSearch(value: string) {
|
217
|
-
setSearch(value);
|
218
|
-
if (onSearch) onSearch(value);
|
219
|
-
}
|
220
|
-
|
221
|
-
function handleChangeValue(value: string) {
|
222
|
-
if (optionHasSelected(value)) {
|
223
|
-
setSelectedOptions(selectedOptions.filter((v) => v !== value));
|
224
|
-
if (onChange) onChange(selectedOptions.filter((v) => v !== value));
|
225
|
-
} else {
|
226
|
-
setSelectedOptions([...selectedOptions, value]);
|
227
|
-
if (onChange) onChange([...selectedOptions, value]);
|
228
|
-
}
|
229
|
-
|
230
|
-
if (closeOnSelect) handleBlur();
|
231
|
-
}
|
232
|
-
|
233
|
-
const mappedOptions = options.filter((option) => {
|
234
|
-
if (props.onSearch) return true;
|
235
|
-
if (!props.isSearchable) return true;
|
236
|
-
if (option.label.toLowerCase().includes(search.toLowerCase())) return true;
|
237
|
-
return false;
|
238
|
-
});
|
239
|
-
|
240
|
-
return (
|
241
|
-
<FieldWrapper>
|
242
|
-
{label && <FieldLabel showAsterisk={showAsterisk}>{label}</FieldLabel>}
|
243
|
-
|
244
|
-
<MultiSelectContainer
|
245
|
-
handleContainerFocus={handleContainerFocus}
|
246
|
-
disabled={disabled}
|
247
|
-
isError={isError}
|
248
|
-
isFocused={isFocused}
|
249
|
-
isLoading={isLoading}
|
250
|
-
readOnly={readOnly}
|
251
|
-
size={size}
|
252
|
-
variant={variant}
|
253
|
-
className={className}
|
254
|
-
prefixExists={!!prefix}
|
255
|
-
id={multiSelectId}
|
256
|
-
>
|
257
|
-
<input
|
258
|
-
ref={multiSelectRef}
|
259
|
-
name={name}
|
260
|
-
value={JSON.stringify(forceSelectedOptions)}
|
261
|
-
type="hidden"
|
262
|
-
/>
|
263
|
-
|
264
|
-
<IconRenderer iconSize={iconSize} icon={prefix} className="prefix" />
|
265
|
-
|
266
|
-
{LeftIcon && <LeftIcon size={iconSize} strokeWidth={2.5} />}
|
267
|
-
|
268
|
-
<MultiSelectContent size={size}>
|
269
|
-
{forceSelectedOptions.map((value) => (
|
270
|
-
<MultiSelectMark
|
271
|
-
key={value}
|
272
|
-
label={getOptionLabel(value)}
|
273
|
-
value={value}
|
274
|
-
handleChangeValue={handleChangeValue}
|
275
|
-
disabled={disabled}
|
276
|
-
/>
|
277
|
-
))}
|
278
|
-
|
279
|
-
{forceSelectedOptions.length <= 0 && <p>{placeholder}</p>}
|
280
|
-
</MultiSelectContent>
|
281
|
-
|
282
|
-
<MultiSelectOptionsContainer
|
283
|
-
isFocused={isFocused}
|
284
|
-
isSearchable={isSearchable}
|
285
|
-
search={search}
|
286
|
-
onSearch={handleSearch}
|
287
|
-
>
|
288
|
-
{mappedOptions.map(({ label, value }) => (
|
289
|
-
<MultiSelectOption
|
290
|
-
key={value}
|
291
|
-
label={label}
|
292
|
-
value={value}
|
293
|
-
size={size}
|
294
|
-
handleChangeValue={handleChangeValue}
|
295
|
-
optionHasSelected={optionHasSelected}
|
296
|
-
/>
|
297
|
-
))}
|
298
|
-
|
299
|
-
{mappedOptions.length <= 0 && <p>{notFoundText}</p>}
|
300
|
-
</MultiSelectOptionsContainer>
|
301
|
-
|
302
|
-
<MultiSelectChevron
|
303
|
-
disabled={disabled}
|
304
|
-
isFocused={isFocused}
|
305
|
-
readOnly={readOnly}
|
306
|
-
iconSize={iconSize}
|
307
|
-
isLoading={isLoading}
|
308
|
-
/>
|
309
|
-
|
310
|
-
<MultiSelectSpinner iconSize={iconSize} isLoading={isLoading} />
|
311
|
-
<MultiSelectOverlay handleBlur={handleBlur} isFocused={isFocused} />
|
312
|
-
</MultiSelectContainer>
|
313
|
-
|
314
|
-
{errorMessage && <FieldError>{errorMessage}</FieldError>}
|
315
|
-
</FieldWrapper>
|
316
|
-
);
|
317
|
-
}
|
318
|
-
|
319
|
-
export { MultiSelect };
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { ChevronDown } from "lucide-react";
|
2
|
-
import "./styles.css";
|
3
|
-
|
4
|
-
type MultiSelectChevronProps = {
|
5
|
-
isLoading: boolean;
|
6
|
-
iconSize: number;
|
7
|
-
disabled: boolean;
|
8
|
-
readOnly: boolean;
|
9
|
-
isFocused: boolean;
|
10
|
-
};
|
11
|
-
|
12
|
-
function MultiSelectChevron(props: MultiSelectChevronProps) {
|
13
|
-
const { iconSize, isLoading, disabled, readOnly, isFocused } = props;
|
14
|
-
|
15
|
-
const notAnimate = disabled || readOnly ? "notAnimate" : "";
|
16
|
-
const focused = isFocused ? "focused" : "";
|
17
|
-
|
18
|
-
const className = `arkynMultiSelectChevron ${notAnimate} ${focused}`;
|
19
|
-
|
20
|
-
if (isLoading) return <></>;
|
21
|
-
return (
|
22
|
-
<ChevronDown className={className} size={iconSize} strokeWidth={2.5} />
|
23
|
-
);
|
24
|
-
}
|
25
|
-
|
26
|
-
export { MultiSelectChevron };
|
@@ -1,51 +0,0 @@
|
|
1
|
-
import { ReactNode } from "react";
|
2
|
-
import "./styles.css";
|
3
|
-
|
4
|
-
type MultiSelectContainerProps = {
|
5
|
-
children: ReactNode;
|
6
|
-
handleContainerFocus: () => void;
|
7
|
-
prefixExists: boolean;
|
8
|
-
isError: boolean;
|
9
|
-
disabled: boolean;
|
10
|
-
readOnly: boolean;
|
11
|
-
isLoading: boolean;
|
12
|
-
isFocused: boolean;
|
13
|
-
className?: string;
|
14
|
-
id: string;
|
15
|
-
variant: "solid" | "outline" | "underline";
|
16
|
-
size: "md" | "lg";
|
17
|
-
};
|
18
|
-
|
19
|
-
function MultiSelectContainer(props: MultiSelectContainerProps) {
|
20
|
-
const {
|
21
|
-
children,
|
22
|
-
handleContainerFocus,
|
23
|
-
disabled,
|
24
|
-
isError,
|
25
|
-
isLoading,
|
26
|
-
isFocused,
|
27
|
-
className,
|
28
|
-
readOnly,
|
29
|
-
variant,
|
30
|
-
size,
|
31
|
-
id,
|
32
|
-
prefixExists,
|
33
|
-
} = props;
|
34
|
-
|
35
|
-
const hasPrefix = prefixExists ? "hasPrefix" : "";
|
36
|
-
const errored = isError ? "errored" : "";
|
37
|
-
const opacity = disabled || readOnly || isLoading ? "opacity" : "";
|
38
|
-
const focused = isFocused ? "focused" : "";
|
39
|
-
|
40
|
-
return (
|
41
|
-
<section
|
42
|
-
id={id}
|
43
|
-
className={`arkynMultiSelectContainer ${hasPrefix} ${variant} ${size} ${opacity} ${errored} ${focused} ${className}`}
|
44
|
-
onClick={handleContainerFocus}
|
45
|
-
>
|
46
|
-
{children}
|
47
|
-
</section>
|
48
|
-
);
|
49
|
-
}
|
50
|
-
|
51
|
-
export { MultiSelectContainer };
|