boreal-ui 0.0.76 → 0.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/core/boreal-ui.css +13739 -30851
- package/dist/next/{Accordion-Bg8V6T38.js → Accordion-ez41BXtb.js} +73 -94
- package/dist/next/{Accordion-Bg8V6T38.js.map → Accordion-ez41BXtb.js.map} +1 -1
- package/dist/next/{Accordion-BEa1jxTt.cjs → Accordion-yvdIcWj9.cjs} +74 -95
- package/dist/next/{Accordion-BEa1jxTt.cjs.map → Accordion-yvdIcWj9.cjs.map} +1 -1
- package/dist/next/Accordion.cjs.js +1 -1
- package/dist/next/Accordion.css +593 -0
- package/dist/next/Accordion.js +1 -1
- package/dist/next/{Avatar-DL_juTQA.cjs → Avatar-C-Z-ZPt8.cjs} +82 -82
- package/dist/next/{Avatar-DL_juTQA.cjs.map → Avatar-C-Z-ZPt8.cjs.map} +1 -1
- package/dist/next/{Avatar-nnjhILk-.js → Avatar-DymaVXDv.js} +81 -81
- package/dist/next/{Avatar-nnjhILk-.js.map → Avatar-DymaVXDv.js.map} +1 -1
- package/dist/next/Avatar.cjs.js +1 -1
- package/dist/next/Avatar.css +444 -0
- package/dist/next/Avatar.js +1 -1
- package/dist/next/{Badge-DzcjI-JI.cjs → Badge-56GHYTQN.cjs} +2 -2
- package/dist/next/{Badge-DzcjI-JI.cjs.map → Badge-56GHYTQN.cjs.map} +1 -1
- package/dist/next/{Badge-uyqxj7ag.js → Badge-BqVwp5Qj.js} +2 -2
- package/dist/next/{Badge-uyqxj7ag.js.map → Badge-BqVwp5Qj.js.map} +1 -1
- package/dist/next/Badge.cjs.js +1 -1
- package/dist/next/Badge.css +640 -0
- package/dist/next/Badge.js +1 -1
- package/dist/next/{Breadcrumbs-CuvOmgFe.cjs → Breadcrumbs-33eZmvpJ.cjs} +3 -3
- package/dist/next/{Breadcrumbs-CuvOmgFe.cjs.map → Breadcrumbs-33eZmvpJ.cjs.map} +1 -1
- package/dist/next/{Breadcrumbs-D0AmJB4U.js → Breadcrumbs-eetAtAHU.js} +3 -3
- package/dist/next/{Breadcrumbs-D0AmJB4U.js.map → Breadcrumbs-eetAtAHU.js.map} +1 -1
- package/dist/next/Breadcrumbs.cjs.js +1 -1
- package/dist/next/Breadcrumbs.css +579 -0
- package/dist/next/Breadcrumbs.js +1 -1
- package/dist/next/{Button-BZmph-Qr.cjs → Button-CmH6HYjc.cjs} +42 -52
- package/dist/next/{Button-BZmph-Qr.cjs.map → Button-CmH6HYjc.cjs.map} +1 -1
- package/dist/next/{Button-DWpImTmr.js → Button-oSOXL3At.js} +41 -51
- package/dist/next/{Button-DWpImTmr.js.map → Button-oSOXL3At.js.map} +1 -1
- package/dist/next/Button.cjs.js +1 -1
- package/dist/next/Button.css +721 -0
- package/dist/next/Button.js +1 -1
- package/dist/next/{Card-DnZOsQLP.js → Card-CO--D_GK.js} +65 -75
- package/dist/next/{Card-DnZOsQLP.js.map → Card-CO--D_GK.js.map} +1 -1
- package/dist/next/{Card-oPTXIvsb.cjs → Card-o8DszZPj.cjs} +65 -75
- package/dist/next/{Card-oPTXIvsb.cjs.map → Card-o8DszZPj.cjs.map} +1 -1
- package/dist/next/Card.cjs.js +1 -1
- package/dist/next/Card.css +993 -0
- package/dist/next/Card.js +1 -1
- package/dist/next/CheckBox.cjs.js +1 -1
- package/dist/next/CheckBox.js +1 -1
- package/dist/next/{Checkbox-CRg5oEdB.js → Checkbox-KIXViPTB.js} +45 -55
- package/dist/next/{Checkbox-CRg5oEdB.js.map → Checkbox-KIXViPTB.js.map} +1 -1
- package/dist/next/{Checkbox-DXNxt-4b.cjs → Checkbox-UqOL3aqk.cjs} +45 -55
- package/dist/next/{Checkbox-DXNxt-4b.cjs.map → Checkbox-UqOL3aqk.cjs.map} +1 -1
- package/dist/next/Checkbox.css +756 -0
- package/dist/next/{Chip-DpMTNARP.cjs → Chip-BQv3NoJL.cjs} +47 -57
- package/dist/next/{Chip-DpMTNARP.cjs.map → Chip-BQv3NoJL.cjs.map} +1 -1
- package/dist/next/{Chip-Cg7khsSn.js → Chip-D-QH1huh.js} +47 -57
- package/dist/next/{Chip-Cg7khsSn.js.map → Chip-D-QH1huh.js.map} +1 -1
- package/dist/next/Chip.cjs.js +1 -1
- package/dist/next/Chip.css +598 -0
- package/dist/next/Chip.js +1 -1
- package/dist/next/{CircularProgress-CzFUYDX1.cjs → CircularProgress-BG83Q-uO.cjs} +33 -43
- package/dist/next/{CircularProgress-CzFUYDX1.cjs.map → CircularProgress-BG83Q-uO.cjs.map} +1 -1
- package/dist/next/{CircularProgress-Dn1VXFsq.js → CircularProgress-Bfanw-2S.js} +33 -43
- package/dist/next/{CircularProgress-Dn1VXFsq.js.map → CircularProgress-Bfanw-2S.js.map} +1 -1
- package/dist/next/CircularProgress.cjs.js +1 -1
- package/dist/next/CircularProgress.css +528 -0
- package/dist/next/CircularProgress.js +1 -1
- package/dist/next/{ColorPicker-CCzSZDjx.js → ColorPicker-BJfyM0Ay.js} +26 -47
- package/dist/next/{ColorPicker-CCzSZDjx.js.map → ColorPicker-BJfyM0Ay.js.map} +1 -1
- package/dist/next/{ColorPicker-ByPKPsMz.cjs → ColorPicker-DmubVH4p.cjs} +26 -47
- package/dist/next/{ColorPicker-ByPKPsMz.cjs.map → ColorPicker-DmubVH4p.cjs.map} +1 -1
- package/dist/next/ColorPicker.cjs.js +1 -1
- package/dist/next/ColorPicker.css +346 -0
- package/dist/next/ColorPicker.js +1 -1
- package/dist/next/{CommandPalette-D6R9_gmo.js → CommandPalette-CNaU5jTY.js} +38 -48
- package/dist/next/{CommandPalette-D6R9_gmo.js.map → CommandPalette-CNaU5jTY.js.map} +1 -1
- package/dist/next/{CommandPalette-BvjlLE14.cjs → CommandPalette-_Lpb0UOI.cjs} +38 -48
- package/dist/next/{CommandPalette-BvjlLE14.cjs.map → CommandPalette-_Lpb0UOI.cjs.map} +1 -1
- package/dist/next/CommandPalette.cjs.js +1 -1
- package/dist/next/CommandPalette.css +624 -0
- package/dist/next/CommandPalette.js +1 -1
- package/dist/next/{DataTable-Bt6D__oo.cjs → DataTable-BAwMYdQb.cjs} +29 -50
- package/dist/next/{DataTable-Bt6D__oo.cjs.map → DataTable-BAwMYdQb.cjs.map} +1 -1
- package/dist/next/{DataTable-CZj_U9rg.js → DataTable-F9mtABNi.js} +28 -49
- package/dist/next/{DataTable-CZj_U9rg.js.map → DataTable-F9mtABNi.js.map} +1 -1
- package/dist/next/DataTable.cjs.js +1 -1
- package/dist/next/DataTable.css +444 -0
- package/dist/next/DataTable.js +1 -1
- package/dist/next/{DateTimePicker-Cols3qxt.cjs → DateTimePicker-CU-b9irX.cjs} +34 -55
- package/dist/next/{DateTimePicker-Cols3qxt.cjs.map → DateTimePicker-CU-b9irX.cjs.map} +1 -1
- package/dist/next/{DateTimePicker-DB2exnHd.js → DateTimePicker-WVVLqcd9.js} +34 -55
- package/dist/next/{DateTimePicker-DB2exnHd.js.map → DateTimePicker-WVVLqcd9.js.map} +1 -1
- package/dist/next/DateTimePicker.cjs.js +1 -1
- package/dist/next/DateTimePicker.css +563 -0
- package/dist/next/DateTimePicker.js +1 -1
- package/dist/next/{Divider-Dr0xlon0.cjs → Divider-BGxUapmt.cjs} +16 -37
- package/dist/next/{Divider-Dr0xlon0.cjs.map → Divider-BGxUapmt.cjs.map} +1 -1
- package/dist/next/{Divider-DXGze_D2.js → Divider-BXSDTRTU.js} +16 -37
- package/dist/next/{Divider-DXGze_D2.js.map → Divider-BXSDTRTU.js.map} +1 -1
- package/dist/next/Divider.cjs.js +1 -1
- package/dist/next/Divider.css +248 -0
- package/dist/next/Divider.js +1 -1
- package/dist/next/{Dropdown-B7PgWHlY.js → Dropdown-B7vrHg0z.js} +3 -3
- package/dist/next/{Dropdown-B7PgWHlY.js.map → Dropdown-B7vrHg0z.js.map} +1 -1
- package/dist/next/{Dropdown-kQLhr7_M.cjs → Dropdown-CUYItZDk.cjs} +3 -3
- package/dist/next/{Dropdown-kQLhr7_M.cjs.map → Dropdown-CUYItZDk.cjs.map} +1 -1
- package/dist/next/Dropdown.cjs.js +1 -1
- package/dist/next/Dropdown.css +317 -0
- package/dist/next/Dropdown.js +1 -1
- package/dist/next/{EmptyState-DCCDQWOQ.js → EmptyState-MT9_qwrB.js} +44 -33
- package/dist/next/{EmptyState-DCCDQWOQ.js.map → EmptyState-MT9_qwrB.js.map} +1 -1
- package/dist/next/{EmptyState-BH1X81TH.cjs → EmptyState-sh7Vn6eC.cjs} +44 -33
- package/dist/next/{EmptyState-BH1X81TH.cjs.map → EmptyState-sh7Vn6eC.cjs.map} +1 -1
- package/dist/next/EmptyState.cjs.js +1 -1
- package/dist/next/EmptyState.css +663 -0
- package/dist/next/EmptyState.js +1 -1
- package/dist/next/{FileUpload-BQW5ol7P.js → FileUpload-Bvj5JEBv.js} +48 -58
- package/dist/next/{FileUpload-BQW5ol7P.js.map → FileUpload-Bvj5JEBv.js.map} +1 -1
- package/dist/next/{FileUpload-C9Ke2cTs.cjs → FileUpload-CD_i5Md2.cjs} +48 -58
- package/dist/next/{FileUpload-C9Ke2cTs.cjs.map → FileUpload-CD_i5Md2.cjs.map} +1 -1
- package/dist/next/FileUpload.cjs.js +1 -1
- package/dist/next/FileUpload.css +474 -0
- package/dist/next/FileUpload.js +1 -1
- package/dist/next/{Footer-Dl_wQwsb.js → Footer-Bdu_9H3p.js} +38 -48
- package/dist/next/{Footer-Dl_wQwsb.js.map → Footer-Bdu_9H3p.js.map} +1 -1
- package/dist/next/{Footer-i9rgxATK.cjs → Footer-DJjzgwpc.cjs} +38 -48
- package/dist/next/{Footer-i9rgxATK.cjs.map → Footer-DJjzgwpc.cjs.map} +1 -1
- package/dist/next/Footer.cjs.js +1 -1
- package/dist/next/Footer.css +493 -0
- package/dist/next/Footer.js +1 -1
- package/dist/next/{FormGroup-B4Xb3X61.cjs → FormGroup-BWJAlt3K.cjs} +28 -36
- package/dist/next/{FormGroup-B4Xb3X61.cjs.map → FormGroup-BWJAlt3K.cjs.map} +1 -1
- package/dist/next/{FormGroup-AHYiWnkX.js → FormGroup-QrGjujWn.js} +28 -36
- package/dist/next/{FormGroup-AHYiWnkX.js.map → FormGroup-QrGjujWn.js.map} +1 -1
- package/dist/next/FormGroup.cjs.js +1 -1
- package/dist/next/FormGroup.css +419 -0
- package/dist/next/FormGroup.js +1 -1
- package/dist/next/{IconButton-BWw3WPaS.js → IconButton-0JJ1aiqr.js} +2 -2
- package/dist/next/{IconButton-BWw3WPaS.js.map → IconButton-0JJ1aiqr.js.map} +1 -1
- package/dist/next/{IconButton-4ySBEhn1.cjs → IconButton-C66aQhKe.cjs} +2 -2
- package/dist/next/{IconButton-4ySBEhn1.cjs.map → IconButton-C66aQhKe.cjs.map} +1 -1
- package/dist/next/IconButton.cjs.js +1 -1
- package/dist/next/IconButton.css +570 -0
- package/dist/next/IconButton.js +1 -1
- package/dist/next/{MarkdownRenderer-CO_rlPOB.cjs → MarkdownRenderer-BQ1-Kd73.cjs} +25 -14
- package/dist/next/{MarkdownRenderer-CO_rlPOB.cjs.map → MarkdownRenderer-BQ1-Kd73.cjs.map} +1 -1
- package/dist/next/{MarkdownRenderer-CGnuIkVY.js → MarkdownRenderer-CmK00as_.js} +25 -14
- package/dist/next/{MarkdownRenderer-CGnuIkVY.js.map → MarkdownRenderer-CmK00as_.js.map} +1 -1
- package/dist/next/MarkdownRenderer.cjs.js +1 -1
- package/dist/next/MarkdownRenderer.css +483 -0
- package/dist/next/MarkdownRenderer.js +1 -1
- package/dist/next/{MessagePopup-D_gZy6eH.cjs → MessagePopup-CizqwWmH.cjs} +4 -4
- package/dist/next/{MessagePopup-D_gZy6eH.cjs.map → MessagePopup-CizqwWmH.cjs.map} +1 -1
- package/dist/next/{MessagePopup-DIrdAeyg.js → MessagePopup-DLodDCIa.js} +4 -4
- package/dist/next/{MessagePopup-DIrdAeyg.js.map → MessagePopup-DLodDCIa.js.map} +1 -1
- package/dist/next/MessagePopup.cjs.js +1 -1
- package/dist/next/MessagePopup.css +296 -0
- package/dist/next/MessagePopup.js +1 -1
- package/dist/next/{MetricBox-CeONzyEu.cjs → MetricBox-C55LoIfn.cjs} +43 -53
- package/dist/next/{MetricBox-CeONzyEu.cjs.map → MetricBox-C55LoIfn.cjs.map} +1 -1
- package/dist/next/{MetricBox-D9-RmZoy.js → MetricBox-CHNmWcTq.js} +43 -53
- package/dist/next/{MetricBox-D9-RmZoy.js.map → MetricBox-CHNmWcTq.js.map} +1 -1
- package/dist/next/MetricBox.cjs.js +1 -1
- package/dist/next/MetricBox.css +635 -0
- package/dist/next/MetricBox.js +1 -1
- package/dist/next/{Modal-Dre8TMtr.js → Modal-BajWiIo7.js} +3 -3
- package/dist/next/{Modal-Dre8TMtr.js.map → Modal-BajWiIo7.js.map} +1 -1
- package/dist/next/{Modal-D7hNuMII.cjs → Modal-j59Cj0t1.cjs} +3 -3
- package/dist/next/{Modal-D7hNuMII.cjs.map → Modal-j59Cj0t1.cjs.map} +1 -1
- package/dist/next/Modal.cjs.js +1 -1
- package/dist/next/Modal.css +320 -0
- package/dist/next/Modal.js +1 -1
- package/dist/next/{NavBar-dpbPYT0w.js → NavBar-B0G7ZuqP.js} +33 -43
- package/dist/next/{NavBar-dpbPYT0w.js.map → NavBar-B0G7ZuqP.js.map} +1 -1
- package/dist/next/{NavBar-d-Hx7gkg.cjs → NavBar-Cd6FlBPY.cjs} +33 -43
- package/dist/next/{NavBar-d-Hx7gkg.cjs.map → NavBar-Cd6FlBPY.cjs.map} +1 -1
- package/dist/next/NavBar.cjs.js +1 -1
- package/dist/next/NavBar.css +498 -0
- package/dist/next/NavBar.js +1 -1
- package/dist/next/{NotificationCenter-BrAzv2oD.js → NotificationCenter-BDd4Zr8Y.js} +39 -49
- package/dist/next/{NotificationCenter-BrAzv2oD.js.map → NotificationCenter-BDd4Zr8Y.js.map} +1 -1
- package/dist/next/{NotificationCenter-JIX-pouI.cjs → NotificationCenter-obd1jF2n.cjs} +39 -49
- package/dist/next/{NotificationCenter-JIX-pouI.cjs.map → NotificationCenter-obd1jF2n.cjs.map} +1 -1
- package/dist/next/NotificationCenter.cjs.js +1 -1
- package/dist/next/NotificationCenter.css +475 -0
- package/dist/next/NotificationCenter.js +1 -1
- package/dist/next/{Pager-DcibmVu1.cjs → Pager-8dIVqCGz.cjs} +4 -4
- package/dist/next/{Pager-DcibmVu1.cjs.map → Pager-8dIVqCGz.cjs.map} +1 -1
- package/dist/next/{Pager-DFKfUn1s.js → Pager-C7n5x44P.js} +4 -4
- package/dist/next/{Pager-DFKfUn1s.js.map → Pager-C7n5x44P.js.map} +1 -1
- package/dist/next/Pager.cjs.js +1 -1
- package/dist/next/Pager.css +173 -0
- package/dist/next/Pager.js +1 -1
- package/dist/next/{PopOver-CpSdILYS.cjs → PopOver-D8BwV2PM.cjs} +36 -46
- package/dist/next/{PopOver-CpSdILYS.cjs.map → PopOver-D8BwV2PM.cjs.map} +1 -1
- package/dist/next/{PopOver-CUON_Abe.js → PopOver-Dmf41W2o.js} +36 -46
- package/dist/next/{PopOver-CUON_Abe.js.map → PopOver-Dmf41W2o.js.map} +1 -1
- package/dist/next/PopOver.cjs.js +1 -1
- package/dist/next/PopOver.css +417 -0
- package/dist/next/PopOver.js +1 -1
- package/dist/next/{ProgressBar-CMYDs8uL.js → ProgressBar-BgCHpDo8.js} +44 -54
- package/dist/next/{ProgressBar-CMYDs8uL.js.map → ProgressBar-BgCHpDo8.js.map} +1 -1
- package/dist/next/{ProgressBar-sg1jxDfy.cjs → ProgressBar-DUarHTA6.cjs} +44 -54
- package/dist/next/{ProgressBar-sg1jxDfy.cjs.map → ProgressBar-DUarHTA6.cjs.map} +1 -1
- package/dist/next/ProgressBar.cjs.js +1 -1
- package/dist/next/ProgressBar.css +441 -0
- package/dist/next/ProgressBar.js +1 -1
- package/dist/next/{RadioButton-z26U6POV.js → RadioButton-BN63UX0c.js} +34 -44
- package/dist/next/{RadioButton-z26U6POV.js.map → RadioButton-BN63UX0c.js.map} +1 -1
- package/dist/next/{RadioButton-X5L9U53Y.cjs → RadioButton-Dla9uVC6.cjs} +34 -44
- package/dist/next/{RadioButton-X5L9U53Y.cjs.map → RadioButton-Dla9uVC6.cjs.map} +1 -1
- package/dist/next/RadioButton.cjs.js +1 -1
- package/dist/next/RadioButton.css +454 -0
- package/dist/next/RadioButton.js +1 -1
- package/dist/next/{Rating-DXYBYXmx.cjs → Rating-B8A_4Z44.cjs} +30 -40
- package/dist/next/{Rating-DXYBYXmx.cjs.map → Rating-B8A_4Z44.cjs.map} +1 -1
- package/dist/next/{Rating-D6JEDvn4.js → Rating-CCZoQJEB.js} +30 -40
- package/dist/next/{Rating-D6JEDvn4.js.map → Rating-CCZoQJEB.js.map} +1 -1
- package/dist/next/Rating.cjs.js +1 -1
- package/dist/next/Rating.css +402 -0
- package/dist/next/Rating.js +1 -1
- package/dist/next/{ScrollToTop-Cw7LXubo.js → ScrollToTop-C7ThHvxg.js} +2 -2
- package/dist/next/{ScrollToTop-Cw7LXubo.js.map → ScrollToTop-C7ThHvxg.js.map} +1 -1
- package/dist/next/{ScrollToTop-CBRFQNC0.cjs → ScrollToTop-CJxWoVhg.cjs} +2 -2
- package/dist/next/{ScrollToTop-CBRFQNC0.cjs.map → ScrollToTop-CJxWoVhg.cjs.map} +1 -1
- package/dist/next/ScrollToTop.cjs.js +1 -1
- package/dist/next/ScrollToTop.css +215 -0
- package/dist/next/ScrollToTop.js +1 -1
- package/dist/next/{Select-DAD4xA1b.cjs → Select-CiyDDVhq.cjs} +2 -2
- package/dist/next/{Select-DAD4xA1b.cjs.map → Select-CiyDDVhq.cjs.map} +1 -1
- package/dist/next/{Select-b8fO1q2K.js → Select-D4bH7djH.js} +2 -2
- package/dist/next/{Select-b8fO1q2K.js.map → Select-D4bH7djH.js.map} +1 -1
- package/dist/next/Select.cjs.js +1 -1
- package/dist/next/Select.css +459 -0
- package/dist/next/Select.js +1 -1
- package/dist/next/{Sidebar-BwW51HwF.js → Sidebar-3dbu221x.js} +2 -2
- package/dist/next/{Sidebar-BwW51HwF.js.map → Sidebar-3dbu221x.js.map} +1 -1
- package/dist/next/{Sidebar-U5BQKtKR.cjs → Sidebar-DpUTsAza.cjs} +2 -2
- package/dist/next/{Sidebar-U5BQKtKR.cjs.map → Sidebar-DpUTsAza.cjs.map} +1 -1
- package/dist/next/Sidebar.cjs.js +1 -1
- package/dist/next/Sidebar.css +515 -0
- package/dist/next/Sidebar.js +1 -1
- package/dist/next/{Skeleton-N1-8bK7i.cjs → Skeleton-B0mlVpUX.cjs} +22 -32
- package/dist/next/{Skeleton-N1-8bK7i.cjs.map → Skeleton-B0mlVpUX.cjs.map} +1 -1
- package/dist/next/{Skeleton-Bk8l48-D.js → Skeleton-BiBul6J3.js} +21 -31
- package/dist/next/{Skeleton-Bk8l48-D.js.map → Skeleton-BiBul6J3.js.map} +1 -1
- package/dist/next/Skeleton.cjs.js +1 -1
- package/dist/next/Skeleton.css +288 -0
- package/dist/next/Skeleton.js +1 -1
- package/dist/next/{Slider-DOGkUQYT.js → Slider-B4G0kHQA.js} +38 -48
- package/dist/next/{Slider-DOGkUQYT.js.map → Slider-B4G0kHQA.js.map} +1 -1
- package/dist/next/{Slider-BPtajU2m.cjs → Slider-Cli7b9xm.cjs} +39 -49
- package/dist/next/{Slider-BPtajU2m.cjs.map → Slider-Cli7b9xm.cjs.map} +1 -1
- package/dist/next/Slider.cjs.js +1 -1
- package/dist/next/Slider.css +645 -0
- package/dist/next/Slider.js +1 -1
- package/dist/next/{Spinner-CmaoTjNr.cjs → Spinner-BSjLK_0H.cjs} +33 -43
- package/dist/next/{Spinner-CmaoTjNr.cjs.map → Spinner-BSjLK_0H.cjs.map} +1 -1
- package/dist/next/{Spinner-D7jfVZGm.js → Spinner-C9Xiao9p.js} +32 -42
- package/dist/next/{Spinner-D7jfVZGm.js.map → Spinner-C9Xiao9p.js.map} +1 -1
- package/dist/next/Spinner.cjs.js +1 -1
- package/dist/next/Spinner.css +390 -0
- package/dist/next/Spinner.js +1 -1
- package/dist/next/{Stepper-C0cNzpY8.cjs → Stepper-CpgJBKz7.cjs} +36 -46
- package/dist/next/{Stepper-C0cNzpY8.cjs.map → Stepper-CpgJBKz7.cjs.map} +1 -1
- package/dist/next/{Stepper-CSh2wccK.js → Stepper-em6Gl32O.js} +36 -46
- package/dist/next/{Stepper-CSh2wccK.js.map → Stepper-em6Gl32O.js.map} +1 -1
- package/dist/next/Stepper.cjs.js +1 -1
- package/dist/next/Stepper.css +404 -0
- package/dist/next/Stepper.js +1 -1
- package/dist/next/{Tabs-Dors0bVs.js → Tabs-B5GbuYuA.js} +2 -2
- package/dist/next/{Tabs-Dors0bVs.js.map → Tabs-B5GbuYuA.js.map} +1 -1
- package/dist/next/{Tabs-B6zeG5AB.cjs → Tabs-or9GGDS3.cjs} +2 -2
- package/dist/next/{Tabs-B6zeG5AB.cjs.map → Tabs-or9GGDS3.cjs.map} +1 -1
- package/dist/next/Tabs.cjs.js +1 -1
- package/dist/next/Tabs.css +407 -0
- package/dist/next/Tabs.js +1 -1
- package/dist/next/{TagInput-V3zvXcNq.js → TagInput-8nVGDluu.js} +44 -54
- package/dist/next/{TagInput-V3zvXcNq.js.map → TagInput-8nVGDluu.js.map} +1 -1
- package/dist/next/{TagInput-ceV9Jjqe.cjs → TagInput-DVmBv7Mn.cjs} +44 -54
- package/dist/next/{TagInput-ceV9Jjqe.cjs.map → TagInput-DVmBv7Mn.cjs.map} +1 -1
- package/dist/next/TagInput.cjs.js +1 -1
- package/dist/next/TagInput.css +521 -0
- package/dist/next/TagInput.js +1 -1
- package/dist/next/{TextArea-BXmbrq4-.cjs → TextArea-Bh0FdkP2.cjs} +2 -2
- package/dist/next/{TextArea-BXmbrq4-.cjs.map → TextArea-Bh0FdkP2.cjs.map} +1 -1
- package/dist/next/{TextArea-BSO1_gaS.js → TextArea-CQgoM2yj.js} +2 -2
- package/dist/next/{TextArea-BSO1_gaS.js.map → TextArea-CQgoM2yj.js.map} +1 -1
- package/dist/next/TextArea.cjs.js +1 -1
- package/dist/next/TextArea.css +450 -0
- package/dist/next/TextArea.js +1 -1
- package/dist/next/{TextInput-7nN8g78V.cjs → TextInput-BRl37zMW.cjs} +3 -3
- package/dist/next/{TextInput-7nN8g78V.cjs.map → TextInput-BRl37zMW.cjs.map} +1 -1
- package/dist/next/{TextInput-yUHEWbdK.js → TextInput-CKM34-yu.js} +3 -3
- package/dist/next/{TextInput-yUHEWbdK.js.map → TextInput-CKM34-yu.js.map} +1 -1
- package/dist/next/TextInput.cjs.js +1 -1
- package/dist/next/TextInput.css +438 -0
- package/dist/next/TextInput.js +1 -1
- package/dist/next/{Timeline-BTsKMULd.js → Timeline-BF_ru3Qq.js} +2 -2
- package/dist/next/{Timeline-BTsKMULd.js.map → Timeline-BF_ru3Qq.js.map} +1 -1
- package/dist/next/{Timeline-Dep_oZrh.cjs → Timeline-uKeDlojT.cjs} +2 -2
- package/dist/next/{Timeline-Dep_oZrh.cjs.map → Timeline-uKeDlojT.cjs.map} +1 -1
- package/dist/next/Timeline.cjs.js +1 -1
- package/dist/next/Timeline.css +455 -0
- package/dist/next/Timeline.js +1 -1
- package/dist/next/{Toggle-BomUbOZa.js → Toggle-CegN5JEB.js} +2 -2
- package/dist/next/{Toggle-BomUbOZa.js.map → Toggle-CegN5JEB.js.map} +1 -1
- package/dist/next/{Toggle-C9uZG3i5.cjs → Toggle-CfIi--aC.cjs} +2 -2
- package/dist/next/{Toggle-C9uZG3i5.cjs.map → Toggle-CfIi--aC.cjs.map} +1 -1
- package/dist/next/Toggle.cjs.js +1 -1
- package/dist/next/Toggle.css +464 -0
- package/dist/next/Toggle.js +1 -1
- package/dist/next/{Toolbar-Be-YQqmX.js → Toolbar-DqBlTLsk.js} +30 -40
- package/dist/next/{Toolbar-Be-YQqmX.js.map → Toolbar-DqBlTLsk.js.map} +1 -1
- package/dist/next/{Toolbar-roQbIEcD.cjs → Toolbar-DqsQznCj.cjs} +31 -41
- package/dist/next/{Toolbar-roQbIEcD.cjs.map → Toolbar-DqsQznCj.cjs.map} +1 -1
- package/dist/next/Toolbar.cjs.js +1 -1
- package/dist/next/Toolbar.css +367 -0
- package/dist/next/Toolbar.js +1 -1
- package/dist/next/{Tooltip-DVI61ebD.cjs → Tooltip-LnIFKvJC.cjs} +35 -45
- package/dist/next/{Tooltip-DVI61ebD.cjs.map → Tooltip-LnIFKvJC.cjs.map} +1 -1
- package/dist/next/{Tooltip-lxpnIfpO.js → Tooltip-o7L3wCNR.js} +34 -44
- package/dist/next/{Tooltip-lxpnIfpO.js.map → Tooltip-o7L3wCNR.js.map} +1 -1
- package/dist/next/Tooltip.cjs.js +1 -1
- package/dist/next/Tooltip.css +529 -0
- package/dist/next/Tooltip.js +1 -1
- package/dist/next/{Typography-B6VNZtxH.cjs → Typography-BAQ61z2R.cjs} +2 -2
- package/dist/next/{Typography-B6VNZtxH.cjs.map → Typography-BAQ61z2R.cjs.map} +1 -1
- package/dist/next/{Typography-BdS7h4Eq.js → Typography-BDswZ9eq.js} +2 -2
- package/dist/next/{Typography-BdS7h4Eq.js.map → Typography-BDswZ9eq.js.map} +1 -1
- package/dist/next/Typography.cjs.js +1 -1
- package/dist/next/Typography.css +294 -0
- package/dist/next/Typography.js +1 -1
- package/dist/next/globals.css +674 -0
- package/dist/next/index.cjs.js +66 -76
- package/dist/next/index.cjs.js.map +1 -1
- package/dist/next/index.css +241 -0
- package/dist/next/index.js +66 -76
- package/dist/next/index.js.map +1 -1
- package/package.json +10 -6
- package/dist/generated-docs/Typography.props.js +0 -204
- package/dist/next/boreal-ui.css +0 -36643
|
@@ -3,11 +3,11 @@ import { useId, useState, useRef, useMemo, useEffect } from "react";
|
|
|
3
3
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
5
|
import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow } from "./boreal-style-config-DsaRlxmw.js";
|
|
6
|
-
|
|
7
|
-
import { B as Button } from "./Button-
|
|
8
|
-
import { I as IconButton } from "./IconButton-
|
|
9
|
-
import { F as FormGroup } from "./FormGroup-
|
|
10
|
-
import { P as ProgressBar } from "./ProgressBar-
|
|
6
|
+
import './globals.css';import './FileUpload.css';/* empty css */
|
|
7
|
+
import { B as Button } from "./Button-oSOXL3At.js";
|
|
8
|
+
import { I as IconButton } from "./IconButton-0JJ1aiqr.js";
|
|
9
|
+
import { F as FormGroup } from "./FormGroup-QrGjujWn.js";
|
|
10
|
+
import { P as ProgressBar } from "./ProgressBar-BgCHpDo8.js";
|
|
11
11
|
const FileIcon = (props) => /* @__PURE__ */ jsxs(
|
|
12
12
|
"svg",
|
|
13
13
|
{
|
|
@@ -511,52 +511,42 @@ const BaseFileUpload = ({
|
|
|
511
511
|
);
|
|
512
512
|
};
|
|
513
513
|
BaseFileUpload.displayName = "BaseFileUpload";
|
|
514
|
-
const
|
|
515
|
-
const
|
|
516
|
-
const
|
|
517
|
-
const
|
|
518
|
-
const
|
|
519
|
-
const
|
|
520
|
-
const
|
|
521
|
-
const
|
|
522
|
-
const
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
const
|
|
526
|
-
const
|
|
527
|
-
const
|
|
528
|
-
const
|
|
529
|
-
const
|
|
530
|
-
const
|
|
531
|
-
const
|
|
532
|
-
const
|
|
533
|
-
const
|
|
534
|
-
const
|
|
535
|
-
const
|
|
536
|
-
const
|
|
537
|
-
const
|
|
538
|
-
const
|
|
539
|
-
const
|
|
540
|
-
const
|
|
541
|
-
const
|
|
542
|
-
const
|
|
543
|
-
const
|
|
544
|
-
const
|
|
545
|
-
const
|
|
546
|
-
const
|
|
547
|
-
const
|
|
548
|
-
const
|
|
549
|
-
const success = "_success_1kw9d_859";
|
|
550
|
-
const error = "_error_1kw9d_110";
|
|
551
|
-
const warning = "_warning_1kw9d_875";
|
|
552
|
-
const spin = "_spin_1kw9d_1";
|
|
553
|
-
const pulse = "_pulse_1kw9d_1";
|
|
514
|
+
const fileUpload = "_fileUpload_vbx1v_204";
|
|
515
|
+
const dragOver = "_dragOver_vbx1v_245";
|
|
516
|
+
const disabled = "_disabled_vbx1v_249";
|
|
517
|
+
const uploadActions = "_uploadActions_vbx1v_256";
|
|
518
|
+
const uploadControls = "_uploadControls_vbx1v_262";
|
|
519
|
+
const uploadProgress = "_uploadProgress_vbx1v_274";
|
|
520
|
+
const uploadButton = "_uploadButton_vbx1v_278";
|
|
521
|
+
const removeButton = "_removeButton_vbx1v_281";
|
|
522
|
+
const hiddenInput = "_hiddenInput_vbx1v_285";
|
|
523
|
+
const fileList = "_fileList_vbx1v_288";
|
|
524
|
+
const fileListItem = "_fileListItem_vbx1v_309";
|
|
525
|
+
const rejectedFiles = "_rejectedFiles_vbx1v_336";
|
|
526
|
+
const rejectedLabel = "_rejectedLabel_vbx1v_350";
|
|
527
|
+
const rejectedList = "_rejectedList_vbx1v_358";
|
|
528
|
+
const rejectedItem = "_rejectedItem_vbx1v_362";
|
|
529
|
+
const roundNone = "_roundNone_vbx1v_366";
|
|
530
|
+
const roundSmall = "_roundSmall_vbx1v_370";
|
|
531
|
+
const roundMedium = "_roundMedium_vbx1v_374";
|
|
532
|
+
const roundLarge = "_roundLarge_vbx1v_378";
|
|
533
|
+
const roundFull = "_roundFull_vbx1v_382";
|
|
534
|
+
const shadowNone = "_shadowNone_vbx1v_386";
|
|
535
|
+
const shadowLight = "_shadowLight_vbx1v_390";
|
|
536
|
+
const shadowMedium = "_shadowMedium_vbx1v_394";
|
|
537
|
+
const shadowStrong = "_shadowStrong_vbx1v_398";
|
|
538
|
+
const shadowIntense = "_shadowIntense_vbx1v_402";
|
|
539
|
+
const primary = "_primary_vbx1v_406";
|
|
540
|
+
const secondary = "_secondary_vbx1v_410";
|
|
541
|
+
const tertiary = "_tertiary_vbx1v_414";
|
|
542
|
+
const quaternary = "_quaternary_vbx1v_418";
|
|
543
|
+
const clear = "_clear_vbx1v_422";
|
|
544
|
+
const success = "_success_vbx1v_426";
|
|
545
|
+
const error = "_error_vbx1v_434";
|
|
546
|
+
const warning = "_warning_vbx1v_442";
|
|
547
|
+
const spin = "_spin_vbx1v_1";
|
|
548
|
+
const pulse = "_pulse_vbx1v_1";
|
|
554
549
|
const styles = {
|
|
555
|
-
noScroll,
|
|
556
|
-
errorMessage,
|
|
557
|
-
loadingContainer,
|
|
558
|
-
hideScrollbar,
|
|
559
|
-
sr_only,
|
|
560
550
|
fileUpload,
|
|
561
551
|
dragOver,
|
|
562
552
|
disabled,
|
|
@@ -590,15 +580,15 @@ const styles = {
|
|
|
590
580
|
success,
|
|
591
581
|
error,
|
|
592
582
|
warning,
|
|
593
|
-
"fade-in": "_fade-
|
|
594
|
-
"slide-up": "_slide-
|
|
595
|
-
"spin-3d": "_spin-
|
|
583
|
+
"fade-in": "_fade-in_vbx1v_1",
|
|
584
|
+
"slide-up": "_slide-up_vbx1v_1",
|
|
585
|
+
"spin-3d": "_spin-3d_vbx1v_1",
|
|
596
586
|
spin,
|
|
597
587
|
pulse,
|
|
598
|
-
"fade-in-up": "_fade-in-
|
|
599
|
-
"progress-grow": "_progress-
|
|
600
|
-
"indeterminate-move": "_indeterminate-
|
|
601
|
-
"skeleton-loading": "_skeleton-
|
|
588
|
+
"fade-in-up": "_fade-in-up_vbx1v_1",
|
|
589
|
+
"progress-grow": "_progress-grow_vbx1v_1",
|
|
590
|
+
"indeterminate-move": "_indeterminate-move_vbx1v_1",
|
|
591
|
+
"skeleton-loading": "_skeleton-loading_vbx1v_1"
|
|
602
592
|
};
|
|
603
593
|
const FileUpload = (props) => {
|
|
604
594
|
return /* @__PURE__ */ jsx(
|
|
@@ -617,4 +607,4 @@ FileUpload.displayName = "FileUpload";
|
|
|
617
607
|
export {
|
|
618
608
|
FileUpload as F
|
|
619
609
|
};
|
|
620
|
-
//# sourceMappingURL=FileUpload-
|
|
610
|
+
//# sourceMappingURL=FileUpload-Bvj5JEBv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUpload-BQW5ol7P.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["error","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","rejectedFiles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUpload-Bvj5JEBv.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["error","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","rejectedFiles"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const require$$2 = require("react/jsx-runtime");
|
|
2
|
+
require('./globals.css');require('./FileUpload.css');const require$$2 = require("react/jsx-runtime");
|
|
3
3
|
const React = require("react");
|
|
4
4
|
const classNames = require("./classNames-BcWMx052.cjs");
|
|
5
5
|
const capitalize = require("./capitalize-DoV-nOmN.cjs");
|
|
6
6
|
const borealStyleConfig = require("./boreal-style-config-C1UIwOFN.cjs");
|
|
7
7
|
;/* empty css */
|
|
8
|
-
const Button = require("./Button-
|
|
9
|
-
const IconButton = require("./IconButton-
|
|
10
|
-
const FormGroup = require("./FormGroup-
|
|
11
|
-
const ProgressBar = require("./ProgressBar-
|
|
8
|
+
const Button = require("./Button-CmH6HYjc.cjs");
|
|
9
|
+
const IconButton = require("./IconButton-C66aQhKe.cjs");
|
|
10
|
+
const FormGroup = require("./FormGroup-BWJAlt3K.cjs");
|
|
11
|
+
const ProgressBar = require("./ProgressBar-DUarHTA6.cjs");
|
|
12
12
|
const FileIcon = (props) => /* @__PURE__ */ require$$2.jsxs(
|
|
13
13
|
"svg",
|
|
14
14
|
{
|
|
@@ -512,52 +512,42 @@ const BaseFileUpload = ({
|
|
|
512
512
|
);
|
|
513
513
|
};
|
|
514
514
|
BaseFileUpload.displayName = "BaseFileUpload";
|
|
515
|
-
const
|
|
516
|
-
const
|
|
517
|
-
const
|
|
518
|
-
const
|
|
519
|
-
const
|
|
520
|
-
const
|
|
521
|
-
const
|
|
522
|
-
const
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
const
|
|
526
|
-
const
|
|
527
|
-
const
|
|
528
|
-
const
|
|
529
|
-
const
|
|
530
|
-
const
|
|
531
|
-
const
|
|
532
|
-
const
|
|
533
|
-
const
|
|
534
|
-
const
|
|
535
|
-
const
|
|
536
|
-
const
|
|
537
|
-
const
|
|
538
|
-
const
|
|
539
|
-
const
|
|
540
|
-
const
|
|
541
|
-
const
|
|
542
|
-
const
|
|
543
|
-
const
|
|
544
|
-
const
|
|
545
|
-
const
|
|
546
|
-
const
|
|
547
|
-
const
|
|
548
|
-
const
|
|
549
|
-
const
|
|
550
|
-
const success = "_success_1kw9d_859";
|
|
551
|
-
const error = "_error_1kw9d_110";
|
|
552
|
-
const warning = "_warning_1kw9d_875";
|
|
553
|
-
const spin = "_spin_1kw9d_1";
|
|
554
|
-
const pulse = "_pulse_1kw9d_1";
|
|
515
|
+
const fileUpload = "_fileUpload_vbx1v_204";
|
|
516
|
+
const dragOver = "_dragOver_vbx1v_245";
|
|
517
|
+
const disabled = "_disabled_vbx1v_249";
|
|
518
|
+
const uploadActions = "_uploadActions_vbx1v_256";
|
|
519
|
+
const uploadControls = "_uploadControls_vbx1v_262";
|
|
520
|
+
const uploadProgress = "_uploadProgress_vbx1v_274";
|
|
521
|
+
const uploadButton = "_uploadButton_vbx1v_278";
|
|
522
|
+
const removeButton = "_removeButton_vbx1v_281";
|
|
523
|
+
const hiddenInput = "_hiddenInput_vbx1v_285";
|
|
524
|
+
const fileList = "_fileList_vbx1v_288";
|
|
525
|
+
const fileListItem = "_fileListItem_vbx1v_309";
|
|
526
|
+
const rejectedFiles = "_rejectedFiles_vbx1v_336";
|
|
527
|
+
const rejectedLabel = "_rejectedLabel_vbx1v_350";
|
|
528
|
+
const rejectedList = "_rejectedList_vbx1v_358";
|
|
529
|
+
const rejectedItem = "_rejectedItem_vbx1v_362";
|
|
530
|
+
const roundNone = "_roundNone_vbx1v_366";
|
|
531
|
+
const roundSmall = "_roundSmall_vbx1v_370";
|
|
532
|
+
const roundMedium = "_roundMedium_vbx1v_374";
|
|
533
|
+
const roundLarge = "_roundLarge_vbx1v_378";
|
|
534
|
+
const roundFull = "_roundFull_vbx1v_382";
|
|
535
|
+
const shadowNone = "_shadowNone_vbx1v_386";
|
|
536
|
+
const shadowLight = "_shadowLight_vbx1v_390";
|
|
537
|
+
const shadowMedium = "_shadowMedium_vbx1v_394";
|
|
538
|
+
const shadowStrong = "_shadowStrong_vbx1v_398";
|
|
539
|
+
const shadowIntense = "_shadowIntense_vbx1v_402";
|
|
540
|
+
const primary = "_primary_vbx1v_406";
|
|
541
|
+
const secondary = "_secondary_vbx1v_410";
|
|
542
|
+
const tertiary = "_tertiary_vbx1v_414";
|
|
543
|
+
const quaternary = "_quaternary_vbx1v_418";
|
|
544
|
+
const clear = "_clear_vbx1v_422";
|
|
545
|
+
const success = "_success_vbx1v_426";
|
|
546
|
+
const error = "_error_vbx1v_434";
|
|
547
|
+
const warning = "_warning_vbx1v_442";
|
|
548
|
+
const spin = "_spin_vbx1v_1";
|
|
549
|
+
const pulse = "_pulse_vbx1v_1";
|
|
555
550
|
const styles = {
|
|
556
|
-
noScroll,
|
|
557
|
-
errorMessage,
|
|
558
|
-
loadingContainer,
|
|
559
|
-
hideScrollbar,
|
|
560
|
-
sr_only,
|
|
561
551
|
fileUpload,
|
|
562
552
|
dragOver,
|
|
563
553
|
disabled,
|
|
@@ -591,15 +581,15 @@ const styles = {
|
|
|
591
581
|
success,
|
|
592
582
|
error,
|
|
593
583
|
warning,
|
|
594
|
-
"fade-in": "_fade-
|
|
595
|
-
"slide-up": "_slide-
|
|
596
|
-
"spin-3d": "_spin-
|
|
584
|
+
"fade-in": "_fade-in_vbx1v_1",
|
|
585
|
+
"slide-up": "_slide-up_vbx1v_1",
|
|
586
|
+
"spin-3d": "_spin-3d_vbx1v_1",
|
|
597
587
|
spin,
|
|
598
588
|
pulse,
|
|
599
|
-
"fade-in-up": "_fade-in-
|
|
600
|
-
"progress-grow": "_progress-
|
|
601
|
-
"indeterminate-move": "_indeterminate-
|
|
602
|
-
"skeleton-loading": "_skeleton-
|
|
589
|
+
"fade-in-up": "_fade-in-up_vbx1v_1",
|
|
590
|
+
"progress-grow": "_progress-grow_vbx1v_1",
|
|
591
|
+
"indeterminate-move": "_indeterminate-move_vbx1v_1",
|
|
592
|
+
"skeleton-loading": "_skeleton-loading_vbx1v_1"
|
|
603
593
|
};
|
|
604
594
|
const FileUpload = (props) => {
|
|
605
595
|
return /* @__PURE__ */ require$$2.jsx(
|
|
@@ -616,4 +606,4 @@ const FileUpload = (props) => {
|
|
|
616
606
|
};
|
|
617
607
|
FileUpload.displayName = "FileUpload";
|
|
618
608
|
exports.FileUpload = FileUpload;
|
|
619
|
-
//# sourceMappingURL=FileUpload-
|
|
609
|
+
//# sourceMappingURL=FileUpload-CD_i5Md2.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUpload-C9Ke2cTs.cjs","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["jsxs","jsx","error","getDefaultTheme","getDefaultRounding","getDefaultShadow","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","useId","useState","rejectedFiles","useRef","useMemo","useEffect","combineClassNames","capitalize","Progressbar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUpload-CD_i5Md2.cjs","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/next/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport { Button, IconButton, Progressbar, FormGroup } from \"@/index.next\";\r\nimport styles from \"./FileUpload.module.scss\";\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={Progressbar}\r\n classMap={styles}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["jsxs","jsx","error","getDefaultTheme","getDefaultRounding","getDefaultShadow","uploadProgress","FormGroup","disabled","Button","IconButton","ProgressBar","useId","useState","rejectedFiles","useRef","useMemo","useEffect","combineClassNames","capitalize","Progressbar"],"mappings":"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"}
|