@techzyapp/ui-library 1.0.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/dist/Accordion-CAxa1I-m.js +112 -0
- package/dist/Accordion-CAxa1I-m.js.map +1 -0
- package/dist/Accordion-Dy_dM79Y.cjs +2 -0
- package/dist/Accordion-Dy_dM79Y.cjs.map +1 -0
- package/dist/Alert-BQpA48PY.js +71 -0
- package/dist/Alert-BQpA48PY.js.map +1 -0
- package/dist/Alert-DKIjM-9x.cjs +2 -0
- package/dist/Alert-DKIjM-9x.cjs.map +1 -0
- package/dist/Avatar-BJVCdo-K.js +60 -0
- package/dist/Avatar-BJVCdo-K.js.map +1 -0
- package/dist/Avatar-_ufXh3AY.cjs +2 -0
- package/dist/Avatar-_ufXh3AY.cjs.map +1 -0
- package/dist/AvatarGroup-DdJf4aT7.js +33 -0
- package/dist/AvatarGroup-DdJf4aT7.js.map +1 -0
- package/dist/AvatarGroup-TW1pt4tj.cjs +2 -0
- package/dist/AvatarGroup-TW1pt4tj.cjs.map +1 -0
- package/dist/Badge-BQpr2Jee.cjs +2 -0
- package/dist/Badge-BQpr2Jee.cjs.map +1 -0
- package/dist/Badge-DSWigoGC.js +50 -0
- package/dist/Badge-DSWigoGC.js.map +1 -0
- package/dist/Breadcrumbs-Bx5UgwDy.js +35 -0
- package/dist/Breadcrumbs-Bx5UgwDy.js.map +1 -0
- package/dist/Breadcrumbs-CHONper7.cjs +2 -0
- package/dist/Breadcrumbs-CHONper7.cjs.map +1 -0
- package/dist/Button-D4bfVNNa.cjs +2 -0
- package/dist/Button-D4bfVNNa.cjs.map +1 -0
- package/dist/Button-DhEv0YFk.js +72 -0
- package/dist/Button-DhEv0YFk.js.map +1 -0
- package/dist/Calendar-Bh317SaV.js +267 -0
- package/dist/Calendar-Bh317SaV.js.map +1 -0
- package/dist/Calendar-C8uNezI-.cjs +2 -0
- package/dist/Calendar-C8uNezI-.cjs.map +1 -0
- package/dist/Card-CfyaerZZ.cjs +2 -0
- package/dist/Card-CfyaerZZ.cjs.map +1 -0
- package/dist/Card-DzClqJuu.js +118 -0
- package/dist/Card-DzClqJuu.js.map +1 -0
- package/dist/Checkbox-DXOzYIAz.cjs +2 -0
- package/dist/Checkbox-DXOzYIAz.cjs.map +1 -0
- package/dist/Checkbox-XKL_Q5qj.js +84 -0
- package/dist/Checkbox-XKL_Q5qj.js.map +1 -0
- package/dist/Chip-Cfo0v3Z8.js +92 -0
- package/dist/Chip-Cfo0v3Z8.js.map +1 -0
- package/dist/Chip-DSrdXLBU.cjs +2 -0
- package/dist/Chip-DSrdXLBU.cjs.map +1 -0
- package/dist/ChoiceCardGroup-6eFM1eL0.cjs +2 -0
- package/dist/ChoiceCardGroup-6eFM1eL0.cjs.map +1 -0
- package/dist/ChoiceCardGroup-CvFzZlgI.js +181 -0
- package/dist/ChoiceCardGroup-CvFzZlgI.js.map +1 -0
- package/dist/CodeBlock-DOk5wekc.cjs +2 -0
- package/dist/CodeBlock-DOk5wekc.cjs.map +1 -0
- package/dist/CodeBlock-n3KExtTO.js +104 -0
- package/dist/CodeBlock-n3KExtTO.js.map +1 -0
- package/dist/Col-D2TfZKiM.js +13 -0
- package/dist/Col-D2TfZKiM.js.map +1 -0
- package/dist/Col-R5mAy8T9.cjs +2 -0
- package/dist/Col-R5mAy8T9.cjs.map +1 -0
- package/dist/ColorPicker-2udt1ORM.js +119 -0
- package/dist/ColorPicker-2udt1ORM.js.map +1 -0
- package/dist/ColorPicker-BwmaXCOy.cjs +2 -0
- package/dist/ColorPicker-BwmaXCOy.cjs.map +1 -0
- package/dist/ColorPickerPanel-BM9OwDDE.js +336 -0
- package/dist/ColorPickerPanel-BM9OwDDE.js.map +1 -0
- package/dist/ColorPickerPanel-ByB1mLSi.cjs +2 -0
- package/dist/ColorPickerPanel-ByB1mLSi.cjs.map +1 -0
- package/dist/ConfigProvider-2c94kUOk.js +291 -0
- package/dist/ConfigProvider-2c94kUOk.js.map +1 -0
- package/dist/ConfigProvider-ByOFXVyP.cjs +2 -0
- package/dist/ConfigProvider-ByOFXVyP.cjs.map +1 -0
- package/dist/DatePicker-DF4Epkn8.cjs +2 -0
- package/dist/DatePicker-DF4Epkn8.cjs.map +1 -0
- package/dist/DatePicker-WM9TC6L_.js +191 -0
- package/dist/DatePicker-WM9TC6L_.js.map +1 -0
- package/dist/DatePicker.module-BZDftL4g.js +138 -0
- package/dist/DatePicker.module-BZDftL4g.js.map +1 -0
- package/dist/DatePicker.module-tE-tGNBd.cjs +2 -0
- package/dist/DatePicker.module-tE-tGNBd.cjs.map +1 -0
- package/dist/DateTimePicker-C557OjBU.cjs +2 -0
- package/dist/DateTimePicker-C557OjBU.cjs.map +1 -0
- package/dist/DateTimePicker-DBtcWK0F.js +245 -0
- package/dist/DateTimePicker-DBtcWK0F.js.map +1 -0
- package/dist/Divider-CzbhdCiD.cjs +2 -0
- package/dist/Divider-CzbhdCiD.cjs.map +1 -0
- package/dist/Divider-LtH3dLgw.js +36 -0
- package/dist/Divider-LtH3dLgw.js.map +1 -0
- package/dist/Dropdown-DKAXue5_.js +146 -0
- package/dist/Dropdown-DKAXue5_.js.map +1 -0
- package/dist/Dropdown-DygP50OB.cjs +2 -0
- package/dist/Dropdown-DygP50OB.cjs.map +1 -0
- package/dist/EmptyState-CCCpZ-ZA.cjs +2 -0
- package/dist/EmptyState-CCCpZ-ZA.cjs.map +1 -0
- package/dist/EmptyState-CetM49vk.js +38 -0
- package/dist/EmptyState-CetM49vk.js.map +1 -0
- package/dist/FileUploader-B4TJHyoi.cjs +2 -0
- package/dist/FileUploader-B4TJHyoi.cjs.map +1 -0
- package/dist/FileUploader-VtmmwUFE.js +684 -0
- package/dist/FileUploader-VtmmwUFE.js.map +1 -0
- package/dist/Flag-BWCX6oSR.js +24 -0
- package/dist/Flag-BWCX6oSR.js.map +1 -0
- package/dist/Flag-EPZOrH-U.cjs +2 -0
- package/dist/Flag-EPZOrH-U.cjs.map +1 -0
- package/dist/Flex-Bj3mMF5A.js +50 -0
- package/dist/Flex-Bj3mMF5A.js.map +1 -0
- package/dist/Flex-CqL3Ghda.cjs +2 -0
- package/dist/Flex-CqL3Ghda.cjs.map +1 -0
- package/dist/FloatingPanel-BG9Uag__.js +131 -0
- package/dist/FloatingPanel-BG9Uag__.js.map +1 -0
- package/dist/FloatingPanel-U6sGYiSK.cjs +2 -0
- package/dist/FloatingPanel-U6sGYiSK.cjs.map +1 -0
- package/dist/Form-Bz2xgkEm.cjs +2 -0
- package/dist/Form-Bz2xgkEm.cjs.map +1 -0
- package/dist/Form-kglaJYr5.js +9 -0
- package/dist/Form-kglaJYr5.js.map +1 -0
- package/dist/FullscreenToggle-DDKN5n8B.cjs +2 -0
- package/dist/FullscreenToggle-DDKN5n8B.cjs.map +1 -0
- package/dist/FullscreenToggle-oWzYqUPH.js +42 -0
- package/dist/FullscreenToggle-oWzYqUPH.js.map +1 -0
- package/dist/Grid-Bw95bKkJ.cjs +2 -0
- package/dist/Grid-Bw95bKkJ.cjs.map +1 -0
- package/dist/Grid-CY-syhTX.js +24 -0
- package/dist/Grid-CY-syhTX.js.map +1 -0
- package/dist/Icon-CXTl_QAP.cjs +2 -0
- package/dist/Icon-CXTl_QAP.cjs.map +1 -0
- package/dist/Icon-CophpkHo.js +1228 -0
- package/dist/Icon-CophpkHo.js.map +1 -0
- package/dist/IconButton-CBusrDa9.js +68 -0
- package/dist/IconButton-CBusrDa9.js.map +1 -0
- package/dist/IconButton-D6TenQZ_.cjs +2 -0
- package/dist/IconButton-D6TenQZ_.cjs.map +1 -0
- package/dist/List-BHgFI9Ll.js +26 -0
- package/dist/List-BHgFI9Ll.js.map +1 -0
- package/dist/List-CNz2M3-q.cjs +2 -0
- package/dist/List-CNz2M3-q.cjs.map +1 -0
- package/dist/ListItem-B4yqZR-Z.js +74 -0
- package/dist/ListItem-B4yqZR-Z.js.map +1 -0
- package/dist/ListItem-RH-D-Wey.cjs +2 -0
- package/dist/ListItem-RH-D-Wey.cjs.map +1 -0
- package/dist/Loader-C4JoXOyA.js +28 -0
- package/dist/Loader-C4JoXOyA.js.map +1 -0
- package/dist/Loader-D1MtlQOH.cjs +2 -0
- package/dist/Loader-D1MtlQOH.cjs.map +1 -0
- package/dist/Modal-B2YSCVVt.cjs +2 -0
- package/dist/Modal-B2YSCVVt.cjs.map +1 -0
- package/dist/Modal-BuaPDlKV.js +195 -0
- package/dist/Modal-BuaPDlKV.js.map +1 -0
- package/dist/MultiSelect-BGRT_B60.js +350 -0
- package/dist/MultiSelect-BGRT_B60.js.map +1 -0
- package/dist/MultiSelect-CSJKSWpA.cjs +2 -0
- package/dist/MultiSelect-CSJKSWpA.cjs.map +1 -0
- package/dist/MultilineTextField-CwNCJ9lZ.js +123 -0
- package/dist/MultilineTextField-CwNCJ9lZ.js.map +1 -0
- package/dist/MultilineTextField-Dz6Fg8RJ.cjs +2 -0
- package/dist/MultilineTextField-Dz6Fg8RJ.cjs.map +1 -0
- package/dist/NumberField-DBpO-Z_7.cjs +2 -0
- package/dist/NumberField-DBpO-Z_7.cjs.map +1 -0
- package/dist/NumberField-DBvhSQCw.js +183 -0
- package/dist/NumberField-DBvhSQCw.js.map +1 -0
- package/dist/OtpField-BUBYyorC.cjs +2 -0
- package/dist/OtpField-BUBYyorC.cjs.map +1 -0
- package/dist/OtpField-CTq-CUbF.js +171 -0
- package/dist/OtpField-CTq-CUbF.js.map +1 -0
- package/dist/PageLayout-DddzYw2B.js +12 -0
- package/dist/PageLayout-DddzYw2B.js.map +1 -0
- package/dist/PageLayout-Dfbjw6jD.cjs +2 -0
- package/dist/PageLayout-Dfbjw6jD.cjs.map +1 -0
- package/dist/Pagination-CN9V8M5C.js +139 -0
- package/dist/Pagination-CN9V8M5C.js.map +1 -0
- package/dist/Pagination-DRwTLPh8.cjs +2 -0
- package/dist/Pagination-DRwTLPh8.cjs.map +1 -0
- package/dist/Popover-CBI1icIM.cjs +2 -0
- package/dist/Popover-CBI1icIM.cjs.map +1 -0
- package/dist/Popover-CgIU4Rhg.js +65 -0
- package/dist/Popover-CgIU4Rhg.js.map +1 -0
- package/dist/RadioGroup-C8u7eNBS.cjs +2 -0
- package/dist/RadioGroup-C8u7eNBS.cjs.map +1 -0
- package/dist/RadioGroup-DbodUJW8.js +141 -0
- package/dist/RadioGroup-DbodUJW8.js.map +1 -0
- package/dist/RemoveDialog-Bvt6sH79.js +47 -0
- package/dist/RemoveDialog-Bvt6sH79.js.map +1 -0
- package/dist/RemoveDialog-ClyZKyUG.cjs +2 -0
- package/dist/RemoveDialog-ClyZKyUG.cjs.map +1 -0
- package/dist/RichTextEditor-BTx8Py3I.js +806 -0
- package/dist/RichTextEditor-BTx8Py3I.js.map +1 -0
- package/dist/RichTextEditor-CAYt1Zm1.cjs +2 -0
- package/dist/RichTextEditor-CAYt1Zm1.cjs.map +1 -0
- package/dist/RootLayout-Cp-9CVjP.cjs +2 -0
- package/dist/RootLayout-Cp-9CVjP.cjs.map +1 -0
- package/dist/RootLayout-DCpfuFWF.js +405 -0
- package/dist/RootLayout-DCpfuFWF.js.map +1 -0
- package/dist/Select-PbTyxB1Q.js +338 -0
- package/dist/Select-PbTyxB1Q.js.map +1 -0
- package/dist/Select-_6WogC0u.cjs +2 -0
- package/dist/Select-_6WogC0u.cjs.map +1 -0
- package/dist/Sidebar-AaIlRzgk.cjs +2 -0
- package/dist/Sidebar-AaIlRzgk.cjs.map +1 -0
- package/dist/Sidebar-DRCs2ygZ.js +422 -0
- package/dist/Sidebar-DRCs2ygZ.js.map +1 -0
- package/dist/Slider-dxYVXRev.cjs +2 -0
- package/dist/Slider-dxYVXRev.cjs.map +1 -0
- package/dist/Slider-oGXd5e9X.js +184 -0
- package/dist/Slider-oGXd5e9X.js.map +1 -0
- package/dist/SpeedDial-C4jxIXTr.cjs +2 -0
- package/dist/SpeedDial-C4jxIXTr.cjs.map +1 -0
- package/dist/SpeedDial-DgFj16BQ.js +165 -0
- package/dist/SpeedDial-DgFj16BQ.js.map +1 -0
- package/dist/Stepper-7pPEBRLI.cjs +2 -0
- package/dist/Stepper-7pPEBRLI.cjs.map +1 -0
- package/dist/Stepper-COKAyN1L.js +165 -0
- package/dist/Stepper-COKAyN1L.js.map +1 -0
- package/dist/SwatchPicker-D30aSrbY.js +129 -0
- package/dist/SwatchPicker-D30aSrbY.js.map +1 -0
- package/dist/SwatchPicker-DbAU9-ux.cjs +2 -0
- package/dist/SwatchPicker-DbAU9-ux.cjs.map +1 -0
- package/dist/Switch-DMPJ0fhB.js +85 -0
- package/dist/Switch-DMPJ0fhB.js.map +1 -0
- package/dist/Switch-DRkZ6kHJ.cjs +2 -0
- package/dist/Switch-DRkZ6kHJ.cjs.map +1 -0
- package/dist/Table-BeOumGng.cjs +2 -0
- package/dist/Table-BeOumGng.cjs.map +1 -0
- package/dist/Table-BjPLvMbf.js +1090 -0
- package/dist/Table-BjPLvMbf.js.map +1 -0
- package/dist/Tabs--DDM-zKe.js +190 -0
- package/dist/Tabs--DDM-zKe.js.map +1 -0
- package/dist/Tabs-BZcMnjdC.cjs +2 -0
- package/dist/Tabs-BZcMnjdC.cjs.map +1 -0
- package/dist/TagsField-BTJcZS9P.js +186 -0
- package/dist/TagsField-BTJcZS9P.js.map +1 -0
- package/dist/TagsField-kknWiJZZ.cjs +2 -0
- package/dist/TagsField-kknWiJZZ.cjs.map +1 -0
- package/dist/TextField-BPefnD5M.cjs +2 -0
- package/dist/TextField-BPefnD5M.cjs.map +1 -0
- package/dist/TextField-DMI1X09n.js +266 -0
- package/dist/TextField-DMI1X09n.js.map +1 -0
- package/dist/TextField.module-QePvGeJ3.js +27 -0
- package/dist/TextField.module-QePvGeJ3.js.map +1 -0
- package/dist/TextField.module-m-UllwzG.cjs +2 -0
- package/dist/TextField.module-m-UllwzG.cjs.map +1 -0
- package/dist/ThemeToggle-DTal3RX5.cjs +2 -0
- package/dist/ThemeToggle-DTal3RX5.cjs.map +1 -0
- package/dist/ThemeToggle-Deh9j8pm.js +28 -0
- package/dist/ThemeToggle-Deh9j8pm.js.map +1 -0
- package/dist/TimeColumns-BCNmu4b_.js +147 -0
- package/dist/TimeColumns-BCNmu4b_.js.map +1 -0
- package/dist/TimeColumns-Duh4DcYJ.cjs +2 -0
- package/dist/TimeColumns-Duh4DcYJ.cjs.map +1 -0
- package/dist/TimePicker-3JgvK2on.js +194 -0
- package/dist/TimePicker-3JgvK2on.js.map +1 -0
- package/dist/TimePicker-CfGrCH9T.cjs +2 -0
- package/dist/TimePicker-CfGrCH9T.cjs.map +1 -0
- package/dist/Timeline-CoxW0Ia_.cjs +2 -0
- package/dist/Timeline-CoxW0Ia_.cjs.map +1 -0
- package/dist/Timeline-WkV4k_we.js +71 -0
- package/dist/Timeline-WkV4k_we.js.map +1 -0
- package/dist/Toaster-Bk5GtPjX.cjs +2 -0
- package/dist/Toaster-Bk5GtPjX.cjs.map +1 -0
- package/dist/Toaster-D-eG1xv7.js +63 -0
- package/dist/Toaster-D-eG1xv7.js.map +1 -0
- package/dist/ToggleButtonGroup-BWd7MOcc.js +123 -0
- package/dist/ToggleButtonGroup-BWd7MOcc.js.map +1 -0
- package/dist/ToggleButtonGroup-DYRLwKKh.cjs +2 -0
- package/dist/ToggleButtonGroup-DYRLwKKh.cjs.map +1 -0
- package/dist/Tooltip-Ao7az09p.cjs +2 -0
- package/dist/Tooltip-Ao7az09p.cjs.map +1 -0
- package/dist/Tooltip-Cb_FKxT9.js +65 -0
- package/dist/Tooltip-Cb_FKxT9.js.map +1 -0
- package/dist/TranslatedFields-CI0F9bHw.js +82 -0
- package/dist/TranslatedFields-CI0F9bHw.js.map +1 -0
- package/dist/TranslatedFields-DT3bYse6.cjs +2 -0
- package/dist/TranslatedFields-DT3bYse6.cjs.map +1 -0
- package/dist/Typography-BFatE1_A.cjs +2 -0
- package/dist/Typography-BFatE1_A.cjs.map +1 -0
- package/dist/Typography-Cta6Rg4L.js +51 -0
- package/dist/Typography-Cta6Rg4L.js.map +1 -0
- package/dist/UserCard-BhqtX1vU.js +74 -0
- package/dist/UserCard-BhqtX1vU.js.map +1 -0
- package/dist/UserCard-OlLeyyS0.cjs +2 -0
- package/dist/UserCard-OlLeyyS0.cjs.map +1 -0
- package/dist/access-DPUHbE-S.cjs +2 -0
- package/dist/access-DPUHbE-S.cjs.map +1 -0
- package/dist/access-Db4knwyR.js +25 -0
- package/dist/access-Db4knwyR.js.map +1 -0
- package/dist/components/Accordion/Accordion.d.cts +43 -0
- package/dist/components/Accordion/Accordion.d.ts +43 -0
- package/dist/components/Accordion/AccordionItem.d.cts +20 -0
- package/dist/components/Accordion/AccordionItem.d.ts +20 -0
- package/dist/components/Accordion/accordionContext.d.cts +13 -0
- package/dist/components/Accordion/accordionContext.d.ts +13 -0
- package/dist/components/Accordion/index.cjs +2 -0
- package/dist/components/Accordion/index.cjs.map +1 -0
- package/dist/components/Accordion/index.d.cts +4 -0
- package/dist/components/Accordion/index.d.ts +4 -0
- package/dist/components/Accordion/index.js +7 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/Alert/Alert.d.cts +30 -0
- package/dist/components/Alert/Alert.d.ts +30 -0
- package/dist/components/Alert/index.cjs +2 -0
- package/dist/components/Alert/index.cjs.map +1 -0
- package/dist/components/Alert/index.d.cts +2 -0
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/Alert/index.js +6 -0
- package/dist/components/Alert/index.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.cts +28 -0
- package/dist/components/Avatar/Avatar.d.ts +28 -0
- package/dist/components/Avatar/AvatarGroup.d.cts +19 -0
- package/dist/components/Avatar/AvatarGroup.d.ts +19 -0
- package/dist/components/Avatar/index.cjs +2 -0
- package/dist/components/Avatar/index.cjs.map +1 -0
- package/dist/components/Avatar/index.d.cts +4 -0
- package/dist/components/Avatar/index.d.ts +4 -0
- package/dist/components/Avatar/index.js +8 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Badge/Badge.d.cts +26 -0
- package/dist/components/Badge/Badge.d.ts +26 -0
- package/dist/components/Badge/index.cjs +2 -0
- package/dist/components/Badge/index.cjs.map +1 -0
- package/dist/components/Badge/index.d.cts +2 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge/index.js +6 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.cts +17 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +17 -0
- package/dist/components/Breadcrumbs/index.cjs +2 -0
- package/dist/components/Breadcrumbs/index.cjs.map +1 -0
- package/dist/components/Breadcrumbs/index.d.cts +2 -0
- package/dist/components/Breadcrumbs/index.d.ts +2 -0
- package/dist/components/Breadcrumbs/index.js +6 -0
- package/dist/components/Breadcrumbs/index.js.map +1 -0
- package/dist/components/Button/Button.d.cts +23 -0
- package/dist/components/Button/Button.d.ts +23 -0
- package/dist/components/Button/index.cjs +2 -0
- package/dist/components/Button/index.cjs.map +1 -0
- package/dist/components/Button/index.d.cts +2 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Button/index.js +6 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Card/Card.d.cts +37 -0
- package/dist/components/Card/Card.d.ts +37 -0
- package/dist/components/Card/index.cjs +2 -0
- package/dist/components/Card/index.cjs.map +1 -0
- package/dist/components/Card/index.d.cts +2 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Card/index.js +6 -0
- package/dist/components/Card/index.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.cts +29 -0
- package/dist/components/Checkbox/Checkbox.d.ts +29 -0
- package/dist/components/Checkbox/index.cjs +2 -0
- package/dist/components/Checkbox/index.cjs.map +1 -0
- package/dist/components/Checkbox/index.d.cts +2 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox/index.js +6 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/Chip/Chip.d.cts +37 -0
- package/dist/components/Chip/Chip.d.ts +37 -0
- package/dist/components/Chip/index.cjs +2 -0
- package/dist/components/Chip/index.cjs.map +1 -0
- package/dist/components/Chip/index.d.cts +2 -0
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/Chip/index.js +6 -0
- package/dist/components/Chip/index.js.map +1 -0
- package/dist/components/ChoiceCard/ChoiceCard.d.cts +41 -0
- package/dist/components/ChoiceCard/ChoiceCard.d.ts +41 -0
- package/dist/components/ChoiceCard/ChoiceCardGroup.d.cts +72 -0
- package/dist/components/ChoiceCard/ChoiceCardGroup.d.ts +72 -0
- package/dist/components/ChoiceCard/choiceCardContext.d.cts +21 -0
- package/dist/components/ChoiceCard/choiceCardContext.d.ts +21 -0
- package/dist/components/ChoiceCard/index.cjs +2 -0
- package/dist/components/ChoiceCard/index.cjs.map +1 -0
- package/dist/components/ChoiceCard/index.d.cts +4 -0
- package/dist/components/ChoiceCard/index.d.ts +4 -0
- package/dist/components/ChoiceCard/index.js +7 -0
- package/dist/components/ChoiceCard/index.js.map +1 -0
- package/dist/components/CodeBlock/CodeBlock.d.cts +30 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts +30 -0
- package/dist/components/CodeBlock/index.cjs +2 -0
- package/dist/components/CodeBlock/index.cjs.map +1 -0
- package/dist/components/CodeBlock/index.d.cts +2 -0
- package/dist/components/CodeBlock/index.d.ts +2 -0
- package/dist/components/CodeBlock/index.js +6 -0
- package/dist/components/CodeBlock/index.js.map +1 -0
- package/dist/components/ColorPicker/ColorPicker.d.cts +47 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +47 -0
- package/dist/components/ColorPicker/ColorPickerPanel.d.cts +20 -0
- package/dist/components/ColorPicker/ColorPickerPanel.d.ts +20 -0
- package/dist/components/ColorPicker/colorUtils.d.cts +44 -0
- package/dist/components/ColorPicker/colorUtils.d.ts +44 -0
- package/dist/components/ColorPicker/index.cjs +2 -0
- package/dist/components/ColorPicker/index.cjs.map +1 -0
- package/dist/components/ColorPicker/index.d.cts +2 -0
- package/dist/components/ColorPicker/index.d.ts +2 -0
- package/dist/components/ColorPicker/index.js +6 -0
- package/dist/components/ColorPicker/index.js.map +1 -0
- package/dist/components/DatePicker/Calendar.d.cts +29 -0
- package/dist/components/DatePicker/Calendar.d.ts +29 -0
- package/dist/components/DatePicker/DatePicker.d.cts +66 -0
- package/dist/components/DatePicker/DatePicker.d.ts +66 -0
- package/dist/components/DatePicker/dateUtils.d.cts +86 -0
- package/dist/components/DatePicker/dateUtils.d.ts +86 -0
- package/dist/components/DatePicker/index.cjs +2 -0
- package/dist/components/DatePicker/index.cjs.map +1 -0
- package/dist/components/DatePicker/index.d.cts +2 -0
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker/index.js +6 -0
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.cts +79 -0
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +79 -0
- package/dist/components/DateTimePicker/TimeColumns.d.cts +22 -0
- package/dist/components/DateTimePicker/TimeColumns.d.ts +22 -0
- package/dist/components/DateTimePicker/index.cjs +2 -0
- package/dist/components/DateTimePicker/index.cjs.map +1 -0
- package/dist/components/DateTimePicker/index.d.cts +2 -0
- package/dist/components/DateTimePicker/index.d.ts +2 -0
- package/dist/components/DateTimePicker/index.js +6 -0
- package/dist/components/DateTimePicker/index.js.map +1 -0
- package/dist/components/Divider/Divider.d.cts +17 -0
- package/dist/components/Divider/Divider.d.ts +17 -0
- package/dist/components/Divider/index.cjs +2 -0
- package/dist/components/Divider/index.cjs.map +1 -0
- package/dist/components/Divider/index.d.cts +2 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Divider/index.js +6 -0
- package/dist/components/Divider/index.js.map +1 -0
- package/dist/components/Dropdown/Dropdown.d.cts +44 -0
- package/dist/components/Dropdown/Dropdown.d.ts +44 -0
- package/dist/components/Dropdown/index.cjs +2 -0
- package/dist/components/Dropdown/index.cjs.map +1 -0
- package/dist/components/Dropdown/index.d.cts +2 -0
- package/dist/components/Dropdown/index.d.ts +2 -0
- package/dist/components/Dropdown/index.js +6 -0
- package/dist/components/Dropdown/index.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.d.cts +29 -0
- package/dist/components/EmptyState/EmptyState.d.ts +29 -0
- package/dist/components/EmptyState/index.cjs +2 -0
- package/dist/components/EmptyState/index.cjs.map +1 -0
- package/dist/components/EmptyState/index.d.cts +2 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/EmptyState/index.js +6 -0
- package/dist/components/EmptyState/index.js.map +1 -0
- package/dist/components/FileUploader/FileUploader.d.cts +144 -0
- package/dist/components/FileUploader/FileUploader.d.ts +144 -0
- package/dist/components/FileUploader/FileUploaderEditDialog.d.cts +34 -0
- package/dist/components/FileUploader/FileUploaderEditDialog.d.ts +34 -0
- package/dist/components/FileUploader/FileUploaderPreview.d.cts +23 -0
- package/dist/components/FileUploader/FileUploaderPreview.d.ts +23 -0
- package/dist/components/FileUploader/index.cjs +2 -0
- package/dist/components/FileUploader/index.cjs.map +1 -0
- package/dist/components/FileUploader/index.d.cts +2 -0
- package/dist/components/FileUploader/index.d.ts +2 -0
- package/dist/components/FileUploader/index.js +6 -0
- package/dist/components/FileUploader/index.js.map +1 -0
- package/dist/components/Flag/Flag.d.cts +14 -0
- package/dist/components/Flag/Flag.d.ts +14 -0
- package/dist/components/Flag/index.cjs +2 -0
- package/dist/components/Flag/index.cjs.map +1 -0
- package/dist/components/Flag/index.d.cts +2 -0
- package/dist/components/Flag/index.d.ts +2 -0
- package/dist/components/Flag/index.js +6 -0
- package/dist/components/Flag/index.js.map +1 -0
- package/dist/components/Flex/Col.d.cts +8 -0
- package/dist/components/Flex/Col.d.ts +8 -0
- package/dist/components/Flex/Flex.d.cts +32 -0
- package/dist/components/Flex/Flex.d.ts +32 -0
- package/dist/components/Flex/Grid.d.cts +28 -0
- package/dist/components/Flex/Grid.d.ts +28 -0
- package/dist/components/Flex/Row.d.cts +8 -0
- package/dist/components/Flex/Row.d.ts +8 -0
- package/dist/components/Flex/index.cjs +2 -0
- package/dist/components/Flex/index.cjs.map +1 -0
- package/dist/components/Flex/index.d.cts +8 -0
- package/dist/components/Flex/index.d.ts +8 -0
- package/dist/components/Flex/index.js +11 -0
- package/dist/components/Flex/index.js.map +1 -0
- package/dist/components/FloatingPanel/FloatingPanel.d.cts +39 -0
- package/dist/components/FloatingPanel/FloatingPanel.d.ts +39 -0
- package/dist/components/FullscreenToggle/FullscreenToggle.d.cts +12 -0
- package/dist/components/FullscreenToggle/FullscreenToggle.d.ts +12 -0
- package/dist/components/FullscreenToggle/index.cjs +2 -0
- package/dist/components/FullscreenToggle/index.cjs.map +1 -0
- package/dist/components/FullscreenToggle/index.d.cts +2 -0
- package/dist/components/FullscreenToggle/index.d.ts +2 -0
- package/dist/components/FullscreenToggle/index.js +6 -0
- package/dist/components/FullscreenToggle/index.js.map +1 -0
- package/dist/components/Icon/Icon.d.cts +19 -0
- package/dist/components/Icon/Icon.d.ts +19 -0
- package/dist/components/Icon/index.cjs +2 -0
- package/dist/components/Icon/index.cjs.map +1 -0
- package/dist/components/Icon/index.d.cts +4 -0
- package/dist/components/Icon/index.d.ts +4 -0
- package/dist/components/Icon/index.js +9 -0
- package/dist/components/Icon/index.js.map +1 -0
- package/dist/components/IconButton/IconButton.d.cts +28 -0
- package/dist/components/IconButton/IconButton.d.ts +28 -0
- package/dist/components/IconButton/index.cjs +2 -0
- package/dist/components/IconButton/index.cjs.map +1 -0
- package/dist/components/IconButton/index.d.cts +2 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/IconButton/index.js +6 -0
- package/dist/components/IconButton/index.js.map +1 -0
- package/dist/components/List/List.d.cts +20 -0
- package/dist/components/List/List.d.ts +20 -0
- package/dist/components/List/ListItem.d.cts +33 -0
- package/dist/components/List/ListItem.d.ts +33 -0
- package/dist/components/List/index.cjs +2 -0
- package/dist/components/List/index.cjs.map +1 -0
- package/dist/components/List/index.d.cts +4 -0
- package/dist/components/List/index.d.ts +4 -0
- package/dist/components/List/index.js +8 -0
- package/dist/components/List/index.js.map +1 -0
- package/dist/components/List/listContext.d.cts +5 -0
- package/dist/components/List/listContext.d.ts +5 -0
- package/dist/components/Loader/Loader.d.cts +15 -0
- package/dist/components/Loader/Loader.d.ts +15 -0
- package/dist/components/Loader/index.cjs +2 -0
- package/dist/components/Loader/index.cjs.map +1 -0
- package/dist/components/Loader/index.d.cts +2 -0
- package/dist/components/Loader/index.d.ts +2 -0
- package/dist/components/Loader/index.js +6 -0
- package/dist/components/Loader/index.js.map +1 -0
- package/dist/components/Modal/Modal.d.cts +63 -0
- package/dist/components/Modal/Modal.d.ts +63 -0
- package/dist/components/Modal/index.cjs +2 -0
- package/dist/components/Modal/index.cjs.map +1 -0
- package/dist/components/Modal/index.d.cts +2 -0
- package/dist/components/Modal/index.d.ts +2 -0
- package/dist/components/Modal/index.js +6 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/MultiSelect/MultiSelect.d.cts +72 -0
- package/dist/components/MultiSelect/MultiSelect.d.ts +72 -0
- package/dist/components/MultiSelect/index.cjs +2 -0
- package/dist/components/MultiSelect/index.cjs.map +1 -0
- package/dist/components/MultiSelect/index.d.cts +2 -0
- package/dist/components/MultiSelect/index.d.ts +2 -0
- package/dist/components/MultiSelect/index.js +6 -0
- package/dist/components/MultiSelect/index.js.map +1 -0
- package/dist/components/MultilineTextField/MultilineTextField.d.cts +28 -0
- package/dist/components/MultilineTextField/MultilineTextField.d.ts +28 -0
- package/dist/components/MultilineTextField/index.cjs +2 -0
- package/dist/components/MultilineTextField/index.cjs.map +1 -0
- package/dist/components/MultilineTextField/index.d.cts +2 -0
- package/dist/components/MultilineTextField/index.d.ts +2 -0
- package/dist/components/MultilineTextField/index.js +6 -0
- package/dist/components/MultilineTextField/index.js.map +1 -0
- package/dist/components/NumberField/NumberField.d.cts +45 -0
- package/dist/components/NumberField/NumberField.d.ts +45 -0
- package/dist/components/NumberField/index.cjs +2 -0
- package/dist/components/NumberField/index.cjs.map +1 -0
- package/dist/components/NumberField/index.d.cts +2 -0
- package/dist/components/NumberField/index.d.ts +2 -0
- package/dist/components/NumberField/index.js +6 -0
- package/dist/components/NumberField/index.js.map +1 -0
- package/dist/components/OtpField/OtpField.d.cts +55 -0
- package/dist/components/OtpField/OtpField.d.ts +55 -0
- package/dist/components/OtpField/index.cjs +2 -0
- package/dist/components/OtpField/index.cjs.map +1 -0
- package/dist/components/OtpField/index.d.cts +2 -0
- package/dist/components/OtpField/index.d.ts +2 -0
- package/dist/components/OtpField/index.js +6 -0
- package/dist/components/OtpField/index.js.map +1 -0
- package/dist/components/Overlay/Overlay.d.cts +29 -0
- package/dist/components/Overlay/Overlay.d.ts +29 -0
- package/dist/components/PageLayout/PageLayout.d.cts +13 -0
- package/dist/components/PageLayout/PageLayout.d.ts +13 -0
- package/dist/components/PageLayout/index.cjs +2 -0
- package/dist/components/PageLayout/index.cjs.map +1 -0
- package/dist/components/PageLayout/index.d.cts +2 -0
- package/dist/components/PageLayout/index.d.ts +2 -0
- package/dist/components/PageLayout/index.js +6 -0
- package/dist/components/PageLayout/index.js.map +1 -0
- package/dist/components/Pagination/Pagination.d.cts +44 -0
- package/dist/components/Pagination/Pagination.d.ts +44 -0
- package/dist/components/Pagination/index.cjs +2 -0
- package/dist/components/Pagination/index.cjs.map +1 -0
- package/dist/components/Pagination/index.d.cts +2 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Pagination/index.js +6 -0
- package/dist/components/Pagination/index.js.map +1 -0
- package/dist/components/Pagination/paginationRange.d.cts +21 -0
- package/dist/components/Pagination/paginationRange.d.ts +21 -0
- package/dist/components/Popover/Popover.d.cts +43 -0
- package/dist/components/Popover/Popover.d.ts +43 -0
- package/dist/components/Popover/index.cjs +2 -0
- package/dist/components/Popover/index.cjs.map +1 -0
- package/dist/components/Popover/index.d.cts +2 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover/index.js +6 -0
- package/dist/components/Popover/index.js.map +1 -0
- package/dist/components/Radio/Radio.d.cts +27 -0
- package/dist/components/Radio/Radio.d.ts +27 -0
- package/dist/components/Radio/RadioGroup.d.cts +47 -0
- package/dist/components/Radio/RadioGroup.d.ts +47 -0
- package/dist/components/Radio/index.cjs +2 -0
- package/dist/components/Radio/index.cjs.map +1 -0
- package/dist/components/Radio/index.d.cts +4 -0
- package/dist/components/Radio/index.d.ts +4 -0
- package/dist/components/Radio/index.js +7 -0
- package/dist/components/Radio/index.js.map +1 -0
- package/dist/components/Radio/radioContext.d.cts +18 -0
- package/dist/components/Radio/radioContext.d.ts +18 -0
- package/dist/components/RemoveDialog/RemoveDialog.d.cts +35 -0
- package/dist/components/RemoveDialog/RemoveDialog.d.ts +35 -0
- package/dist/components/RemoveDialog/index.cjs +2 -0
- package/dist/components/RemoveDialog/index.cjs.map +1 -0
- package/dist/components/RemoveDialog/index.d.cts +2 -0
- package/dist/components/RemoveDialog/index.d.ts +2 -0
- package/dist/components/RemoveDialog/index.js +6 -0
- package/dist/components/RemoveDialog/index.js.map +1 -0
- package/dist/components/RichTextEditor/RichTextEditor.d.cts +48 -0
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +48 -0
- package/dist/components/RichTextEditor/Toolbar.d.cts +10 -0
- package/dist/components/RichTextEditor/Toolbar.d.ts +10 -0
- package/dist/components/RichTextEditor/index.cjs +2 -0
- package/dist/components/RichTextEditor/index.cjs.map +1 -0
- package/dist/components/RichTextEditor/index.d.cts +2 -0
- package/dist/components/RichTextEditor/index.d.ts +2 -0
- package/dist/components/RichTextEditor/index.js +6 -0
- package/dist/components/RichTextEditor/index.js.map +1 -0
- package/dist/components/RichTextEditor/nodes/ImageNode.d.cts +33 -0
- package/dist/components/RichTextEditor/nodes/ImageNode.d.ts +33 -0
- package/dist/components/RichTextEditor/nodes/VideoNode.d.cts +36 -0
- package/dist/components/RichTextEditor/nodes/VideoNode.d.ts +36 -0
- package/dist/components/RichTextEditor/urlSafety.d.cts +16 -0
- package/dist/components/RichTextEditor/urlSafety.d.ts +16 -0
- package/dist/components/RootLayout/RootLayout.d.cts +46 -0
- package/dist/components/RootLayout/RootLayout.d.ts +46 -0
- package/dist/components/RootLayout/SettingsDrawer.d.cts +23 -0
- package/dist/components/RootLayout/SettingsDrawer.d.ts +23 -0
- package/dist/components/RootLayout/index.cjs +2 -0
- package/dist/components/RootLayout/index.cjs.map +1 -0
- package/dist/components/RootLayout/index.d.cts +2 -0
- package/dist/components/RootLayout/index.d.ts +2 -0
- package/dist/components/RootLayout/index.js +6 -0
- package/dist/components/RootLayout/index.js.map +1 -0
- package/dist/components/Select/Select.d.cts +85 -0
- package/dist/components/Select/Select.d.ts +85 -0
- package/dist/components/Select/index.cjs +2 -0
- package/dist/components/Select/index.cjs.map +1 -0
- package/dist/components/Select/index.d.cts +2 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.js +6 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.d.cts +90 -0
- package/dist/components/Sidebar/Sidebar.d.ts +90 -0
- package/dist/components/Sidebar/index.cjs +2 -0
- package/dist/components/Sidebar/index.cjs.map +1 -0
- package/dist/components/Sidebar/index.d.cts +1 -0
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +7 -0
- package/dist/components/Sidebar/index.js.map +1 -0
- package/dist/components/Slider/Slider.d.cts +58 -0
- package/dist/components/Slider/Slider.d.ts +58 -0
- package/dist/components/Slider/index.cjs +2 -0
- package/dist/components/Slider/index.cjs.map +1 -0
- package/dist/components/Slider/index.d.cts +2 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.js +6 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/SpeedDial/SpeedDial.d.cts +56 -0
- package/dist/components/SpeedDial/SpeedDial.d.ts +56 -0
- package/dist/components/SpeedDial/SpeedDialAction.d.cts +18 -0
- package/dist/components/SpeedDial/SpeedDialAction.d.ts +18 -0
- package/dist/components/SpeedDial/index.cjs +2 -0
- package/dist/components/SpeedDial/index.cjs.map +1 -0
- package/dist/components/SpeedDial/index.d.cts +4 -0
- package/dist/components/SpeedDial/index.d.ts +4 -0
- package/dist/components/SpeedDial/index.js +7 -0
- package/dist/components/SpeedDial/index.js.map +1 -0
- package/dist/components/SpeedDial/speedDialContext.d.cts +19 -0
- package/dist/components/SpeedDial/speedDialContext.d.ts +19 -0
- package/dist/components/Stepper/Stepper.d.cts +94 -0
- package/dist/components/Stepper/Stepper.d.ts +94 -0
- package/dist/components/Stepper/index.cjs +2 -0
- package/dist/components/Stepper/index.cjs.map +1 -0
- package/dist/components/Stepper/index.d.cts +2 -0
- package/dist/components/Stepper/index.d.ts +2 -0
- package/dist/components/Stepper/index.js +6 -0
- package/dist/components/Stepper/index.js.map +1 -0
- package/dist/components/SwatchPicker/SwatchPicker.d.cts +43 -0
- package/dist/components/SwatchPicker/SwatchPicker.d.ts +43 -0
- package/dist/components/SwatchPicker/index.cjs +2 -0
- package/dist/components/SwatchPicker/index.cjs.map +1 -0
- package/dist/components/SwatchPicker/index.d.cts +2 -0
- package/dist/components/SwatchPicker/index.d.ts +2 -0
- package/dist/components/SwatchPicker/index.js +6 -0
- package/dist/components/SwatchPicker/index.js.map +1 -0
- package/dist/components/Switch/Switch.d.cts +29 -0
- package/dist/components/Switch/Switch.d.ts +29 -0
- package/dist/components/Switch/index.cjs +2 -0
- package/dist/components/Switch/index.cjs.map +1 -0
- package/dist/components/Switch/index.d.cts +2 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.js +6 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Table/Table.d.cts +248 -0
- package/dist/components/Table/Table.d.ts +248 -0
- package/dist/components/Table/TableFilters.d.cts +16 -0
- package/dist/components/Table/TableFilters.d.ts +16 -0
- package/dist/components/Table/index.cjs +2 -0
- package/dist/components/Table/index.cjs.map +1 -0
- package/dist/components/Table/index.d.cts +3 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/index.js +6 -0
- package/dist/components/Table/index.js.map +1 -0
- package/dist/components/Table/tableFilter.d.cts +65 -0
- package/dist/components/Table/tableFilter.d.ts +65 -0
- package/dist/components/Tabs/Tabs.d.cts +80 -0
- package/dist/components/Tabs/Tabs.d.ts +80 -0
- package/dist/components/Tabs/index.cjs +2 -0
- package/dist/components/Tabs/index.cjs.map +1 -0
- package/dist/components/Tabs/index.d.cts +2 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/index.js +6 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/TagsField/TagsField.d.cts +47 -0
- package/dist/components/TagsField/TagsField.d.ts +47 -0
- package/dist/components/TagsField/index.cjs +2 -0
- package/dist/components/TagsField/index.cjs.map +1 -0
- package/dist/components/TagsField/index.d.cts +2 -0
- package/dist/components/TagsField/index.d.ts +2 -0
- package/dist/components/TagsField/index.js +6 -0
- package/dist/components/TagsField/index.js.map +1 -0
- package/dist/components/TextField/TextField.d.cts +62 -0
- package/dist/components/TextField/TextField.d.ts +62 -0
- package/dist/components/TextField/index.cjs +2 -0
- package/dist/components/TextField/index.cjs.map +1 -0
- package/dist/components/TextField/index.d.cts +2 -0
- package/dist/components/TextField/index.d.ts +2 -0
- package/dist/components/TextField/index.js +6 -0
- package/dist/components/TextField/index.js.map +1 -0
- package/dist/components/ThemeToggle/ThemeToggle.d.cts +9 -0
- package/dist/components/ThemeToggle/ThemeToggle.d.ts +9 -0
- package/dist/components/ThemeToggle/index.cjs +2 -0
- package/dist/components/ThemeToggle/index.cjs.map +1 -0
- package/dist/components/ThemeToggle/index.d.cts +2 -0
- package/dist/components/ThemeToggle/index.d.ts +2 -0
- package/dist/components/ThemeToggle/index.js +6 -0
- package/dist/components/ThemeToggle/index.js.map +1 -0
- package/dist/components/TimePicker/TimePicker.d.cts +68 -0
- package/dist/components/TimePicker/TimePicker.d.ts +68 -0
- package/dist/components/TimePicker/index.cjs +2 -0
- package/dist/components/TimePicker/index.cjs.map +1 -0
- package/dist/components/TimePicker/index.d.cts +2 -0
- package/dist/components/TimePicker/index.d.ts +2 -0
- package/dist/components/TimePicker/index.js +6 -0
- package/dist/components/TimePicker/index.js.map +1 -0
- package/dist/components/Timeline/Timeline.d.cts +37 -0
- package/dist/components/Timeline/Timeline.d.ts +37 -0
- package/dist/components/Timeline/TimelineItem.d.cts +26 -0
- package/dist/components/Timeline/TimelineItem.d.ts +26 -0
- package/dist/components/Timeline/index.cjs +2 -0
- package/dist/components/Timeline/index.cjs.map +1 -0
- package/dist/components/Timeline/index.d.cts +4 -0
- package/dist/components/Timeline/index.d.ts +4 -0
- package/dist/components/Timeline/index.js +7 -0
- package/dist/components/Timeline/index.js.map +1 -0
- package/dist/components/Timeline/timelineContext.d.cts +10 -0
- package/dist/components/Timeline/timelineContext.d.ts +10 -0
- package/dist/components/Toast/ToastItem.d.cts +12 -0
- package/dist/components/Toast/ToastItem.d.ts +12 -0
- package/dist/components/Toast/Toaster.d.cts +18 -0
- package/dist/components/Toast/Toaster.d.ts +18 -0
- package/dist/components/Toast/index.cjs +2 -0
- package/dist/components/Toast/index.cjs.map +1 -0
- package/dist/components/Toast/index.d.cts +4 -0
- package/dist/components/Toast/index.d.ts +4 -0
- package/dist/components/Toast/index.js +8 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toast/toastStore.d.cts +45 -0
- package/dist/components/Toast/toastStore.d.ts +45 -0
- package/dist/components/ToggleButton/ToggleButton.d.cts +26 -0
- package/dist/components/ToggleButton/ToggleButton.d.ts +26 -0
- package/dist/components/ToggleButton/ToggleButtonGroup.d.cts +52 -0
- package/dist/components/ToggleButton/ToggleButtonGroup.d.ts +52 -0
- package/dist/components/ToggleButton/index.cjs +2 -0
- package/dist/components/ToggleButton/index.cjs.map +1 -0
- package/dist/components/ToggleButton/index.d.cts +4 -0
- package/dist/components/ToggleButton/index.d.ts +4 -0
- package/dist/components/ToggleButton/index.js +7 -0
- package/dist/components/ToggleButton/index.js.map +1 -0
- package/dist/components/ToggleButton/toggleButtonGroupContext.d.cts +15 -0
- package/dist/components/ToggleButton/toggleButtonGroupContext.d.ts +15 -0
- package/dist/components/Tooltip/Tooltip.d.cts +21 -0
- package/dist/components/Tooltip/Tooltip.d.ts +21 -0
- package/dist/components/Tooltip/index.cjs +2 -0
- package/dist/components/Tooltip/index.cjs.map +1 -0
- package/dist/components/Tooltip/index.d.cts +2 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/Tooltip/index.js +6 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/TranslatedFields/TranslatedFields.d.cts +56 -0
- package/dist/components/TranslatedFields/TranslatedFields.d.ts +56 -0
- package/dist/components/TranslatedFields/index.cjs +2 -0
- package/dist/components/TranslatedFields/index.cjs.map +1 -0
- package/dist/components/TranslatedFields/index.d.cts +2 -0
- package/dist/components/TranslatedFields/index.d.ts +2 -0
- package/dist/components/TranslatedFields/index.js +6 -0
- package/dist/components/TranslatedFields/index.js.map +1 -0
- package/dist/components/Typography/Typography.d.cts +30 -0
- package/dist/components/Typography/Typography.d.ts +30 -0
- package/dist/components/Typography/index.cjs +2 -0
- package/dist/components/Typography/index.cjs.map +1 -0
- package/dist/components/Typography/index.d.cts +2 -0
- package/dist/components/Typography/index.d.ts +2 -0
- package/dist/components/Typography/index.js +6 -0
- package/dist/components/Typography/index.js.map +1 -0
- package/dist/components/UserCard/UserCard.d.cts +33 -0
- package/dist/components/UserCard/UserCard.d.ts +33 -0
- package/dist/components/UserCard/index.cjs +2 -0
- package/dist/components/UserCard/index.cjs.map +1 -0
- package/dist/components/UserCard/index.d.cts +2 -0
- package/dist/components/UserCard/index.d.ts +2 -0
- package/dist/components/UserCard/index.js +6 -0
- package/dist/components/UserCard/index.js.map +1 -0
- package/dist/components/index.d.cts +57 -0
- package/dist/components/index.d.ts +57 -0
- package/dist/entries/components.cjs +2 -0
- package/dist/entries/components.cjs.map +1 -0
- package/dist/entries/components.d.cts +3 -0
- package/dist/entries/components.d.ts +3 -0
- package/dist/entries/components.js +140 -0
- package/dist/entries/components.js.map +1 -0
- package/dist/entries/helpers.cjs +2 -0
- package/dist/entries/helpers.cjs.map +1 -0
- package/dist/entries/helpers.d.cts +4 -0
- package/dist/entries/helpers.d.ts +4 -0
- package/dist/entries/helpers.js +17 -0
- package/dist/entries/helpers.js.map +1 -0
- package/dist/entries/hooks.cjs +2 -0
- package/dist/entries/hooks.cjs.map +1 -0
- package/dist/entries/hooks.d.cts +7 -0
- package/dist/entries/hooks.d.ts +7 -0
- package/dist/entries/hooks.js +12 -0
- package/dist/entries/hooks.js.map +1 -0
- package/dist/entries/i18n.cjs +2 -0
- package/dist/entries/i18n.cjs.map +1 -0
- package/dist/entries/i18n.d.cts +3 -0
- package/dist/entries/i18n.d.ts +3 -0
- package/dist/entries/i18n.js +11 -0
- package/dist/entries/i18n.js.map +1 -0
- package/dist/entries/icons.cjs +2 -0
- package/dist/entries/icons.cjs.map +1 -0
- package/dist/entries/icons.d.cts +2 -0
- package/dist/entries/icons.d.ts +2 -0
- package/dist/entries/icons.js +9 -0
- package/dist/entries/icons.js.map +1 -0
- package/dist/entries/theme.cjs +2 -0
- package/dist/entries/theme.cjs.map +1 -0
- package/dist/entries/theme.d.cts +2 -0
- package/dist/entries/theme.d.ts +2 -0
- package/dist/entries/theme.js +18 -0
- package/dist/entries/theme.js.map +1 -0
- package/dist/form/Form.d.cts +14 -0
- package/dist/form/Form.d.ts +14 -0
- package/dist/form/formContext.d.cts +8 -0
- package/dist/form/formContext.d.ts +8 -0
- package/dist/form/index.d.cts +5 -0
- package/dist/form/index.d.ts +5 -0
- package/dist/form/useForm.d.cts +81 -0
- package/dist/form/useForm.d.ts +81 -0
- package/dist/formContext-B7ln1Miy.js +10 -0
- package/dist/formContext-B7ln1Miy.js.map +1 -0
- package/dist/formContext-bTWrqdEV.cjs +2 -0
- package/dist/formContext-bTWrqdEV.cjs.map +1 -0
- package/dist/helpers/access.d.cts +11 -0
- package/dist/helpers/access.d.ts +11 -0
- package/dist/helpers/table.d.cts +41 -0
- package/dist/helpers/table.d.ts +41 -0
- package/dist/helpers/translations.d.cts +63 -0
- package/dist/helpers/translations.d.ts +63 -0
- package/dist/hooks/index.d.cts +4 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/useDisclosure.d.cts +7 -0
- package/dist/hooks/useDisclosure.d.ts +7 -0
- package/dist/hooks/useFloatingPanel.d.cts +45 -0
- package/dist/hooks/useFloatingPanel.d.ts +45 -0
- package/dist/hooks/useLockBodyScroll.d.cts +7 -0
- package/dist/hooks/useLockBodyScroll.d.ts +7 -0
- package/dist/hooks/useMediaQuery.d.cts +13 -0
- package/dist/hooks/useMediaQuery.d.ts +13 -0
- package/dist/i18n/locales/de.d.cts +5 -0
- package/dist/i18n/locales/de.d.ts +5 -0
- package/dist/i18n/locales/en.d.cts +9 -0
- package/dist/i18n/locales/en.d.ts +9 -0
- package/dist/i18n/locales/es.d.cts +5 -0
- package/dist/i18n/locales/es.d.ts +5 -0
- package/dist/i18n/locales/fr.d.cts +5 -0
- package/dist/i18n/locales/fr.d.ts +5 -0
- package/dist/i18n/locales/it.d.cts +5 -0
- package/dist/i18n/locales/it.d.ts +5 -0
- package/dist/i18n/locales/ka.d.cts +8 -0
- package/dist/i18n/locales/ka.d.ts +8 -0
- package/dist/i18n/locales/ru.d.cts +5 -0
- package/dist/i18n/locales/ru.d.ts +5 -0
- package/dist/i18n/messages.d.cts +241 -0
- package/dist/i18n/messages.d.ts +241 -0
- package/dist/icons/icons.d.cts +2 -0
- package/dist/icons/icons.d.ts +2 -0
- package/dist/icons/names.d.cts +3 -0
- package/dist/icons/names.d.ts +3 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +203 -0
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +185 -0
- package/dist/index.js.map +1 -0
- package/dist/messages-C-zecFBE.js +1363 -0
- package/dist/messages-C-zecFBE.js.map +1 -0
- package/dist/messages-Cy-qK5xU.cjs +36 -0
- package/dist/messages-Cy-qK5xU.cjs.map +1 -0
- package/dist/names-C2Yj1p3u.cjs +2 -0
- package/dist/names-C2Yj1p3u.cjs.map +1 -0
- package/dist/names-D8ABK2Wk.js +1205 -0
- package/dist/names-D8ABK2Wk.js.map +1 -0
- package/dist/reset.css +78 -0
- package/dist/table-CZRQGNdk.cjs +2 -0
- package/dist/table-CZRQGNdk.cjs.map +1 -0
- package/dist/table-DF3zTrC3.js +49 -0
- package/dist/table-DF3zTrC3.js.map +1 -0
- package/dist/theme/ConfigProvider.d.cts +362 -0
- package/dist/theme/ConfigProvider.d.ts +362 -0
- package/dist/theme/applyTheme.d.cts +28 -0
- package/dist/theme/applyTheme.d.ts +28 -0
- package/dist/theme/index.d.cts +5 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/toastStore-B4Tk2Xk7.cjs +2 -0
- package/dist/toastStore-B4Tk2Xk7.cjs.map +1 -0
- package/dist/toastStore-Cx_JOKwS.js +32 -0
- package/dist/toastStore-Cx_JOKwS.js.map +1 -0
- package/dist/translations-CXEeeUDL.cjs +2 -0
- package/dist/translations-CXEeeUDL.cjs.map +1 -0
- package/dist/translations-D15tFHM1.js +74 -0
- package/dist/translations-D15tFHM1.js.map +1 -0
- package/dist/useForm-B_5wDIER.js +126 -0
- package/dist/useForm-B_5wDIER.js.map +1 -0
- package/dist/useForm-C7erBHt0.cjs +2 -0
- package/dist/useForm-C7erBHt0.cjs.map +1 -0
- package/dist/useLockBodyScroll-CIXHZo-Q.cjs +2 -0
- package/dist/useLockBodyScroll-CIXHZo-Q.cjs.map +1 -0
- package/dist/useLockBodyScroll-DwBILLPK.js +35 -0
- package/dist/useLockBodyScroll-DwBILLPK.js.map +1 -0
- package/dist/useMediaQuery-BCsNfMA1.cjs +2 -0
- package/dist/useMediaQuery-BCsNfMA1.cjs.map +1 -0
- package/dist/useMediaQuery-_1EcFoC5.js +17 -0
- package/dist/useMediaQuery-_1EcFoC5.js.map +1 -0
- package/package.json +244 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal-BuaPDlKV.js","sources":["../src/components/Overlay/Overlay.tsx","../src/components/Modal/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { createPortal } from 'react-dom'\nimport { clsx } from 'clsx'\nimport { useLockBodyScroll } from '../../hooks/useLockBodyScroll'\nimport styles from './Overlay.module.css'\n\nexport interface OverlayProps extends HTMLAttributes<HTMLDivElement> {\n /** Whether the overlay is mounted + shown — gates the portal and drives the fade-in. */\n open: boolean\n /** Requested dismiss — fired on a backdrop click (`closeOnBackdrop`) or Escape (`closeOnEscape`). */\n onClose?: () => void\n /** Close when the scrim itself (outside the content) is clicked. Defaults to `true`. */\n closeOnBackdrop?: boolean\n /** Close when Escape is pressed while focus is within the overlay. Defaults to `true`. */\n closeOnEscape?: boolean\n /** Lock page scroll while open. Defaults to `true`. */\n lockScroll?: boolean\n /** Scrim darkness — the black backdrop's alpha (0–1). Defaults to `0.45`. */\n dim?: number\n /** Overlay content — typically a centered dialog / box / media. */\n children?: ReactNode\n}\n\n/**\n * The shared backdrop primitive behind every dimmed, page-blocking surface (`Modal`, the FileUploader\n * lightbox). Portals a fixed full-viewport scrim to `<body>`, locks page scroll, fades in (opacity keyed\n * off a rAF `visible` flag → `data-open`), and dismisses on **backdrop-click** (gated on the pointer-down\n * AND click both landing on the scrim, so a text-selection drag ending on it doesn't close) / **Escape**\n * (swallowed via `stopPropagation` so it can't reach a React-tree ancestor overlay). Centers its children\n * by default; consumers layer their own padding / scroll / placement via `className` + `data-*` and read\n * the shared `data-open` on the scrim for their own box's enter transform. A consumer `onKeyDown` still\n * fires (after the Escape handling) so it can add e.g. a Tab focus-trap. Internal — no `index.ts`, so it's\n * never exposed as a package subpath; import it via `../Overlay/Overlay`. The ref points at the scrim div.\n */\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(function Overlay(\n {\n open,\n onClose,\n closeOnBackdrop = true,\n closeOnEscape = true,\n lockScroll = true,\n dim,\n className,\n style,\n children,\n onKeyDown,\n onMouseDown,\n onClick,\n ...props\n },\n ref,\n) {\n const mouseDownTarget = useRef<EventTarget | null>(null)\n const [visible, setVisible] = useState(false)\n\n useLockBodyScroll(open && lockScroll)\n\n // enter animation: flip `visible` on the frame after mount so the opacity transition runs\n useEffect(() => {\n if (!open) {\n setVisible(false)\n return\n }\n const raf = requestAnimationFrame(() => setVisible(true))\n return () => cancelAnimationFrame(raf)\n }, [open])\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n // the overlay owns the page — swallow Escape so it can't reach a React-tree ancestor overlay (e.g.\n // an outer Modal) even when this one isn't Escape-dismissible\n event.stopPropagation()\n if (closeOnEscape) onClose?.()\n }\n onKeyDown?.(event)\n }\n // remember where the pointer went down so the click handler can tell a scrim click from a drag that\n // started inside the content and ended on the scrim (a text-selection drag)\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n mouseDownTarget.current = event.target\n onMouseDown?.(event)\n }\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (\n closeOnBackdrop &&\n event.target === event.currentTarget &&\n mouseDownTarget.current === event.currentTarget\n ) {\n onClose?.()\n }\n onClick?.(event)\n }\n\n if (!open || typeof document === 'undefined') return null\n\n return createPortal(\n <div\n ref={ref}\n className={clsx(styles.overlay, className)}\n data-open={visible ? 'true' : 'false'}\n style={dim != null ? ({ '--tz-overlay-dim': dim, ...style } as CSSProperties) : style}\n onKeyDown={handleKeyDown}\n onMouseDown={handleMouseDown}\n onClick={handleClick}\n {...props}\n >\n {children}\n </div>,\n document.body,\n )\n})\n","import {\n forwardRef,\n useEffect,\n useId,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { Overlay } from '../Overlay/Overlay'\nimport styles from './Modal.module.css'\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'fullScreen'\nexport type ModalScrollBehavior = 'inside' | 'outside'\nexport type ModalPlacement = 'center' | 'left' | 'right'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** Focusable descendants used by the focus trap + initial focus. */\n// every clause excludes tabindex=\"-1\" so decorative/programmatic-only nodes (e.g. the header's\n// `nonClickable aria-hidden` IconButton) don't count as trap boundaries or initial-focus targets\nconst FOCUSABLE =\n 'a[href]:not([tabindex=\"-1\"]), button:not(:disabled):not([tabindex=\"-1\"]), textarea:not(:disabled):not([tabindex=\"-1\"]), input:not(:disabled):not([tabindex=\"-1\"]), select:not(:disabled):not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n\nexport interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Whether the modal is open — gates the portal and drives the enter animation. */\n open: boolean\n /** Called when a dismiss is requested (close button, backdrop click, or Escape). */\n onClose: () => void\n /** Preset width: `sm` 360 · `md` 620 · `lg` 900 px, or `fullScreen` (fills the viewport). Defaults to `md`. */\n size?: ModalSize\n /**\n * Where overflow scrolls when the content is taller than the viewport: `outside` (default — the\n * whole dialog grows and the overlay/page scrolls) or `inside` (the body scrolls while the header +\n * footer stay pinned). Ignored for side-drawer placements (`left`/`right`), which always scroll inside.\n */\n scrollBehavior?: ModalScrollBehavior\n /**\n * Where the dialog sits: `center` (default — the standard centered modal), or `left` / `right` to\n * make it a **full-height side drawer** (sheet) that slides in from that edge. A drawer takes its\n * width from `size`, fills the viewport height, and always scrolls its body inside (header + footer\n * stay pinned).\n */\n placement?: ModalPlacement\n /** Header title. When set, labels the dialog (`aria-labelledby`). */\n title?: ReactNode\n /** Muted description line under the title (e.g. a confirm prompt). */\n description?: ReactNode\n /** Leading header icon shown in a tinted box (like `Card`) — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Footer slot — right-aligned actions over a top divider (e.g. Cancel / Confirm buttons). */\n footer?: ReactNode\n /** Show the header × close button. Defaults to `true`. */\n showCloseButton?: boolean\n /** Close when the backdrop (outside the dialog) is clicked. Defaults to `true`. */\n closeOnBackdrop?: boolean\n /** Close when Escape is pressed. Defaults to `true`. */\n closeOnEscape?: boolean\n /** Accessible label — used when there's no `title`. */\n ariaLabel?: string\n /** Dialog body. */\n children?: ReactNode\n}\n\n/**\n * A centered, backdrop-dimmed overlay dialog. Portaled to `<body>`, it locks page scroll while open,\n * traps Tab focus inside, restores focus to the previously-focused element on close, and dismisses on\n * close button / backdrop click / Escape (each toggleable). Sizes are `sm`/`md`/`lg` (max-width caps)\n * or `fullScreen`; `scrollBehavior` picks inside-body vs. whole-dialog scrolling. `placement` turns it\n * into a full-height side drawer (`left`/`right`) that slides in from the edge. The header mirrors\n * `Card` — an optional tinted `icon` box + `title` + `description`. Controlled by `open` + `onClose`.\n * The forwarded ref points at the dialog element.\n *\n * @example\n * const { isOpen, open, close } = useDisclosure()\n * <Modal open={isOpen} onClose={close} title=\"Edit\" footer={<Button onClick={close}>Done</Button>}>\n * …\n * </Modal>\n */\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(function Modal(\n {\n open,\n onClose,\n size = 'md',\n scrollBehavior = 'outside',\n placement = 'center',\n title,\n description,\n icon,\n color = 'accent',\n footer,\n showCloseButton = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n ariaLabel,\n className,\n style,\n children,\n ...props\n },\n forwardedRef,\n) {\n const t = useT()\n const panelRef = useRef<HTMLDivElement | null>(null)\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const footerRef = useRef<HTMLDivElement | null>(null)\n const titleId = useId()\n const descId = useId()\n\n // portal + scrim + scroll-lock + fade-in + backdrop-dismiss are handled by the shared `<Overlay>`\n\n // focus management: move focus into the dialog on open — prefer a body field (form modals land on\n // their first input), else the first footer action (confirm dialogs land on Cancel/Confirm, not the\n // × button), else any control, else the dialog itself; restore focus to the trigger on close\n useEffect(() => {\n if (!open) return\n const previouslyFocused = document.activeElement as HTMLElement | null\n const target =\n bodyRef.current?.querySelector<HTMLElement>(FOCUSABLE) ??\n footerRef.current?.querySelector<HTMLElement>(FOCUSABLE) ??\n panelRef.current?.querySelector<HTMLElement>(FOCUSABLE) ??\n panelRef.current\n // preventScroll so opening an `outside`-scroll modal doesn't jump the overlay to a below-fold control\n target?.focus({ preventScroll: true })\n // only restore if the element is still mounted (it may have unmounted while the modal was open)\n return () => {\n if (previouslyFocused?.isConnected) previouslyFocused.focus?.()\n }\n }, [open])\n\n // merge the panel ref (positioning/focus) with the forwarded ref (consumer access)\n const setPanelRef = (node: HTMLDivElement | null) => {\n panelRef.current = node\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n }\n\n // trap Tab within the dialog so focus can't strand on the locked page behind it (Escape + backdrop\n // dismissal live in `<Overlay>`; this fires after the overlay's own handler)\n const handleTabTrap = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Tab') return\n const panel = panelRef.current\n if (!panel) return\n const focusables = [...panel.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (el) => el.offsetParent !== null || el === document.activeElement,\n )\n if (focusables.length === 0) {\n event.preventDefault()\n panel.focus()\n return\n }\n const first = focusables[0]\n const last = focusables[focusables.length - 1]\n const active = document.activeElement\n if (event.shiftKey && (active === first || active === panel)) {\n event.preventDefault()\n last.focus()\n } else if (!event.shiftKey && active === last) {\n event.preventDefault()\n first.focus()\n }\n }\n\n if (!open) return null\n\n // a side drawer (left/right) is always full-height with the body scrolling inside (header/footer pinned)\n const isDrawer = placement !== 'center'\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader = title != null || description != null || renderedIcon != null || showCloseButton\n // a divider sets the header apart from the body/footer, like Card\n const headerDivided = children != null || footer != null\n\n return (\n <Overlay\n open={open}\n onClose={onClose}\n closeOnBackdrop={closeOnBackdrop}\n closeOnEscape={closeOnEscape}\n onKeyDown={handleTabTrap}\n className={styles.overlay}\n data-size={size}\n data-placement={placement}\n data-scroll={isDrawer ? 'inside' : scrollBehavior}\n >\n <div\n ref={setPanelRef}\n className={clsx(styles.modal, styles[size], className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title != null ? titleId : undefined}\n aria-label={title == null ? ariaLabel : undefined}\n aria-describedby={description != null ? descId : undefined}\n tabIndex={-1}\n style={style as CSSProperties}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || description != null) && (\n <div className={styles.headerText}>\n {title != null && (\n <div id={titleId} className={styles.title}>\n {title}\n </div>\n )}\n {description != null && (\n <div id={descId} className={styles.subtitle}>\n {description}\n </div>\n )}\n </div>\n )}\n </div>\n {showCloseButton && (\n <IconButton\n variant=\"filled\"\n color=\"primary\"\n size=\"sm\"\n className={styles.close}\n aria-label={t('common.close')}\n onClick={onClose}\n >\n <Icon name=\"Close\" />\n </IconButton>\n )}\n </div>\n )}\n {children != null && (\n <div ref={bodyRef} className={styles.body}>\n {children}\n </div>\n )}\n {footer != null && (\n <div ref={footerRef} className={styles.footer}>\n {footer}\n </div>\n )}\n </div>\n </Overlay>\n )\n})\n"],"names":["Overlay","forwardRef","open","onClose","closeOnBackdrop","closeOnEscape","lockScroll","dim","className","style","children","onKeyDown","onMouseDown","onClick","props","ref","mouseDownTarget","useRef","visible","setVisible","useState","useLockBodyScroll","useEffect","raf","handleKeyDown","event","handleMouseDown","handleClick","createPortal","jsx","clsx","styles","ICON_NAME_SET","ICON_NAMES","FOCUSABLE","Modal","size","scrollBehavior","placement","title","description","icon","color","footer","showCloseButton","ariaLabel","forwardedRef","t","useT","panelRef","bodyRef","footerRef","titleId","useId","descId","previouslyFocused","target","_a","_b","_c","setPanelRef","node","handleTabTrap","panel","focusables","el","first","last","active","isDrawer","renderedIcon","Icon","hasHeader","headerDivided","jsxs","IconButton"],"mappings":"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"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { jsxs as y, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as Me, useId as Ce, useState as R, useRef as D, useCallback as G, useMemo as Ee, useEffect as q } from "react";
|
|
3
|
+
import { clsx as K } from "clsx";
|
|
4
|
+
import { u as Be } from "./formContext-B7ln1Miy.js";
|
|
5
|
+
import { F as Re } from "./FloatingPanel-BG9Uag__.js";
|
|
6
|
+
import { C as qe } from "./Chip-Cfo0v3Z8.js";
|
|
7
|
+
import { I as V } from "./Icon-CophpkHo.js";
|
|
8
|
+
import { L as Ke } from "./List-BHgFI9Ll.js";
|
|
9
|
+
import { L as Ve } from "./ListItem-B4yqZR-Z.js";
|
|
10
|
+
import { L as We } from "./Loader-C4JoXOyA.js";
|
|
11
|
+
import { T as W } from "./Typography-Cta6Rg4L.js";
|
|
12
|
+
import { a as $e } from "./ConfigProvider-2c94kUOk.js";
|
|
13
|
+
const Ae = "_field_16ykc_1", Fe = "_fullWidth_16ykc_7", Oe = "_label_16ykc_12", Pe = "_required_16ykc_21", Se = "_control_16ykc_27", He = "_filled_16ykc_47", je = "_open_16ykc_51", Qe = "_error_16ykc_56", Ue = "_disabled_16ykc_64", ze = "_chips_16ykc_31", Ge = "_value_16ykc_84", Je = "_valueLabel_16ykc_91", Xe = "_placeholder_16ykc_96", Ye = "_clear_16ykc_100", Ze = "_chevron_16ykc_117", er = "_sm_16ykc_127", rr = "_md_16ykc_131", lr = "_lg_16ykc_135", tr = "_helper_16ykc_140", or = "_popover_16ykc_145", ar = "_search_16ykc_152", cr = "_searchIcon_16ykc_161", sr = "_searchInput_16ykc_165", nr = "_listbox_16ykc_180", ir = "_active_16ykc_188", dr = "_noOptions_16ykc_192", ur = "_loading_16ykc_198", l = {
|
|
14
|
+
field: Ae,
|
|
15
|
+
fullWidth: Fe,
|
|
16
|
+
label: Oe,
|
|
17
|
+
required: Pe,
|
|
18
|
+
control: Se,
|
|
19
|
+
filled: He,
|
|
20
|
+
open: je,
|
|
21
|
+
error: Qe,
|
|
22
|
+
disabled: Ue,
|
|
23
|
+
chips: ze,
|
|
24
|
+
value: Ge,
|
|
25
|
+
valueLabel: Je,
|
|
26
|
+
placeholder: Xe,
|
|
27
|
+
clear: Ye,
|
|
28
|
+
chevron: Ze,
|
|
29
|
+
sm: er,
|
|
30
|
+
md: rr,
|
|
31
|
+
lg: lr,
|
|
32
|
+
helper: tr,
|
|
33
|
+
popover: or,
|
|
34
|
+
search: ar,
|
|
35
|
+
searchIcon: cr,
|
|
36
|
+
searchInput: sr,
|
|
37
|
+
listbox: nr,
|
|
38
|
+
active: ir,
|
|
39
|
+
noOptions: dr,
|
|
40
|
+
loading: ur
|
|
41
|
+
}, Dr = Me(function({
|
|
42
|
+
label: N,
|
|
43
|
+
options: L,
|
|
44
|
+
size: b = "md",
|
|
45
|
+
error: ie,
|
|
46
|
+
helperText: de,
|
|
47
|
+
required: J = !1,
|
|
48
|
+
fullWidth: ue = !0,
|
|
49
|
+
disabled: f = !1,
|
|
50
|
+
value: $,
|
|
51
|
+
defaultValue: fe,
|
|
52
|
+
onChange: A,
|
|
53
|
+
placeholder: me,
|
|
54
|
+
color: pe = "primary",
|
|
55
|
+
clearable: _e = !0,
|
|
56
|
+
searchable: d = !1,
|
|
57
|
+
searchPlaceholder: he,
|
|
58
|
+
onSearchChange: k,
|
|
59
|
+
loading: ve = !1,
|
|
60
|
+
loadingText: ye,
|
|
61
|
+
noOptionsText: T,
|
|
62
|
+
name: _,
|
|
63
|
+
id: be,
|
|
64
|
+
className: ke,
|
|
65
|
+
style: ge
|
|
66
|
+
}, g) {
|
|
67
|
+
const Ie = Ce(), I = be ?? Ie, F = `${I}-label`, O = `${I}-listbox`, X = `${I}-helper`, P = (e) => `${I}-opt-${e}`, w = $e(), Y = he ?? w("common.search"), M = Be(), C = !!(M && _), s = C ? M.field(_) : void 0, we = $ !== void 0 ? $ : C ? M.values[_] ?? [] : void 0, Z = $ !== void 0 || C, [xe, De] = R(fe ?? []), n = Z ? we : xe, S = ie ?? (s == null ? void 0 : s.error) ?? !1, H = de ?? (s == null ? void 0 : s.helperText), j = (e) => {
|
|
68
|
+
Z || De(e), C && M.setValue(_, e), A == null || A(e);
|
|
69
|
+
}, h = D(null), ee = D(null), Q = D({ buffer: "", timer: 0 }), E = D(void 0);
|
|
70
|
+
E.current = s ? () => s.onBlur({}) : void 0;
|
|
71
|
+
const [t, re] = R(!1), [p, le] = R(""), [m, u] = R(-1), Ne = G(
|
|
72
|
+
(e) => {
|
|
73
|
+
h.current = e, typeof g == "function" ? g(e) : g && (g.current = e);
|
|
74
|
+
},
|
|
75
|
+
[g]
|
|
76
|
+
), c = Ee(() => {
|
|
77
|
+
if (!d || k || !p.trim()) return L;
|
|
78
|
+
const e = p.trim().toLowerCase();
|
|
79
|
+
return L.filter((r) => r.label.toLowerCase().includes(e));
|
|
80
|
+
}, [d, k, p, L]), v = G(
|
|
81
|
+
(e, r) => {
|
|
82
|
+
let o = e;
|
|
83
|
+
for (; o >= 0 && o < c.length; ) {
|
|
84
|
+
if (!c[o].disabled) return o;
|
|
85
|
+
o += r;
|
|
86
|
+
}
|
|
87
|
+
return -1;
|
|
88
|
+
},
|
|
89
|
+
[c]
|
|
90
|
+
), te = D(null), B = G((e) => {
|
|
91
|
+
var r, o;
|
|
92
|
+
re(!1), le(""), window.clearTimeout(Q.current.timer), Q.current.buffer = "", (r = E.current) == null || r.call(E), e && ((o = h.current) == null || o.focus());
|
|
93
|
+
}, []);
|
|
94
|
+
q(() => {
|
|
95
|
+
t && (u(v(0, 1)), d && requestAnimationFrame(() => {
|
|
96
|
+
var e;
|
|
97
|
+
return (e = ee.current) == null ? void 0 : e.focus();
|
|
98
|
+
}));
|
|
99
|
+
}, [t]), q(() => {
|
|
100
|
+
var e, r;
|
|
101
|
+
!t || m < 0 || (r = (e = document.getElementById(P(m))) == null ? void 0 : e.scrollIntoView) == null || r.call(e, { block: "nearest" });
|
|
102
|
+
}, [t, m]), q(() => {
|
|
103
|
+
t && d && u(v(0, 1));
|
|
104
|
+
}, [p]), q(() => {
|
|
105
|
+
t && u((e) => e < c.length ? e : v(0, 1));
|
|
106
|
+
}, [c.length]);
|
|
107
|
+
const x = () => {
|
|
108
|
+
f || re(!0);
|
|
109
|
+
}, U = (e) => {
|
|
110
|
+
!e || e.disabled || j(
|
|
111
|
+
n.includes(e.value) ? n.filter((r) => r !== e.value) : [...n, e.value]
|
|
112
|
+
);
|
|
113
|
+
}, oe = (e) => j(n.filter((r) => r !== e)), ae = (e) => {
|
|
114
|
+
u((r) => {
|
|
115
|
+
const o = r < 0 ? e > 0 ? 0 : c.length - 1 : r + e, i = v(o, e);
|
|
116
|
+
return i === -1 ? r : i;
|
|
117
|
+
});
|
|
118
|
+
}, Le = (e) => {
|
|
119
|
+
const r = Q.current;
|
|
120
|
+
window.clearTimeout(r.timer), r.buffer += e.toLowerCase(), r.timer = window.setTimeout(() => r.buffer = "", 500);
|
|
121
|
+
const o = c.findIndex(
|
|
122
|
+
(i) => !i.disabled && i.label.toLowerCase().startsWith(r.buffer)
|
|
123
|
+
);
|
|
124
|
+
o >= 0 && u(o);
|
|
125
|
+
}, ce = (e) => {
|
|
126
|
+
if (!f)
|
|
127
|
+
switch (e.key) {
|
|
128
|
+
case "ArrowDown":
|
|
129
|
+
e.preventDefault(), t ? ae(1) : x();
|
|
130
|
+
break;
|
|
131
|
+
case "ArrowUp":
|
|
132
|
+
e.preventDefault(), t ? ae(-1) : x();
|
|
133
|
+
break;
|
|
134
|
+
case "Enter":
|
|
135
|
+
e.preventDefault(), t ? U(c[m]) : x();
|
|
136
|
+
break;
|
|
137
|
+
case " ":
|
|
138
|
+
t ? d || (e.preventDefault(), U(c[m])) : (e.preventDefault(), x());
|
|
139
|
+
break;
|
|
140
|
+
case "Escape":
|
|
141
|
+
t && (e.preventDefault(), e.stopPropagation(), B(!0));
|
|
142
|
+
break;
|
|
143
|
+
case "Tab":
|
|
144
|
+
t && B(!0);
|
|
145
|
+
break;
|
|
146
|
+
case "Backspace":
|
|
147
|
+
t && (!d || p === "") && n.length > 0 && (e.preventDefault(), oe(n[n.length - 1]));
|
|
148
|
+
break;
|
|
149
|
+
case "Home":
|
|
150
|
+
t && (e.preventDefault(), u(v(0, 1)));
|
|
151
|
+
break;
|
|
152
|
+
case "End":
|
|
153
|
+
t && (e.preventDefault(), u(v(c.length - 1, -1)));
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
!d && t && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey && Le(e.key);
|
|
157
|
+
}
|
|
158
|
+
}, Te = (e) => {
|
|
159
|
+
var o, i;
|
|
160
|
+
const r = e.relatedTarget;
|
|
161
|
+
r && ((o = te.current) != null && o.contains(r) || (i = h.current) != null && i.contains(r)) || s == null || s.onBlur(e);
|
|
162
|
+
}, se = t && m >= 0 ? P(m) : void 0, ne = b === "sm" ? 16 : b === "md" ? 14 : 12, z = n.length > 0;
|
|
163
|
+
return /* @__PURE__ */ y(
|
|
164
|
+
"div",
|
|
165
|
+
{
|
|
166
|
+
className: K(
|
|
167
|
+
l.field,
|
|
168
|
+
l[b],
|
|
169
|
+
ue && l.fullWidth,
|
|
170
|
+
S && l.error,
|
|
171
|
+
f && l.disabled,
|
|
172
|
+
ke
|
|
173
|
+
),
|
|
174
|
+
style: ge,
|
|
175
|
+
children: [
|
|
176
|
+
N != null && /* @__PURE__ */ y(
|
|
177
|
+
"span",
|
|
178
|
+
{
|
|
179
|
+
id: F,
|
|
180
|
+
className: l.label,
|
|
181
|
+
onClick: () => {
|
|
182
|
+
var e;
|
|
183
|
+
return !f && ((e = h.current) == null ? void 0 : e.focus());
|
|
184
|
+
},
|
|
185
|
+
children: [
|
|
186
|
+
/* @__PURE__ */ a(W, { as: "span", variant: "bodySmall", color: "muted", children: N }),
|
|
187
|
+
J && /* @__PURE__ */ a("span", { className: l.required, "aria-hidden": "true", children: "*" })
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
),
|
|
191
|
+
/* @__PURE__ */ y(
|
|
192
|
+
"div",
|
|
193
|
+
{
|
|
194
|
+
ref: Ne,
|
|
195
|
+
id: I,
|
|
196
|
+
..._ ? { name: _ } : {},
|
|
197
|
+
role: "combobox",
|
|
198
|
+
tabIndex: f ? -1 : 0,
|
|
199
|
+
"aria-haspopup": "listbox",
|
|
200
|
+
"aria-expanded": t,
|
|
201
|
+
"aria-controls": t ? O : void 0,
|
|
202
|
+
"aria-activedescendant": d ? void 0 : se,
|
|
203
|
+
"aria-labelledby": N != null ? F : void 0,
|
|
204
|
+
"aria-disabled": f || void 0,
|
|
205
|
+
"aria-required": J || void 0,
|
|
206
|
+
"aria-invalid": S || void 0,
|
|
207
|
+
"aria-describedby": H != null ? X : void 0,
|
|
208
|
+
className: K(l.control, t && l.open, z && l.filled),
|
|
209
|
+
onClick: () => t ? B(!1) : x(),
|
|
210
|
+
onKeyDown: ce,
|
|
211
|
+
onBlur: Te,
|
|
212
|
+
children: [
|
|
213
|
+
z ? /* @__PURE__ */ a("span", { className: l.chips, children: n.map((e) => {
|
|
214
|
+
const r = L.find((o) => o.value === e);
|
|
215
|
+
return /* @__PURE__ */ a(
|
|
216
|
+
qe,
|
|
217
|
+
{
|
|
218
|
+
size: b,
|
|
219
|
+
color: pe,
|
|
220
|
+
disabled: f,
|
|
221
|
+
onDelete: () => oe(e),
|
|
222
|
+
deleteLabel: `Remove ${(r == null ? void 0 : r.label) ?? e}`,
|
|
223
|
+
deleteTabIndex: -1,
|
|
224
|
+
children: (r == null ? void 0 : r.label) ?? e
|
|
225
|
+
},
|
|
226
|
+
e
|
|
227
|
+
);
|
|
228
|
+
}) }) : /* @__PURE__ */ a("span", { className: K(l.value, l.placeholder), children: /* @__PURE__ */ a("span", { className: l.valueLabel, children: me ?? w("select.placeholder") }) }),
|
|
229
|
+
_e && z && !f && /* @__PURE__ */ a(
|
|
230
|
+
"button",
|
|
231
|
+
{
|
|
232
|
+
type: "button",
|
|
233
|
+
className: l.clear,
|
|
234
|
+
"aria-label": w("multiSelect.clearAll"),
|
|
235
|
+
tabIndex: -1,
|
|
236
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
237
|
+
onClick: (e) => {
|
|
238
|
+
var r;
|
|
239
|
+
e.stopPropagation(), j([]), (r = h.current) == null || r.focus();
|
|
240
|
+
},
|
|
241
|
+
children: /* @__PURE__ */ a(V, { name: "CloseCircle", size: "sm" })
|
|
242
|
+
}
|
|
243
|
+
),
|
|
244
|
+
/* @__PURE__ */ a(
|
|
245
|
+
V,
|
|
246
|
+
{
|
|
247
|
+
name: "ArrowDown4",
|
|
248
|
+
className: l.chevron,
|
|
249
|
+
style: { width: ne, height: ne },
|
|
250
|
+
"aria-hidden": "true"
|
|
251
|
+
}
|
|
252
|
+
)
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
),
|
|
256
|
+
/* @__PURE__ */ y(
|
|
257
|
+
Re,
|
|
258
|
+
{
|
|
259
|
+
ref: te,
|
|
260
|
+
open: t,
|
|
261
|
+
triggerRef: h,
|
|
262
|
+
onClose: B,
|
|
263
|
+
matchTriggerWidth: !0,
|
|
264
|
+
className: l.popover,
|
|
265
|
+
children: [
|
|
266
|
+
d && /* @__PURE__ */ y("div", { className: l.search, children: [
|
|
267
|
+
/* @__PURE__ */ a(V, { name: "SearchNormal", size: "sm", className: l.searchIcon, "aria-hidden": "true" }),
|
|
268
|
+
/* @__PURE__ */ a(
|
|
269
|
+
"input",
|
|
270
|
+
{
|
|
271
|
+
ref: ee,
|
|
272
|
+
className: l.searchInput,
|
|
273
|
+
type: "text",
|
|
274
|
+
role: "combobox",
|
|
275
|
+
"aria-expanded": "true",
|
|
276
|
+
"aria-controls": O,
|
|
277
|
+
"aria-activedescendant": se,
|
|
278
|
+
"aria-autocomplete": "list",
|
|
279
|
+
"aria-label": Y,
|
|
280
|
+
placeholder: Y,
|
|
281
|
+
value: p,
|
|
282
|
+
spellCheck: !1,
|
|
283
|
+
onChange: (e) => {
|
|
284
|
+
le(e.target.value), k == null || k(e.target.value);
|
|
285
|
+
},
|
|
286
|
+
onKeyDown: ce
|
|
287
|
+
}
|
|
288
|
+
)
|
|
289
|
+
] }),
|
|
290
|
+
/* @__PURE__ */ a(
|
|
291
|
+
Ke,
|
|
292
|
+
{
|
|
293
|
+
role: "listbox",
|
|
294
|
+
id: O,
|
|
295
|
+
"aria-labelledby": N != null ? F : void 0,
|
|
296
|
+
"aria-multiselectable": "true",
|
|
297
|
+
size: b,
|
|
298
|
+
className: l.listbox,
|
|
299
|
+
onMouseLeave: () => u(-1),
|
|
300
|
+
children: ve ? /* @__PURE__ */ y("div", { className: l.loading, children: [
|
|
301
|
+
/* @__PURE__ */ a(We, { size: "sm" }),
|
|
302
|
+
/* @__PURE__ */ a(W, { as: "span", variant: "bodySmall", color: "muted", children: ye ?? w("common.loading") })
|
|
303
|
+
] }) : c.length === 0 ? /* @__PURE__ */ a("div", { className: l.noOptions, children: /* @__PURE__ */ a(W, { as: "span", variant: "bodySmall", color: "muted", children: T == null ? w("select.noOptions") : typeof T == "function" ? T(p) : T }) }) : c.map((e, r) => {
|
|
304
|
+
const o = n.includes(e.value);
|
|
305
|
+
return /* @__PURE__ */ a(
|
|
306
|
+
Ve,
|
|
307
|
+
{
|
|
308
|
+
id: P(r),
|
|
309
|
+
role: "option",
|
|
310
|
+
tabIndex: -1,
|
|
311
|
+
"aria-selected": o,
|
|
312
|
+
"aria-current": void 0,
|
|
313
|
+
clickable: !0,
|
|
314
|
+
selected: o,
|
|
315
|
+
disabled: e.disabled,
|
|
316
|
+
icon: e.icon,
|
|
317
|
+
className: K(r === m && l.active),
|
|
318
|
+
trailing: o ? /* @__PURE__ */ a(V, { name: "TickCircle", size: "sm" }) : void 0,
|
|
319
|
+
onMouseEnter: () => !e.disabled && u(r),
|
|
320
|
+
onMouseDown: (i) => i.preventDefault(),
|
|
321
|
+
onClick: () => U(e),
|
|
322
|
+
children: e.label
|
|
323
|
+
},
|
|
324
|
+
e.value
|
|
325
|
+
);
|
|
326
|
+
})
|
|
327
|
+
}
|
|
328
|
+
)
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
),
|
|
332
|
+
H != null && /* @__PURE__ */ a(
|
|
333
|
+
W,
|
|
334
|
+
{
|
|
335
|
+
as: "span",
|
|
336
|
+
id: X,
|
|
337
|
+
variant: "bodySmall",
|
|
338
|
+
color: S ? "error" : "muted",
|
|
339
|
+
className: l.helper,
|
|
340
|
+
children: H
|
|
341
|
+
}
|
|
342
|
+
)
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
);
|
|
346
|
+
});
|
|
347
|
+
export {
|
|
348
|
+
Dr as M
|
|
349
|
+
};
|
|
350
|
+
//# sourceMappingURL=MultiSelect-BGRT_B60.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect-BGRT_B60.js","sources":["../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Chip } from '../Chip'\nimport { Icon } from '../Icon'\nimport { List, ListItem } from '../List'\nimport { Loader } from '../Loader'\nimport { Typography } from '../Typography'\nimport type { SelectOption, SelectSize } from '../Select'\nimport styles from './MultiSelect.module.css'\n\nexport interface MultiSelectProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** The selectable options. */\n options: SelectOption[]\n /** Preset size — control height, font, chips and option density. */\n size?: SelectSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — the chosen options' `value`s. */\n value?: string[]\n /** Initial value for uncontrolled use. */\n defaultValue?: string[]\n /** Fires with the next array of selected values. */\n onChange?: (value: string[]) => void\n /** Text shown in the trigger when nothing is selected. Defaults to `\"Select…\"`. */\n placeholder?: string\n /** Theme palette token tinting the selected chips. Defaults to `primary`. */\n color?: ThemeColor\n /** Shows a clear (×) button in the trigger when anything is selected. Defaults to `true`. */\n clearable?: boolean\n /** Adds a search box inside the popover that filters options by label. */\n searchable?: boolean\n /** Placeholder for the search box. Defaults to `\"Search…\"`. */\n searchPlaceholder?: string\n /**\n * Fires with the search query as the user types. **Providing this switches off the built-in\n * local filtering** — you own `options` (e.g. fetch them from a server for the current query).\n */\n onSearchChange?: (query: string) => void\n /** Shows a loading indicator in the popover (e.g. while fetching server-side search results). */\n loading?: boolean\n /** Text shown next to the loader while `loading`. Defaults to `\"Loading…\"`. */\n loadingText?: ReactNode\n /**\n * Shown in the popover when no option matches. Defaults to `\"No options\"`. Pass a function\n * `(query) => node` to vary the message by the current search text — e.g. a \"Type to search\" hint\n * while it's empty vs a \"No results\" message after typing.\n */\n noOptionsText?: ReactNode | ((query: string) => ReactNode)\n /** Form field name — auto-binds to a surrounding `<Form>` (value is a `string[]`). */\n name?: string\n /** Id for the trigger (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\n/**\n * A labeled multi-select — the `string[]` sibling of `Select`. The trigger shows the chosen options\n * as deletable `Chip`s (wrapping, growing like `TagsField`) or a placeholder; clicking it opens the\n * same `Dropdown`-style popover (portaled, flips, scroll-locked, trigger-width, animated — shared via\n * `useFloatingPanel`). Options render as `ListItem`s in a `role=\"listbox\"` `aria-multiselectable`\n * list; selecting **toggles** an option and keeps the popover open, the chosen ones showing a tick.\n * Full keyboard support (Arrow/Home/End, Enter/Space to toggle, Escape to close, type-ahead) and\n * ARIA. Optionally `searchable` + `clearable`; pass `onSearchChange` to drive the search\n * **server-side** (you own `options` — local filtering is skipped) with a `loading` indicator.\n * Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name` (value = `string[]`; validate with\n * e.g. `z.array(z.string()).min(1, 'Pick at least one')`). Token-only styling.\n */\nexport const MultiSelect = forwardRef<HTMLDivElement, MultiSelectProps>(function MultiSelect(\n {\n label,\n options,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n placeholder,\n color = 'primary',\n clearable = true,\n searchable = false,\n searchPlaceholder,\n onSearchChange,\n loading = false,\n loadingText,\n noOptionsText,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n) {\n const reactId = useId()\n const id = idProp ?? reactId\n const labelId = `${id}-label`\n const listboxId = `${id}-listbox`\n const helperId = `${id}-helper`\n const optionId = (index: number) => `${id}-opt-${index}`\n\n // ── value (controlled / form-bound / uncontrolled) — always a string[] ─────────────────────────\n // Read the RAW form value (field().value String-coerces, which would flatten the array).\n const t = useT()\n const searchPh = searchPlaceholder ?? t('common.search')\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string[] | undefined) ?? [])\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string[]>(defaultValue ?? [])\n const selectedValues = isControlled ? externalValue! : internal\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const commit = (next: string[]) => {\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // ── popover open state ─────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const searchInputRef = useRef<HTMLInputElement | null>(null)\n const typeahead = useRef({ buffer: '', timer: 0 })\n const fieldBlur = useRef<(() => void) | undefined>(undefined)\n fieldBlur.current = bound ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>) : undefined\n const [open, setOpen] = useState(false)\n const [searchQuery, setSearchQuery] = useState('')\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n\n const setTriggerRef = useCallback(\n (node: HTMLDivElement | null) => {\n triggerRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLDivElement | null }).current = node\n },\n [ref],\n )\n\n // when `onSearchChange` is set the consumer owns `options` (server-side search) — skip local filter\n const filteredOptions = useMemo(() => {\n if (!searchable || onSearchChange || !searchQuery.trim()) return options\n const q = searchQuery.trim().toLowerCase()\n return options.filter((o) => o.label.toLowerCase().includes(q))\n }, [searchable, onSearchChange, searchQuery, options])\n\n const findEnabled = useCallback(\n (start: number, delta: number) => {\n let i = start\n while (i >= 0 && i < filteredOptions.length) {\n if (!filteredOptions[i].disabled) return i\n i += delta\n }\n return -1\n },\n [filteredOptions],\n )\n\n // the floating panel forwards its node here, for the focus-leaves-the-widget check on blur\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closeMenu = useCallback((refocus: boolean) => {\n setOpen(false)\n setSearchQuery('')\n window.clearTimeout(typeahead.current.timer)\n typeahead.current.buffer = ''\n fieldBlur.current?.()\n if (refocus) triggerRef.current?.focus()\n }, [])\n\n // on open: highlight the first enabled option, focus the search box if searchable\n useEffect(() => {\n if (!open) return\n setHighlightedIndex(findEnabled(0, 1))\n if (searchable) requestAnimationFrame(() => searchInputRef.current?.focus())\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n useEffect(() => {\n if (!open || highlightedIndex < 0) return\n document.getElementById(optionId(highlightedIndex))?.scrollIntoView?.({ block: 'nearest' })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, highlightedIndex])\n\n // search filter → re-anchor to the first match\n useEffect(() => {\n if (open && searchable) setHighlightedIndex(findEnabled(0, 1))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery])\n\n // keep the highlight in range if the option count changes while open\n useEffect(() => {\n if (open) setHighlightedIndex((i) => (i < filteredOptions.length ? i : findEnabled(0, 1)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredOptions.length])\n\n const openMenu = () => {\n if (!disabled) setOpen(true)\n }\n const toggleOption = (opt: SelectOption | undefined) => {\n if (!opt || opt.disabled) return\n commit(\n selectedValues.includes(opt.value)\n ? selectedValues.filter((v) => v !== opt.value)\n : [...selectedValues, opt.value],\n )\n // multi-select stays open\n }\n const removeValue = (v: string) => commit(selectedValues.filter((x) => x !== v))\n const moveHighlight = (delta: number) => {\n setHighlightedIndex((cur) => {\n const start = cur < 0 ? (delta > 0 ? 0 : filteredOptions.length - 1) : cur + delta\n const found = findEnabled(start, delta)\n return found === -1 ? cur : found\n })\n }\n\n const handleTypeahead = (char: string) => {\n const t = typeahead.current\n window.clearTimeout(t.timer)\n t.buffer += char.toLowerCase()\n t.timer = window.setTimeout(() => (t.buffer = ''), 500)\n const match = filteredOptions.findIndex(\n (o) => !o.disabled && o.label.toLowerCase().startsWith(t.buffer),\n )\n if (match >= 0) setHighlightedIndex(match)\n }\n\n const handleKeyDown = (event: ReactKeyboardEvent) => {\n if (disabled) return\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n open ? moveHighlight(1) : openMenu()\n break\n case 'ArrowUp':\n event.preventDefault()\n open ? moveHighlight(-1) : openMenu()\n break\n case 'Enter':\n event.preventDefault()\n if (!open) openMenu()\n else toggleOption(filteredOptions[highlightedIndex])\n break\n case ' ':\n // Space opens a closed menu (any mode); toggles only when open & not searchable\n if (!open) {\n event.preventDefault()\n openMenu()\n } else if (!searchable) {\n event.preventDefault()\n toggleOption(filteredOptions[highlightedIndex])\n }\n break\n case 'Escape':\n if (open) {\n event.preventDefault()\n event.stopPropagation() // don't let FloatingPanel's own Escape also fire closeMenu/onBlur\n closeMenu(true)\n }\n break\n case 'Tab':\n // refocus the trigger so Tab continues from the field's visual location, not the portaled\n // search input's DOM position (end of <body>); don't preventDefault — let Tab move on\n if (open) closeMenu(true)\n break\n case 'Backspace':\n // remove the last chip when the (search) input is empty or there's no search box\n if (open && (!searchable || searchQuery === '') && selectedValues.length > 0) {\n event.preventDefault()\n removeValue(selectedValues[selectedValues.length - 1])\n }\n break\n case 'Home':\n if (open) {\n event.preventDefault()\n setHighlightedIndex(findEnabled(0, 1))\n }\n break\n case 'End':\n if (open) {\n event.preventDefault()\n setHighlightedIndex(findEnabled(filteredOptions.length - 1, -1))\n }\n break\n default:\n if (\n !searchable &&\n open &&\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey\n ) {\n handleTypeahead(event.key)\n }\n }\n }\n\n const handleTriggerBlur = (event: FocusEvent<HTMLDivElement>) => {\n const next = event.relatedTarget as Node | null\n if (next && (popoverRef.current?.contains(next) || triggerRef.current?.contains(next))) return\n bound?.onBlur(event as unknown as FocusEvent<HTMLInputElement>)\n }\n\n const activeId = open && highlightedIndex >= 0 ? optionId(highlightedIndex) : undefined\n // chevron size per field size: sm 16 · md 14 · lg 12\n const chevronPx = size === 'sm' ? 16 : size === 'md' ? 14 : 12\n const hasValue = selectedValues.length > 0\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <span\n id={labelId}\n className={styles.label}\n onClick={() => !disabled && triggerRef.current?.focus()}\n >\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n )}\n\n <div\n ref={setTriggerRef}\n id={id}\n {...(name ? { name } : {})}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={searchable ? undefined : activeId}\n aria-labelledby={label != null ? labelId : undefined}\n aria-disabled={disabled || undefined}\n aria-required={required || undefined}\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n className={clsx(styles.control, open && styles.open, hasValue && styles.filled)}\n onClick={() => (open ? closeMenu(false) : openMenu())}\n onKeyDown={handleKeyDown}\n onBlur={handleTriggerBlur}\n >\n {hasValue ? (\n <span className={styles.chips}>\n {selectedValues.map((v) => {\n const opt = options.find((o) => o.value === v)\n return (\n <Chip\n key={v}\n size={size}\n color={color}\n disabled={disabled}\n onDelete={() => removeValue(v)}\n deleteLabel={`Remove ${opt?.label ?? v}`}\n // the combobox owns keyboard focus — keep chip deletes out of the tab order\n deleteTabIndex={-1}\n >\n {opt?.label ?? v}\n </Chip>\n )\n })}\n </span>\n ) : (\n <span className={clsx(styles.value, styles.placeholder)}>\n <span className={styles.valueLabel}>{placeholder ?? t('select.placeholder')}</span>\n </span>\n )}\n\n {clearable && hasValue && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('multiSelect.clearAll')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n commit([])\n triggerRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <Icon\n name=\"ArrowDown4\"\n className={styles.chevron}\n style={{ width: chevronPx, height: chevronPx }}\n aria-hidden=\"true\"\n />\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closeMenu}\n matchTriggerWidth\n className={styles.popover}\n >\n {searchable && (\n <div className={styles.search}>\n <Icon name=\"SearchNormal\" size=\"sm\" className={styles.searchIcon} aria-hidden=\"true\" />\n <input\n ref={searchInputRef}\n className={styles.searchInput}\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listboxId}\n aria-activedescendant={activeId}\n aria-autocomplete=\"list\"\n aria-label={searchPh}\n placeholder={searchPh}\n value={searchQuery}\n spellCheck={false}\n onChange={(e) => {\n setSearchQuery(e.target.value)\n onSearchChange?.(e.target.value)\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n )}\n\n <List\n role=\"listbox\"\n id={listboxId}\n aria-labelledby={label != null ? labelId : undefined}\n aria-multiselectable=\"true\"\n size={size}\n className={styles.listbox}\n // clear the mouse highlight when the pointer leaves the list (no lingering hover)\n onMouseLeave={() => setHighlightedIndex(-1)}\n >\n {loading ? (\n <div className={styles.loading}>\n <Loader size=\"sm\" />\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {loadingText ?? t('common.loading')}\n </Typography>\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={styles.noOptions}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {noOptionsText == null\n ? t('select.noOptions')\n : typeof noOptionsText === 'function'\n ? noOptionsText(searchQuery)\n : noOptionsText}\n </Typography>\n </div>\n ) : (\n filteredOptions.map((opt, index) => {\n const isSelected = selectedValues.includes(opt.value)\n return (\n <ListItem\n key={opt.value}\n id={optionId(index)}\n role=\"option\"\n tabIndex={-1}\n aria-selected={isSelected}\n aria-current={undefined}\n clickable\n selected={isSelected}\n disabled={opt.disabled}\n icon={opt.icon}\n className={clsx(index === highlightedIndex && styles.active)}\n trailing={isSelected ? <Icon name=\"TickCircle\" size=\"sm\" /> : undefined}\n onMouseEnter={() => !opt.disabled && setHighlightedIndex(index)}\n // keep focus on the search input (menu stays open on toggle) so typing keeps working\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => toggleOption(opt)}\n >\n {opt.label}\n </ListItem>\n )\n })\n )}\n </List>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["MultiSelect","forwardRef","label","options","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","placeholder","color","clearable","searchable","searchPlaceholder","onSearchChange","loading","loadingText","noOptionsText","name","idProp","className","style","ref","reactId","useId","id","labelId","listboxId","helperId","optionId","index","t","useT","searchPh","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","selectedValues","resolvedError","resolvedHelperText","commit","next","triggerRef","useRef","searchInputRef","typeahead","fieldBlur","open","setOpen","searchQuery","setSearchQuery","highlightedIndex","setHighlightedIndex","setTriggerRef","useCallback","node","filteredOptions","useMemo","q","o","findEnabled","start","delta","i","popoverRef","closeMenu","refocus","_a","_b","useEffect","openMenu","toggleOption","opt","v","removeValue","x","moveHighlight","cur","found","handleTypeahead","char","match","handleKeyDown","event","handleTriggerBlur","activeId","chevronPx","hasValue","jsxs","clsx","styles","jsx","Typography","Chip","Icon","FloatingPanel","List","Loader","isSelected","ListItem","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FaA,KAAcC,GAA6C,SACtE;AAAA,EACE,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,KAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,KAAQ;AAAA,EACR,WAAAC,KAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,SAAAC,KAAU;AAAA,EACV,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,WAAAC;AAAA,EACA,OAAAC;AACF,GACAC,GACA;AACA,QAAMC,KAAUC,GAAA,GACVC,IAAKN,MAAUI,IACfG,IAAU,GAAGD,CAAE,UACfE,IAAY,GAAGF,CAAE,YACjBG,IAAW,GAAGH,CAAE,WAChBI,IAAW,CAACC,MAAkB,GAAGL,CAAE,QAAQK,CAAK,IAIhDC,IAAIC,GAAA,GACJC,IAAWpB,MAAqBkB,EAAE,eAAe,GACjDG,IAAOC,GAAA,GACPC,IAAc,GAAQF,KAAQhB,IAC9BmB,IAAQD,IAAcF,EAAM,MAAMhB,CAAK,IAAI,QAC3CoB,KACJhC,MAAU,SACNA,IACA8B,IACIF,EAAM,OAAOhB,CAAK,KAA8B,CAAA,IAClD,QACFqB,IAAejC,MAAU,UAAa8B,GACtC,CAACI,IAAUC,EAAW,IAAIC,EAAmBnC,MAAgB,CAAA,CAAE,GAC/DoC,IAAiBJ,IAAeD,KAAiBE,IAEjDI,IAAgB3C,OAASoC,KAAA,gBAAAA,EAAO,UAAS,IACzCQ,IAAqB3C,OAAcmC,KAAA,gBAAAA,EAAO,aAE1CS,IAAS,CAACC,MAAmB;AACjC,IAAKR,KAAcE,GAAYM,CAAI,GAC/BX,KAAaF,EAAM,SAAShB,GAAO6B,CAAI,GAC3CvC,KAAA,QAAAA,EAAWuC;AAAA,EACb,GAGMC,IAAaC,EAA8B,IAAI,GAC/CC,KAAiBD,EAAgC,IAAI,GACrDE,IAAYF,EAAO,EAAE,QAAQ,IAAI,OAAO,GAAG,GAC3CG,IAAYH,EAAiC,MAAS;AAC5D,EAAAG,EAAU,UAAUf,IAAQ,MAAMA,EAAM,OAAO,CAAA,CAAkC,IAAI;AACrF,QAAM,CAACgB,GAAMC,EAAO,IAAIZ,EAAS,EAAK,GAChC,CAACa,GAAaC,EAAc,IAAId,EAAS,EAAE,GAC3C,CAACe,GAAkBC,CAAmB,IAAIhB,EAAS,EAAE,GAErDiB,KAAgBC;AAAA,IACpB,CAACC,MAAgC;AAC/B,MAAAb,EAAW,UAAUa,GACjB,OAAOvC,KAAQ,aAAYA,EAAIuC,CAAI,IAC9BvC,MAAMA,EAA2C,UAAUuC;AAAA,IACtE;AAAA,IACA,CAACvC,CAAG;AAAA,EAAA,GAIAwC,IAAkBC,GAAQ,MAAM;AACpC,QAAI,CAACnD,KAAcE,KAAkB,CAACyC,EAAY,KAAA,EAAQ,QAAOxD;AACjE,UAAMiE,IAAIT,EAAY,KAAA,EAAO,YAAA;AAC7B,WAAOxD,EAAQ,OAAO,CAACkE,MAAMA,EAAE,MAAM,YAAA,EAAc,SAASD,CAAC,CAAC;AAAA,EAChE,GAAG,CAACpD,GAAYE,GAAgByC,GAAaxD,CAAO,CAAC,GAE/CmE,IAAcN;AAAA,IAClB,CAACO,GAAeC,MAAkB;AAChC,UAAIC,IAAIF;AACR,aAAOE,KAAK,KAAKA,IAAIP,EAAgB,UAAQ;AAC3C,YAAI,CAACA,EAAgBO,CAAC,EAAE,SAAU,QAAOA;AACzC,QAAAA,KAAKD;AAAA,MACP;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAACN,CAAe;AAAA,EAAA,GAIZQ,KAAarB,EAA8B,IAAI,GAE/CsB,IAAYX,EAAY,CAACY,MAAqB;;AAClD,IAAAlB,GAAQ,EAAK,GACbE,GAAe,EAAE,GACjB,OAAO,aAAaL,EAAU,QAAQ,KAAK,GAC3CA,EAAU,QAAQ,SAAS,KAC3BsB,IAAArB,EAAU,YAAV,QAAAqB,EAAA,KAAArB,IACIoB,OAASE,IAAA1B,EAAW,YAAX,QAAA0B,EAAoB;AAAA,EACnC,GAAG,CAAA,CAAE;AAGL,EAAAC,EAAU,MAAM;AACd,IAAKtB,MACLK,EAAoBQ,EAAY,GAAG,CAAC,CAAC,GACjCtD,KAAY,sBAAsB,MAAA;;AAAM,cAAA6D,IAAAvB,GAAe,YAAf,gBAAAuB,EAAwB;AAAA,KAAO;AAAA,EAE7E,GAAG,CAACpB,CAAI,CAAC,GAETsB,EAAU,MAAM;;AACd,IAAI,CAACtB,KAAQI,IAAmB,MAChCiB,KAAAD,IAAA,SAAS,eAAe5C,EAAS4B,CAAgB,CAAC,MAAlD,gBAAAgB,EAAqD,mBAArD,QAAAC,EAAA,KAAAD,GAAsE,EAAE,OAAO;EAEjF,GAAG,CAACpB,GAAMI,CAAgB,CAAC,GAG3BkB,EAAU,MAAM;AACd,IAAItB,KAAQzC,KAAY8C,EAAoBQ,EAAY,GAAG,CAAC,CAAC;AAAA,EAE/D,GAAG,CAACX,CAAW,CAAC,GAGhBoB,EAAU,MAAM;AACd,IAAItB,KAAMK,EAAoB,CAACW,MAAOA,IAAIP,EAAgB,SAASO,IAAIH,EAAY,GAAG,CAAC,CAAE;AAAA,EAE3F,GAAG,CAACJ,EAAgB,MAAM,CAAC;AAE3B,QAAMc,IAAW,MAAM;AACrB,IAAKvE,KAAUiD,GAAQ,EAAI;AAAA,EAC7B,GACMuB,IAAe,CAACC,MAAkC;AACtD,IAAI,CAACA,KAAOA,EAAI,YAChBhC;AAAA,MACEH,EAAe,SAASmC,EAAI,KAAK,IAC7BnC,EAAe,OAAO,CAACoC,MAAMA,MAAMD,EAAI,KAAK,IAC5C,CAAC,GAAGnC,GAAgBmC,EAAI,KAAK;AAAA,IAAA;AAAA,EAGrC,GACME,KAAc,CAACD,MAAcjC,EAAOH,EAAe,OAAO,CAACsC,MAAMA,MAAMF,CAAC,CAAC,GACzEG,KAAgB,CAACd,MAAkB;AACvC,IAAAV,EAAoB,CAACyB,MAAQ;AAC3B,YAAMhB,IAAQgB,IAAM,IAAKf,IAAQ,IAAI,IAAIN,EAAgB,SAAS,IAAKqB,IAAMf,GACvEgB,IAAQlB,EAAYC,GAAOC,CAAK;AACtC,aAAOgB,MAAU,KAAKD,IAAMC;AAAA,IAC9B,CAAC;AAAA,EACH,GAEMC,KAAkB,CAACC,MAAiB;AACxC,UAAMvD,IAAIoB,EAAU;AACpB,WAAO,aAAapB,EAAE,KAAK,GAC3BA,EAAE,UAAUuD,EAAK,YAAA,GACjBvD,EAAE,QAAQ,OAAO,WAAW,MAAOA,EAAE,SAAS,IAAK,GAAG;AACtD,UAAMwD,IAAQzB,EAAgB;AAAA,MAC5B,CAACG,MAAM,CAACA,EAAE,YAAYA,EAAE,MAAM,YAAA,EAAc,WAAWlC,EAAE,MAAM;AAAA,IAAA;AAEjE,IAAIwD,KAAS,KAAG7B,EAAoB6B,CAAK;AAAA,EAC3C,GAEMC,KAAgB,CAACC,MAA8B;AACnD,QAAI,CAAApF;AACJ,cAAQoF,EAAM,KAAA;AAAA,QACZ,KAAK;AACH,UAAAA,EAAM,eAAA,GACNpC,IAAO6B,GAAc,CAAC,IAAIN,EAAA;AAC1B;AAAA,QACF,KAAK;AACH,UAAAa,EAAM,eAAA,GACNpC,IAAO6B,GAAc,EAAE,IAAIN,EAAA;AAC3B;AAAA,QACF,KAAK;AACH,UAAAa,EAAM,eAAA,GACDpC,IACAwB,EAAaf,EAAgBL,CAAgB,CAAC,IADxCmB,EAAA;AAEX;AAAA,QACF,KAAK;AAEH,UAAKvB,IAGOzC,MACV6E,EAAM,eAAA,GACNZ,EAAaf,EAAgBL,CAAgB,CAAC,MAJ9CgC,EAAM,eAAA,GACNb,EAAA;AAKF;AAAA,QACF,KAAK;AACH,UAAIvB,MACFoC,EAAM,eAAA,GACNA,EAAM,gBAAA,GACNlB,EAAU,EAAI;AAEhB;AAAA,QACF,KAAK;AAGH,UAAIlB,OAAgB,EAAI;AACxB;AAAA,QACF,KAAK;AAEH,UAAIA,MAAS,CAACzC,KAAc2C,MAAgB,OAAOZ,EAAe,SAAS,MACzE8C,EAAM,eAAA,GACNT,GAAYrC,EAAeA,EAAe,SAAS,CAAC,CAAC;AAEvD;AAAA,QACF,KAAK;AACH,UAAIU,MACFoC,EAAM,eAAA,GACN/B,EAAoBQ,EAAY,GAAG,CAAC,CAAC;AAEvC;AAAA,QACF,KAAK;AACH,UAAIb,MACFoC,EAAM,eAAA,GACN/B,EAAoBQ,EAAYJ,EAAgB,SAAS,GAAG,EAAE,CAAC;AAEjE;AAAA,QACF;AACE,UACE,CAAClD,KACDyC,KACAoC,EAAM,IAAI,WAAW,KACrB,CAACA,EAAM,WACP,CAACA,EAAM,WACP,CAACA,EAAM,UAEPJ,GAAgBI,EAAM,GAAG;AAAA,MAC3B;AAAA,EAEN,GAEMC,KAAoB,CAACD,MAAsC;;AAC/D,UAAM1C,IAAO0C,EAAM;AACnB,IAAI1C,OAAS0B,IAAAH,GAAW,YAAX,QAAAG,EAAoB,SAAS1B,OAAS2B,IAAA1B,EAAW,YAAX,QAAA0B,EAAoB,SAAS3B,OAChFV,KAAA,QAAAA,EAAO,OAAOoD;AAAA,EAChB,GAEME,KAAWtC,KAAQI,KAAoB,IAAI5B,EAAS4B,CAAgB,IAAI,QAExEmC,KAAY5F,MAAS,OAAO,KAAKA,MAAS,OAAO,KAAK,IACtD6F,IAAWlD,EAAe,SAAS;AAEzC,SACE,gBAAAmD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOhG,CAAI;AAAA,QACXI,MAAa4F,EAAO;AAAA,QACpBpD,KAAiBoD,EAAO;AAAA,QACxB3F,KAAY2F,EAAO;AAAA,QACnB5E;AAAA,MAAA;AAAA,MAEF,OAAAC;AAAA,MAEC,UAAA;AAAA,QAAAvB,KAAS,QACR,gBAAAgG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAIpE;AAAA,YACJ,WAAWsE,EAAO;AAAA,YAClB,SAAS,MAAA;;AAAM,sBAAC3F,OAAYoE,IAAAzB,EAAW,YAAX,gBAAAyB,EAAoB;AAAA;AAAA,YAEhD,UAAA;AAAA,cAAA,gBAAAwB,EAACC,KAAW,IAAG,QAAO,SAAQ,aAAY,OAAM,SAC7C,UAAApG,EAAA,CACH;AAAA,cACCK,uBACE,QAAA,EAAK,WAAW6F,EAAO,UAAU,eAAY,QAAO,UAAA,IAAA,CAErD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAKN,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKnC;AAAA,YACL,IAAAlC;AAAA,YACC,GAAIP,IAAO,EAAE,MAAAA,EAAA,IAAS,CAAA;AAAA,YACvB,MAAK;AAAA,YACL,UAAUb,IAAW,KAAK;AAAA,YAC1B,iBAAc;AAAA,YACd,iBAAegD;AAAA,YACf,iBAAeA,IAAO1B,IAAY;AAAA,YAClC,yBAAuBf,IAAa,SAAY+E;AAAA,YAChD,mBAAiB7F,KAAS,OAAO4B,IAAU;AAAA,YAC3C,iBAAerB,KAAY;AAAA,YAC3B,iBAAeF,KAAY;AAAA,YAC3B,gBAAcyC,KAAiB;AAAA,YAC/B,oBAAkBC,KAAsB,OAAOjB,IAAW;AAAA,YAC1D,WAAWmE,EAAKC,EAAO,SAAS3C,KAAQ2C,EAAO,MAAMH,KAAYG,EAAO,MAAM;AAAA,YAC9E,SAAS,MAAO3C,IAAOkB,EAAU,EAAK,IAAIK,EAAA;AAAA,YAC1C,WAAWY;AAAA,YACX,QAAQE;AAAA,YAEP,UAAA;AAAA,cAAAG,IACC,gBAAAI,EAAC,UAAK,WAAWD,EAAO,OACrB,UAAArD,EAAe,IAAI,CAACoC,MAAM;AACzB,sBAAMD,IAAM/E,EAAQ,KAAK,CAAC,MAAM,EAAE,UAAUgF,CAAC;AAC7C,uBACE,gBAAAkB;AAAA,kBAACE;AAAA,kBAAA;AAAA,oBAEC,MAAAnG;AAAA,oBACA,OAAAU;AAAA,oBACA,UAAAL;AAAA,oBACA,UAAU,MAAM2E,GAAYD,CAAC;AAAA,oBAC7B,aAAa,WAAUD,KAAA,gBAAAA,EAAK,UAASC,CAAC;AAAA,oBAEtC,gBAAgB;AAAA,oBAEf,kCAAK,UAASA;AAAA,kBAAA;AAAA,kBATVA;AAAA,gBAAA;AAAA,cAYX,CAAC,GACH,IAEA,gBAAAkB,EAAC,UAAK,WAAWF,EAAKC,EAAO,OAAOA,EAAO,WAAW,GACpD,UAAA,gBAAAC,EAAC,UAAK,WAAWD,EAAO,YAAa,UAAAvF,MAAesB,EAAE,oBAAoB,EAAA,CAAE,EAAA,CAC9E;AAAA,cAGDpB,MAAakF,KAAY,CAACxF,KACzB,gBAAA4F;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAWD,EAAO;AAAA,kBAClB,cAAYjE,EAAE,sBAAsB;AAAA,kBACpC,UAAU;AAAA,kBACV,aAAa,CAAC,MAAM,EAAE,eAAA;AAAA,kBACtB,SAAS,CAAC,MAAM;;AACd,sBAAE,gBAAA,GACFe,EAAO,CAAA,CAAE,IACT2B,IAAAzB,EAAW,YAAX,QAAAyB,EAAoB;AAAA,kBACtB;AAAA,kBAEA,UAAA,gBAAAwB,EAACG,GAAA,EAAK,MAAK,eAAc,MAAK,KAAA,CAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,cAIvC,gBAAAH;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAWJ,EAAO;AAAA,kBAClB,OAAO,EAAE,OAAOJ,IAAW,QAAQA,GAAA;AAAA,kBACnC,eAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,YACd;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF,gBAAAE;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,KAAK/B;AAAA,YACL,MAAAjB;AAAA,YACA,YAAAL;AAAA,YACA,SAASuB;AAAA,YACT,mBAAiB;AAAA,YACjB,WAAWyB,EAAO;AAAA,YAEjB,UAAA;AAAA,cAAApF,KACC,gBAAAkF,EAAC,OAAA,EAAI,WAAWE,EAAO,QACrB,UAAA;AAAA,gBAAA,gBAAAC,EAACG,GAAA,EAAK,MAAK,gBAAe,MAAK,MAAK,WAAWJ,EAAO,YAAY,eAAY,OAAA,CAAO;AAAA,gBACrF,gBAAAC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAK/C;AAAA,oBACL,WAAW8C,EAAO;AAAA,oBAClB,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,iBAAc;AAAA,oBACd,iBAAerE;AAAA,oBACf,yBAAuBgE;AAAA,oBACvB,qBAAkB;AAAA,oBAClB,cAAY1D;AAAA,oBACZ,aAAaA;AAAA,oBACb,OAAOsB;AAAA,oBACP,YAAY;AAAA,oBACZ,UAAU,CAAC,MAAM;AACf,sBAAAC,GAAe,EAAE,OAAO,KAAK,GAC7B1C,KAAA,QAAAA,EAAiB,EAAE,OAAO;AAAA,oBAC5B;AAAA,oBACA,WAAW0E;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACb,GACF;AAAA,cAGF,gBAAAS;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,IAAI3E;AAAA,kBACJ,mBAAiB7B,KAAS,OAAO4B,IAAU;AAAA,kBAC3C,wBAAqB;AAAA,kBACrB,MAAA1B;AAAA,kBACA,WAAWgG,EAAO;AAAA,kBAElB,cAAc,MAAMtC,EAAoB,EAAE;AAAA,kBAEzC,UAAA3C,KACC,gBAAA+E,EAAC,OAAA,EAAI,WAAWE,EAAO,SACrB,UAAA;AAAA,oBAAA,gBAAAC,EAACM,IAAA,EAAO,MAAK,KAAA,CAAK;AAAA,oBAClB,gBAAAN,EAACC,GAAA,EAAW,IAAG,QAAO,SAAQ,aAAY,OAAM,SAC7C,UAAAlF,MAAee,EAAE,gBAAgB,EAAA,CACpC;AAAA,kBAAA,EAAA,CACF,IACE+B,EAAgB,WAAW,sBAC5B,OAAA,EAAI,WAAWkC,EAAO,WACrB,4BAACE,GAAA,EAAW,IAAG,QAAO,SAAQ,aAAY,OAAM,SAC7C,UAAAjF,KAAiB,OACdc,EAAE,kBAAkB,IACpB,OAAOd,KAAkB,aACvBA,EAAcsC,CAAW,IACzBtC,EAAA,CACR,GACF,IAEA6C,EAAgB,IAAI,CAACgB,GAAKhD,MAAU;AAClC,0BAAM0E,IAAa7D,EAAe,SAASmC,EAAI,KAAK;AACpD,2BACE,gBAAAmB;AAAA,sBAACQ;AAAA,sBAAA;AAAA,wBAEC,IAAI5E,EAASC,CAAK;AAAA,wBAClB,MAAK;AAAA,wBACL,UAAU;AAAA,wBACV,iBAAe0E;AAAA,wBACf,gBAAc;AAAA,wBACd,WAAS;AAAA,wBACT,UAAUA;AAAA,wBACV,UAAU1B,EAAI;AAAA,wBACd,MAAMA,EAAI;AAAA,wBACV,WAAWiB,EAAKjE,MAAU2B,KAAoBuC,EAAO,MAAM;AAAA,wBAC3D,UAAUQ,IAAa,gBAAAP,EAACG,GAAA,EAAK,MAAK,cAAa,MAAK,MAAK,IAAK;AAAA,wBAC9D,cAAc,MAAM,CAACtB,EAAI,YAAYpB,EAAoB5B,CAAK;AAAA,wBAE9D,aAAa,CAAC4E,MAAMA,EAAE,eAAA;AAAA,wBACtB,SAAS,MAAM7B,EAAaC,CAAG;AAAA,wBAE9B,UAAAA,EAAI;AAAA,sBAAA;AAAA,sBAjBAA,EAAI;AAAA,oBAAA;AAAA,kBAoBf,CAAC;AAAA,gBAAA;AAAA,cAAA;AAAA,YAEL;AAAA,UAAA;AAAA,QAAA;AAAA,QAGDjC,KAAsB,QACrB,gBAAAoD;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAItE;AAAA,YACJ,SAAQ;AAAA,YACR,OAAOgB,IAAgB,UAAU;AAAA,YACjC,WAAWoD,EAAO;AAAA,YAEjB,UAAAnD;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),o=require("react"),R=require("clsx"),we=require("./formContext-bTWrqdEV.cjs"),De=require("./FloatingPanel-U6sGYiSK.cjs"),Ne=require("./Chip-DSrdXLBU.cjs"),E=require("./Icon-CXTl_QAP.cjs"),qe=require("./List-CNz2M3-q.cjs"),Le=require("./ListItem-RH-D-Wey.cjs"),Te=require("./Loader-D1MtlQOH.cjs"),M=require("./Typography-BFatE1_A.cjs"),Ce=require("./ConfigProvider-ByOFXVyP.cjs"),Re="_field_16ykc_1",Ee="_fullWidth_16ykc_7",Me="_label_16ykc_12",Se="_required_16ykc_21",Be="_control_16ykc_27",Pe="_filled_16ykc_47",Ke="_open_16ykc_51",Ve="_error_16ykc_56",We="_disabled_16ykc_64",$e="_chips_16ykc_31",Ae="_value_16ykc_84",Fe="_valueLabel_16ykc_91",Oe="_placeholder_16ykc_96",He="_clear_16ykc_100",Qe="_chevron_16ykc_117",Ue="_sm_16ykc_127",ze="_md_16ykc_131",Ge="_lg_16ykc_135",Je="_helper_16ykc_140",Xe="_popover_16ykc_145",Ye="_search_16ykc_152",Ze="_searchIcon_16ykc_161",es="_searchInput_16ykc_165",ss="_listbox_16ykc_180",ts="_active_16ykc_188",rs="_noOptions_16ykc_192",ls="_loading_16ykc_198",r={field:Re,fullWidth:Ee,label:Me,required:Se,control:Be,filled:Pe,open:Ke,error:Ve,disabled:We,chips:$e,value:Ae,valueLabel:Fe,placeholder:Oe,clear:He,chevron:Qe,sm:Ue,md:ze,lg:Ge,helper:Je,popover:Xe,search:Ye,searchIcon:Ze,searchInput:es,listbox:ss,active:ts,noOptions:rs,loading:ls},cs=o.forwardRef(function({label:w,options:D,size:b="md",error:ce,helperText:oe,required:Q=!1,fullWidth:ae=!0,disabled:p=!1,value:S,defaultValue:ne,onChange:B,placeholder:ie,color:ue="primary",clearable:de=!0,searchable:d=!1,searchPlaceholder:fe,onSearchChange:k,loading:pe=!1,loadingText:he,noOptionsText:N,name:_,id:me,className:_e,style:ye},x){const ve=o.useId(),g=me??ve,P=`${g}-label`,K=`${g}-listbox`,U=`${g}-helper`,V=e=>`${g}-opt-${e}`,I=Ce.useT(),z=fe??I("common.search"),q=we.useFormContext(),L=!!(q&&_),n=L?q.field(_):void 0,be=S!==void 0?S:L?q.values[_]??[]:void 0,G=S!==void 0||L,[ke,xe]=o.useState(ne??[]),i=G?be:ke,W=ce??(n==null?void 0:n.error)??!1,$=oe??(n==null?void 0:n.helperText),A=e=>{G||xe(e),L&&q.setValue(_,e),B==null||B(e)},y=o.useRef(null),J=o.useRef(null),F=o.useRef({buffer:"",timer:0}),T=o.useRef(void 0);T.current=n?()=>n.onBlur({}):void 0;const[l,X]=o.useState(!1),[m,Y]=o.useState(""),[h,f]=o.useState(-1),ge=o.useCallback(e=>{y.current=e,typeof x=="function"?x(e):x&&(x.current=e)},[x]),a=o.useMemo(()=>{if(!d||k||!m.trim())return D;const e=m.trim().toLowerCase();return D.filter(s=>s.label.toLowerCase().includes(e))},[d,k,m,D]),v=o.useCallback((e,s)=>{let c=e;for(;c>=0&&c<a.length;){if(!a[c].disabled)return c;c+=s}return-1},[a]),Z=o.useRef(null),C=o.useCallback(e=>{var s,c;X(!1),Y(""),window.clearTimeout(F.current.timer),F.current.buffer="",(s=T.current)==null||s.call(T),e&&((c=y.current)==null||c.focus())},[]);o.useEffect(()=>{l&&(f(v(0,1)),d&&requestAnimationFrame(()=>{var e;return(e=J.current)==null?void 0:e.focus()}))},[l]),o.useEffect(()=>{var e,s;!l||h<0||(s=(e=document.getElementById(V(h)))==null?void 0:e.scrollIntoView)==null||s.call(e,{block:"nearest"})},[l,h]),o.useEffect(()=>{l&&d&&f(v(0,1))},[m]),o.useEffect(()=>{l&&f(e=>e<a.length?e:v(0,1))},[a.length]);const j=()=>{p||X(!0)},O=e=>{!e||e.disabled||A(i.includes(e.value)?i.filter(s=>s!==e.value):[...i,e.value])},ee=e=>A(i.filter(s=>s!==e)),se=e=>{f(s=>{const c=s<0?e>0?0:a.length-1:s+e,u=v(c,e);return u===-1?s:u})},Ie=e=>{const s=F.current;window.clearTimeout(s.timer),s.buffer+=e.toLowerCase(),s.timer=window.setTimeout(()=>s.buffer="",500);const c=a.findIndex(u=>!u.disabled&&u.label.toLowerCase().startsWith(s.buffer));c>=0&&f(c)},te=e=>{if(!p)switch(e.key){case"ArrowDown":e.preventDefault(),l?se(1):j();break;case"ArrowUp":e.preventDefault(),l?se(-1):j();break;case"Enter":e.preventDefault(),l?O(a[h]):j();break;case" ":l?d||(e.preventDefault(),O(a[h])):(e.preventDefault(),j());break;case"Escape":l&&(e.preventDefault(),e.stopPropagation(),C(!0));break;case"Tab":l&&C(!0);break;case"Backspace":l&&(!d||m==="")&&i.length>0&&(e.preventDefault(),ee(i[i.length-1]));break;case"Home":l&&(e.preventDefault(),f(v(0,1)));break;case"End":l&&(e.preventDefault(),f(v(a.length-1,-1)));break;default:!d&&l&&e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&Ie(e.key)}},je=e=>{var c,u;const s=e.relatedTarget;s&&((c=Z.current)!=null&&c.contains(s)||(u=y.current)!=null&&u.contains(s))||n==null||n.onBlur(e)},re=l&&h>=0?V(h):void 0,le=b==="sm"?16:b==="md"?14:12,H=i.length>0;return t.jsxs("div",{className:R.clsx(r.field,r[b],ae&&r.fullWidth,W&&r.error,p&&r.disabled,_e),style:ye,children:[w!=null&&t.jsxs("span",{id:P,className:r.label,onClick:()=>{var e;return!p&&((e=y.current)==null?void 0:e.focus())},children:[t.jsx(M.Typography,{as:"span",variant:"bodySmall",color:"muted",children:w}),Q&&t.jsx("span",{className:r.required,"aria-hidden":"true",children:"*"})]}),t.jsxs("div",{ref:ge,id:g,..._?{name:_}:{},role:"combobox",tabIndex:p?-1:0,"aria-haspopup":"listbox","aria-expanded":l,"aria-controls":l?K:void 0,"aria-activedescendant":d?void 0:re,"aria-labelledby":w!=null?P:void 0,"aria-disabled":p||void 0,"aria-required":Q||void 0,"aria-invalid":W||void 0,"aria-describedby":$!=null?U:void 0,className:R.clsx(r.control,l&&r.open,H&&r.filled),onClick:()=>l?C(!1):j(),onKeyDown:te,onBlur:je,children:[H?t.jsx("span",{className:r.chips,children:i.map(e=>{const s=D.find(c=>c.value===e);return t.jsx(Ne.Chip,{size:b,color:ue,disabled:p,onDelete:()=>ee(e),deleteLabel:`Remove ${(s==null?void 0:s.label)??e}`,deleteTabIndex:-1,children:(s==null?void 0:s.label)??e},e)})}):t.jsx("span",{className:R.clsx(r.value,r.placeholder),children:t.jsx("span",{className:r.valueLabel,children:ie??I("select.placeholder")})}),de&&H&&!p&&t.jsx("button",{type:"button",className:r.clear,"aria-label":I("multiSelect.clearAll"),tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:e=>{var s;e.stopPropagation(),A([]),(s=y.current)==null||s.focus()},children:t.jsx(E.Icon,{name:"CloseCircle",size:"sm"})}),t.jsx(E.Icon,{name:"ArrowDown4",className:r.chevron,style:{width:le,height:le},"aria-hidden":"true"})]}),t.jsxs(De.FloatingPanel,{ref:Z,open:l,triggerRef:y,onClose:C,matchTriggerWidth:!0,className:r.popover,children:[d&&t.jsxs("div",{className:r.search,children:[t.jsx(E.Icon,{name:"SearchNormal",size:"sm",className:r.searchIcon,"aria-hidden":"true"}),t.jsx("input",{ref:J,className:r.searchInput,type:"text",role:"combobox","aria-expanded":"true","aria-controls":K,"aria-activedescendant":re,"aria-autocomplete":"list","aria-label":z,placeholder:z,value:m,spellCheck:!1,onChange:e=>{Y(e.target.value),k==null||k(e.target.value)},onKeyDown:te})]}),t.jsx(qe.List,{role:"listbox",id:K,"aria-labelledby":w!=null?P:void 0,"aria-multiselectable":"true",size:b,className:r.listbox,onMouseLeave:()=>f(-1),children:pe?t.jsxs("div",{className:r.loading,children:[t.jsx(Te.Loader,{size:"sm"}),t.jsx(M.Typography,{as:"span",variant:"bodySmall",color:"muted",children:he??I("common.loading")})]}):a.length===0?t.jsx("div",{className:r.noOptions,children:t.jsx(M.Typography,{as:"span",variant:"bodySmall",color:"muted",children:N==null?I("select.noOptions"):typeof N=="function"?N(m):N})}):a.map((e,s)=>{const c=i.includes(e.value);return t.jsx(Le.ListItem,{id:V(s),role:"option",tabIndex:-1,"aria-selected":c,"aria-current":void 0,clickable:!0,selected:c,disabled:e.disabled,icon:e.icon,className:R.clsx(s===h&&r.active),trailing:c?t.jsx(E.Icon,{name:"TickCircle",size:"sm"}):void 0,onMouseEnter:()=>!e.disabled&&f(s),onMouseDown:u=>u.preventDefault(),onClick:()=>O(e),children:e.label},e.value)})})]}),$!=null&&t.jsx(M.Typography,{as:"span",id:U,variant:"bodySmall",color:W?"error":"muted",className:r.helper,children:$})]})});exports.MultiSelect=cs;
|
|
2
|
+
//# sourceMappingURL=MultiSelect-CSJKSWpA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect-CSJKSWpA.cjs","sources":["../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport { FloatingPanel } from '../FloatingPanel/FloatingPanel'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Chip } from '../Chip'\nimport { Icon } from '../Icon'\nimport { List, ListItem } from '../List'\nimport { Loader } from '../Loader'\nimport { Typography } from '../Typography'\nimport type { SelectOption, SelectSize } from '../Select'\nimport styles from './MultiSelect.module.css'\n\nexport interface MultiSelectProps {\n /** Label rendered above the field. */\n label?: ReactNode\n /** The selectable options. */\n options: SelectOption[]\n /** Preset size — control height, font, chips and option density. */\n size?: SelectSize\n /** Marks the field invalid: red border/ring + the `helperText` in the error color. */\n error?: boolean\n /** Helper / validation text under the field. Adopts the error color while `error`. */\n helperText?: ReactNode\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Stretches the field to fill its container width. Defaults to `true`. */\n fullWidth?: boolean\n /** Disables the field. */\n disabled?: boolean\n /** Controlled value — the chosen options' `value`s. */\n value?: string[]\n /** Initial value for uncontrolled use. */\n defaultValue?: string[]\n /** Fires with the next array of selected values. */\n onChange?: (value: string[]) => void\n /** Text shown in the trigger when nothing is selected. Defaults to `\"Select…\"`. */\n placeholder?: string\n /** Theme palette token tinting the selected chips. Defaults to `primary`. */\n color?: ThemeColor\n /** Shows a clear (×) button in the trigger when anything is selected. Defaults to `true`. */\n clearable?: boolean\n /** Adds a search box inside the popover that filters options by label. */\n searchable?: boolean\n /** Placeholder for the search box. Defaults to `\"Search…\"`. */\n searchPlaceholder?: string\n /**\n * Fires with the search query as the user types. **Providing this switches off the built-in\n * local filtering** — you own `options` (e.g. fetch them from a server for the current query).\n */\n onSearchChange?: (query: string) => void\n /** Shows a loading indicator in the popover (e.g. while fetching server-side search results). */\n loading?: boolean\n /** Text shown next to the loader while `loading`. Defaults to `\"Loading…\"`. */\n loadingText?: ReactNode\n /**\n * Shown in the popover when no option matches. Defaults to `\"No options\"`. Pass a function\n * `(query) => node` to vary the message by the current search text — e.g. a \"Type to search\" hint\n * while it's empty vs a \"No results\" message after typing.\n */\n noOptionsText?: ReactNode | ((query: string) => ReactNode)\n /** Form field name — auto-binds to a surrounding `<Form>` (value is a `string[]`). */\n name?: string\n /** Id for the trigger (label association). */\n id?: string\n className?: string\n style?: CSSProperties\n}\n\n/**\n * A labeled multi-select — the `string[]` sibling of `Select`. The trigger shows the chosen options\n * as deletable `Chip`s (wrapping, growing like `TagsField`) or a placeholder; clicking it opens the\n * same `Dropdown`-style popover (portaled, flips, scroll-locked, trigger-width, animated — shared via\n * `useFloatingPanel`). Options render as `ListItem`s in a `role=\"listbox\"` `aria-multiselectable`\n * list; selecting **toggles** an option and keeps the popover open, the chosen ones showing a tick.\n * Full keyboard support (Arrow/Home/End, Enter/Space to toggle, Escape to close, type-ahead) and\n * ARIA. Optionally `searchable` + `clearable`; pass `onSearchChange` to drive the search\n * **server-side** (you own `options` — local filtering is skipped) with a `loading` indicator.\n * Controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`), and binds to a surrounding `<Form>` by `name` (value = `string[]`; validate with\n * e.g. `z.array(z.string()).min(1, 'Pick at least one')`). Token-only styling.\n */\nexport const MultiSelect = forwardRef<HTMLDivElement, MultiSelectProps>(function MultiSelect(\n {\n label,\n options,\n size = 'md',\n error,\n helperText,\n required = false,\n fullWidth = true,\n disabled = false,\n value,\n defaultValue,\n onChange,\n placeholder,\n color = 'primary',\n clearable = true,\n searchable = false,\n searchPlaceholder,\n onSearchChange,\n loading = false,\n loadingText,\n noOptionsText,\n name,\n id: idProp,\n className,\n style,\n },\n ref,\n) {\n const reactId = useId()\n const id = idProp ?? reactId\n const labelId = `${id}-label`\n const listboxId = `${id}-listbox`\n const helperId = `${id}-helper`\n const optionId = (index: number) => `${id}-opt-${index}`\n\n // ── value (controlled / form-bound / uncontrolled) — always a string[] ─────────────────────────\n // Read the RAW form value (field().value String-coerces, which would flatten the array).\n const t = useT()\n const searchPh = searchPlaceholder ?? t('common.search')\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = isFormBound ? form!.field(name!) : undefined\n const externalValue =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string[] | undefined) ?? [])\n : undefined\n const isControlled = value !== undefined || isFormBound\n const [internal, setInternal] = useState<string[]>(defaultValue ?? [])\n const selectedValues = isControlled ? externalValue! : internal\n\n const resolvedError = error ?? bound?.error ?? false\n const resolvedHelperText = helperText ?? bound?.helperText\n\n const commit = (next: string[]) => {\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n // ── popover open state ─────────────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement | null>(null)\n const searchInputRef = useRef<HTMLInputElement | null>(null)\n const typeahead = useRef({ buffer: '', timer: 0 })\n const fieldBlur = useRef<(() => void) | undefined>(undefined)\n fieldBlur.current = bound ? () => bound.onBlur({} as FocusEvent<HTMLInputElement>) : undefined\n const [open, setOpen] = useState(false)\n const [searchQuery, setSearchQuery] = useState('')\n const [highlightedIndex, setHighlightedIndex] = useState(-1)\n\n const setTriggerRef = useCallback(\n (node: HTMLDivElement | null) => {\n triggerRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as { current: HTMLDivElement | null }).current = node\n },\n [ref],\n )\n\n // when `onSearchChange` is set the consumer owns `options` (server-side search) — skip local filter\n const filteredOptions = useMemo(() => {\n if (!searchable || onSearchChange || !searchQuery.trim()) return options\n const q = searchQuery.trim().toLowerCase()\n return options.filter((o) => o.label.toLowerCase().includes(q))\n }, [searchable, onSearchChange, searchQuery, options])\n\n const findEnabled = useCallback(\n (start: number, delta: number) => {\n let i = start\n while (i >= 0 && i < filteredOptions.length) {\n if (!filteredOptions[i].disabled) return i\n i += delta\n }\n return -1\n },\n [filteredOptions],\n )\n\n // the floating panel forwards its node here, for the focus-leaves-the-widget check on blur\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const closeMenu = useCallback((refocus: boolean) => {\n setOpen(false)\n setSearchQuery('')\n window.clearTimeout(typeahead.current.timer)\n typeahead.current.buffer = ''\n fieldBlur.current?.()\n if (refocus) triggerRef.current?.focus()\n }, [])\n\n // on open: highlight the first enabled option, focus the search box if searchable\n useEffect(() => {\n if (!open) return\n setHighlightedIndex(findEnabled(0, 1))\n if (searchable) requestAnimationFrame(() => searchInputRef.current?.focus())\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n useEffect(() => {\n if (!open || highlightedIndex < 0) return\n document.getElementById(optionId(highlightedIndex))?.scrollIntoView?.({ block: 'nearest' })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, highlightedIndex])\n\n // search filter → re-anchor to the first match\n useEffect(() => {\n if (open && searchable) setHighlightedIndex(findEnabled(0, 1))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchQuery])\n\n // keep the highlight in range if the option count changes while open\n useEffect(() => {\n if (open) setHighlightedIndex((i) => (i < filteredOptions.length ? i : findEnabled(0, 1)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredOptions.length])\n\n const openMenu = () => {\n if (!disabled) setOpen(true)\n }\n const toggleOption = (opt: SelectOption | undefined) => {\n if (!opt || opt.disabled) return\n commit(\n selectedValues.includes(opt.value)\n ? selectedValues.filter((v) => v !== opt.value)\n : [...selectedValues, opt.value],\n )\n // multi-select stays open\n }\n const removeValue = (v: string) => commit(selectedValues.filter((x) => x !== v))\n const moveHighlight = (delta: number) => {\n setHighlightedIndex((cur) => {\n const start = cur < 0 ? (delta > 0 ? 0 : filteredOptions.length - 1) : cur + delta\n const found = findEnabled(start, delta)\n return found === -1 ? cur : found\n })\n }\n\n const handleTypeahead = (char: string) => {\n const t = typeahead.current\n window.clearTimeout(t.timer)\n t.buffer += char.toLowerCase()\n t.timer = window.setTimeout(() => (t.buffer = ''), 500)\n const match = filteredOptions.findIndex(\n (o) => !o.disabled && o.label.toLowerCase().startsWith(t.buffer),\n )\n if (match >= 0) setHighlightedIndex(match)\n }\n\n const handleKeyDown = (event: ReactKeyboardEvent) => {\n if (disabled) return\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n open ? moveHighlight(1) : openMenu()\n break\n case 'ArrowUp':\n event.preventDefault()\n open ? moveHighlight(-1) : openMenu()\n break\n case 'Enter':\n event.preventDefault()\n if (!open) openMenu()\n else toggleOption(filteredOptions[highlightedIndex])\n break\n case ' ':\n // Space opens a closed menu (any mode); toggles only when open & not searchable\n if (!open) {\n event.preventDefault()\n openMenu()\n } else if (!searchable) {\n event.preventDefault()\n toggleOption(filteredOptions[highlightedIndex])\n }\n break\n case 'Escape':\n if (open) {\n event.preventDefault()\n event.stopPropagation() // don't let FloatingPanel's own Escape also fire closeMenu/onBlur\n closeMenu(true)\n }\n break\n case 'Tab':\n // refocus the trigger so Tab continues from the field's visual location, not the portaled\n // search input's DOM position (end of <body>); don't preventDefault — let Tab move on\n if (open) closeMenu(true)\n break\n case 'Backspace':\n // remove the last chip when the (search) input is empty or there's no search box\n if (open && (!searchable || searchQuery === '') && selectedValues.length > 0) {\n event.preventDefault()\n removeValue(selectedValues[selectedValues.length - 1])\n }\n break\n case 'Home':\n if (open) {\n event.preventDefault()\n setHighlightedIndex(findEnabled(0, 1))\n }\n break\n case 'End':\n if (open) {\n event.preventDefault()\n setHighlightedIndex(findEnabled(filteredOptions.length - 1, -1))\n }\n break\n default:\n if (\n !searchable &&\n open &&\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey\n ) {\n handleTypeahead(event.key)\n }\n }\n }\n\n const handleTriggerBlur = (event: FocusEvent<HTMLDivElement>) => {\n const next = event.relatedTarget as Node | null\n if (next && (popoverRef.current?.contains(next) || triggerRef.current?.contains(next))) return\n bound?.onBlur(event as unknown as FocusEvent<HTMLInputElement>)\n }\n\n const activeId = open && highlightedIndex >= 0 ? optionId(highlightedIndex) : undefined\n // chevron size per field size: sm 16 · md 14 · lg 12\n const chevronPx = size === 'sm' ? 16 : size === 'md' ? 14 : 12\n const hasValue = selectedValues.length > 0\n\n return (\n <div\n className={clsx(\n styles.field,\n styles[size],\n fullWidth && styles.fullWidth,\n resolvedError && styles.error,\n disabled && styles.disabled,\n className,\n )}\n style={style}\n >\n {label != null && (\n <span\n id={labelId}\n className={styles.label}\n onClick={() => !disabled && triggerRef.current?.focus()}\n >\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n )}\n\n <div\n ref={setTriggerRef}\n id={id}\n {...(name ? { name } : {})}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={searchable ? undefined : activeId}\n aria-labelledby={label != null ? labelId : undefined}\n aria-disabled={disabled || undefined}\n aria-required={required || undefined}\n aria-invalid={resolvedError || undefined}\n aria-describedby={resolvedHelperText != null ? helperId : undefined}\n className={clsx(styles.control, open && styles.open, hasValue && styles.filled)}\n onClick={() => (open ? closeMenu(false) : openMenu())}\n onKeyDown={handleKeyDown}\n onBlur={handleTriggerBlur}\n >\n {hasValue ? (\n <span className={styles.chips}>\n {selectedValues.map((v) => {\n const opt = options.find((o) => o.value === v)\n return (\n <Chip\n key={v}\n size={size}\n color={color}\n disabled={disabled}\n onDelete={() => removeValue(v)}\n deleteLabel={`Remove ${opt?.label ?? v}`}\n // the combobox owns keyboard focus — keep chip deletes out of the tab order\n deleteTabIndex={-1}\n >\n {opt?.label ?? v}\n </Chip>\n )\n })}\n </span>\n ) : (\n <span className={clsx(styles.value, styles.placeholder)}>\n <span className={styles.valueLabel}>{placeholder ?? t('select.placeholder')}</span>\n </span>\n )}\n\n {clearable && hasValue && !disabled && (\n <button\n type=\"button\"\n className={styles.clear}\n aria-label={t('multiSelect.clearAll')}\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation()\n commit([])\n triggerRef.current?.focus()\n }}\n >\n <Icon name=\"CloseCircle\" size=\"sm\" />\n </button>\n )}\n\n <Icon\n name=\"ArrowDown4\"\n className={styles.chevron}\n style={{ width: chevronPx, height: chevronPx }}\n aria-hidden=\"true\"\n />\n </div>\n\n <FloatingPanel\n ref={popoverRef}\n open={open}\n triggerRef={triggerRef}\n onClose={closeMenu}\n matchTriggerWidth\n className={styles.popover}\n >\n {searchable && (\n <div className={styles.search}>\n <Icon name=\"SearchNormal\" size=\"sm\" className={styles.searchIcon} aria-hidden=\"true\" />\n <input\n ref={searchInputRef}\n className={styles.searchInput}\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listboxId}\n aria-activedescendant={activeId}\n aria-autocomplete=\"list\"\n aria-label={searchPh}\n placeholder={searchPh}\n value={searchQuery}\n spellCheck={false}\n onChange={(e) => {\n setSearchQuery(e.target.value)\n onSearchChange?.(e.target.value)\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n )}\n\n <List\n role=\"listbox\"\n id={listboxId}\n aria-labelledby={label != null ? labelId : undefined}\n aria-multiselectable=\"true\"\n size={size}\n className={styles.listbox}\n // clear the mouse highlight when the pointer leaves the list (no lingering hover)\n onMouseLeave={() => setHighlightedIndex(-1)}\n >\n {loading ? (\n <div className={styles.loading}>\n <Loader size=\"sm\" />\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {loadingText ?? t('common.loading')}\n </Typography>\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={styles.noOptions}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {noOptionsText == null\n ? t('select.noOptions')\n : typeof noOptionsText === 'function'\n ? noOptionsText(searchQuery)\n : noOptionsText}\n </Typography>\n </div>\n ) : (\n filteredOptions.map((opt, index) => {\n const isSelected = selectedValues.includes(opt.value)\n return (\n <ListItem\n key={opt.value}\n id={optionId(index)}\n role=\"option\"\n tabIndex={-1}\n aria-selected={isSelected}\n aria-current={undefined}\n clickable\n selected={isSelected}\n disabled={opt.disabled}\n icon={opt.icon}\n className={clsx(index === highlightedIndex && styles.active)}\n trailing={isSelected ? <Icon name=\"TickCircle\" size=\"sm\" /> : undefined}\n onMouseEnter={() => !opt.disabled && setHighlightedIndex(index)}\n // keep focus on the search input (menu stays open on toggle) so typing keeps working\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => toggleOption(opt)}\n >\n {opt.label}\n </ListItem>\n )\n })\n )}\n </List>\n </FloatingPanel>\n\n {resolvedHelperText != null && (\n <Typography\n as=\"span\"\n id={helperId}\n variant=\"bodySmall\"\n color={resolvedError ? 'error' : 'muted'}\n className={styles.helper}\n >\n {resolvedHelperText}\n </Typography>\n )}\n </div>\n )\n})\n"],"names":["MultiSelect","forwardRef","label","options","size","error","helperText","required","fullWidth","disabled","value","defaultValue","onChange","placeholder","color","clearable","searchable","searchPlaceholder","onSearchChange","loading","loadingText","noOptionsText","name","idProp","className","style","ref","reactId","useId","id","labelId","listboxId","helperId","optionId","index","t","useT","searchPh","form","useFormContext","isFormBound","bound","externalValue","isControlled","internal","setInternal","useState","selectedValues","resolvedError","resolvedHelperText","commit","next","triggerRef","useRef","searchInputRef","typeahead","fieldBlur","open","setOpen","searchQuery","setSearchQuery","highlightedIndex","setHighlightedIndex","setTriggerRef","useCallback","node","filteredOptions","useMemo","q","o","findEnabled","start","delta","i","popoverRef","closeMenu","refocus","_a","_b","useEffect","openMenu","toggleOption","opt","v","removeValue","x","moveHighlight","cur","found","handleTypeahead","char","match","handleKeyDown","event","handleTriggerBlur","activeId","chevronPx","hasValue","jsxs","clsx","styles","jsx","Typography","Chip","Icon","FloatingPanel","List","Loader","isSelected","ListItem","e"],"mappings":"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"}
|