boreal-ui 0.0.73 → 0.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/{Avatar-Ct2kXkNR.js → Avatar-CHatDRhp.js} +2 -2
- package/dist/core/{Avatar-Ct2kXkNR.js.map → Avatar-CHatDRhp.js.map} +1 -1
- package/dist/core/Avatar.js +1 -1
- package/dist/core/{Badge-BOd5dF4l.js → Badge-DwWiN50f.js} +2 -2
- package/dist/core/{Badge-BOd5dF4l.js.map → Badge-DwWiN50f.js.map} +1 -1
- package/dist/core/Badge.js +1 -1
- package/dist/core/{Breadcrumbs-C1Z59ffV.js → Breadcrumbs-kbOyaea6.js} +3 -3
- package/dist/core/{Breadcrumbs-C1Z59ffV.js.map → Breadcrumbs-kbOyaea6.js.map} +1 -1
- package/dist/core/Breadcrumbs.js +1 -1
- package/dist/core/{Button-IALg9VKr.js → Button-CneoIlVV.js} +2 -2
- package/dist/core/{Button-IALg9VKr.js.map → Button-CneoIlVV.js.map} +1 -1
- package/dist/core/Button.js +1 -1
- package/dist/core/{Card-dazG4EK1.js → Card-CZY1qzwZ.js} +4 -4
- package/dist/core/{Card-dazG4EK1.js.map → Card-CZY1qzwZ.js.map} +1 -1
- package/dist/core/Card.js +1 -1
- package/dist/core/CheckBox.js +1 -1
- package/dist/core/{Checkbox-DmMDTc5Z.js → Checkbox-BuFcBJb9.js} +2 -2
- package/dist/core/{Checkbox-DmMDTc5Z.js.map → Checkbox-BuFcBJb9.js.map} +1 -1
- package/dist/core/{Chip-DSBIjvJZ.js → Chip-DoRSxZKk.js} +3 -3
- package/dist/core/{Chip-DSBIjvJZ.js.map → Chip-DoRSxZKk.js.map} +1 -1
- package/dist/core/Chip.js +1 -1
- package/dist/core/{CommandPalette-BBjIib6T.js → CommandPalette-0uVG4iR2.js} +3 -3
- package/dist/core/{CommandPalette-BBjIib6T.js.map → CommandPalette-0uVG4iR2.js.map} +1 -1
- package/dist/core/CommandPalette.js +1 -1
- package/dist/core/{DateTimePicker-u2p4sBbR.js → DateTimePicker-wO_P5Ab1.js} +2 -2
- package/dist/core/{DateTimePicker-u2p4sBbR.js.map → DateTimePicker-wO_P5Ab1.js.map} +1 -1
- package/dist/core/DateTimePicker.js +1 -1
- package/dist/core/{Dropdown-BGJ8mGhg.js → Dropdown-BEPGhf-i.js} +3 -3
- package/dist/core/{Dropdown-BGJ8mGhg.js.map → Dropdown-BEPGhf-i.js.map} +1 -1
- package/dist/core/Dropdown.js +1 -1
- package/dist/core/{EmptyState-CCSPIDo3.js → EmptyState-CM7nlKER.js} +3 -3
- package/dist/core/{EmptyState-CCSPIDo3.js.map → EmptyState-CM7nlKER.js.map} +1 -1
- package/dist/core/EmptyState.js +1 -1
- package/dist/core/{FileUpload-BWjOciA3.js → FileUpload-CPZetlXM.js} +5 -5
- package/dist/core/{FileUpload-BWjOciA3.js.map → FileUpload-CPZetlXM.js.map} +1 -1
- package/dist/core/FileUpload.js +1 -1
- package/dist/core/{Footer-CkSzN_PI.js → Footer-Q_60pe6o.js} +5 -5
- package/dist/core/{Footer-CkSzN_PI.js.map → Footer-Q_60pe6o.js.map} +1 -1
- package/dist/core/Footer.js +1 -1
- package/dist/core/{IconButton-ChJJCB4O.js → IconButton-By8zuXrs.js} +2 -2
- package/dist/core/{IconButton-ChJJCB4O.js.map → IconButton-By8zuXrs.js.map} +1 -1
- package/dist/core/IconButton.js +1 -1
- package/dist/core/{MessagePopup-D6xuwdAv.js → MessagePopup-D6ljI_rQ.js} +3 -3
- package/dist/core/{MessagePopup-D6xuwdAv.js.map → MessagePopup-D6ljI_rQ.js.map} +1 -1
- package/dist/core/MessagePopup.js +1 -1
- package/dist/core/{MetricBox-BlkBoGCL.js → MetricBox-DTn2x1vz.js} +2 -2
- package/dist/core/{MetricBox-BlkBoGCL.js.map → MetricBox-DTn2x1vz.js.map} +1 -1
- package/dist/core/MetricBox.js +1 -1
- package/dist/core/{Modal-DhpY3Kt6.cjs → Modal-B9FXClBr.cjs} +4 -4
- package/dist/core/Modal-B9FXClBr.cjs.map +1 -0
- package/dist/core/{Modal-DVz_GNOL.js → Modal-CW8jt0lU.js} +5 -5
- package/dist/core/Modal-CW8jt0lU.js.map +1 -0
- package/dist/core/Modal.cjs.js +1 -1
- package/dist/core/Modal.js +1 -1
- package/dist/core/{NotificationCenter-MTRIDmMm.js → NotificationCenter-DA-WGPP9.js} +3 -3
- package/dist/core/{NotificationCenter-MTRIDmMm.js.map → NotificationCenter-DA-WGPP9.js.map} +1 -1
- package/dist/core/NotificationCenter.js +1 -1
- package/dist/core/{Pager-B2MEqAOV.js → Pager-B4hyIUdo.js} +4 -4
- package/dist/core/{Pager-B2MEqAOV.js.map → Pager-B4hyIUdo.js.map} +1 -1
- package/dist/core/Pager-wl7_umU4.cjs.map +1 -1
- package/dist/core/Pager.js +1 -1
- package/dist/core/{PopOver-lRqOHUJg.js → PopOver-DCuqGQ_j.js} +2 -2
- package/dist/core/{PopOver-lRqOHUJg.js.map → PopOver-DCuqGQ_j.js.map} +1 -1
- package/dist/core/PopOver.js +1 -1
- package/dist/core/{ProgressBar-pVPs5lsA.js → ProgressBar-BxzX6yn1.js} +2 -2
- package/dist/core/{ProgressBar-pVPs5lsA.js.map → ProgressBar-BxzX6yn1.js.map} +1 -1
- package/dist/core/ProgressBar.js +1 -1
- package/dist/core/{Select-CeyJGftD.js → Select-BXIz5BbU.js} +2 -2
- package/dist/core/{Select-CeyJGftD.js.map → Select-BXIz5BbU.js.map} +1 -1
- package/dist/core/Select.js +1 -1
- package/dist/core/{Sidebar-BWzuQw-r.js → Sidebar-Bi7elIRO.js} +2 -2
- package/dist/core/{Sidebar-BWzuQw-r.js.map → Sidebar-Bi7elIRO.js.map} +1 -1
- package/dist/core/Sidebar.js +1 -1
- package/dist/core/{Slider-Dxcryk5j.js → Slider-CW11kjMv.js} +2 -2
- package/dist/core/{Slider-Dxcryk5j.js.map → Slider-CW11kjMv.js.map} +1 -1
- package/dist/core/Slider.js +1 -1
- package/dist/core/{Stepper-SDJM-Jju.js → Stepper-CLfy0_gZ.js} +3 -3
- package/dist/core/{Stepper-SDJM-Jju.js.map → Stepper-CLfy0_gZ.js.map} +1 -1
- package/dist/core/Stepper.js +1 -1
- package/dist/core/{Tabs-B4HRqGuB.js → Tabs-DBqWn9j9.js} +2 -2
- package/dist/core/{Tabs-B4HRqGuB.js.map → Tabs-DBqWn9j9.js.map} +1 -1
- package/dist/core/Tabs.js +1 -1
- package/dist/core/{TagInput-CcuMIlmi.js → TagInput-YieWARAt.js} +4 -4
- package/dist/core/{TagInput-CcuMIlmi.js.map → TagInput-YieWARAt.js.map} +1 -1
- package/dist/core/TagInput.js +1 -1
- package/dist/core/{TextArea-Ufou1zw1.js → TextArea-CLLK5k18.js} +2 -2
- package/dist/core/{TextArea-Ufou1zw1.js.map → TextArea-CLLK5k18.js.map} +1 -1
- package/dist/core/TextArea.js +1 -1
- package/dist/core/{TextInput-BaiDGrKw.js → TextInput-Bc2YpcvM.js} +3 -3
- package/dist/core/{TextInput-BaiDGrKw.js.map → TextInput-Bc2YpcvM.js.map} +1 -1
- package/dist/core/TextInput.js +1 -1
- package/dist/core/{ThemeContext-nYSJ_G6L.js → ThemeContext-zE_shsx6.js} +3 -3
- package/dist/{next/ThemeContext-nYSJ_G6L.js.map → core/ThemeContext-zE_shsx6.js.map} +1 -1
- package/dist/core/ThemeProvider.js +3 -3
- package/dist/core/{Timeline-BRLd8boJ.js → Timeline-5mzFplzB.js} +2 -2
- package/dist/core/{Timeline-BRLd8boJ.js.map → Timeline-5mzFplzB.js.map} +1 -1
- package/dist/core/Timeline.js +1 -1
- package/dist/core/{Toggle-DL0Nhwgr.js → Toggle-DCK1KtP5.js} +2 -2
- package/dist/core/{Toggle-DL0Nhwgr.js.map → Toggle-DCK1KtP5.js.map} +1 -1
- package/dist/core/Toggle.js +1 -1
- package/dist/core/{Toolbar-fSghH1_-.js → Toolbar-DLgQqPBh.js} +3 -3
- package/dist/core/{Toolbar-fSghH1_-.js.map → Toolbar-DLgQqPBh.js.map} +1 -1
- package/dist/core/Toolbar.js +1 -1
- package/dist/core/{Tooltip-wKNLA3ua.js → Tooltip-Dua_3tqJ.js} +2 -2
- package/dist/core/{Tooltip-wKNLA3ua.js.map → Tooltip-Dua_3tqJ.js.map} +1 -1
- package/dist/core/Tooltip.js +1 -1
- package/dist/core/Typography-D0hPzK5Y.js.map +1 -1
- package/dist/core/Typography-DdTiWRgQ.cjs.map +1 -1
- package/dist/core/index.cjs.js +8481 -1
- package/dist/core/index.cjs.js.map +1 -1
- package/dist/core/index.js +8517 -37
- package/dist/core/index.js.map +1 -1
- package/dist/next/{Avatar-iZKOY9MH.cjs → Avatar-DL_juTQA.cjs} +3 -3
- package/dist/next/{Avatar-iZKOY9MH.cjs.map → Avatar-DL_juTQA.cjs.map} +1 -1
- package/dist/next/{Avatar-CiFxswSP.js → Avatar-nnjhILk-.js} +4 -4
- package/dist/next/{Avatar-CiFxswSP.js.map → Avatar-nnjhILk-.js.map} +1 -1
- package/dist/next/Avatar.cjs.js +1 -1
- package/dist/next/Avatar.js +1 -1
- package/dist/next/{Badge-WP2DFssv.js → Badge-uyqxj7ag.js} +2 -2
- package/dist/next/{Badge-WP2DFssv.js.map → Badge-uyqxj7ag.js.map} +1 -1
- package/dist/next/Badge.js +1 -1
- package/dist/next/{Breadcrumbs-CV5iM8BP.cjs → Breadcrumbs-CuvOmgFe.cjs} +3 -3
- package/dist/next/{Breadcrumbs-CV5iM8BP.cjs.map → Breadcrumbs-CuvOmgFe.cjs.map} +1 -1
- package/dist/next/{Breadcrumbs-B60a5DUy.js → Breadcrumbs-D0AmJB4U.js} +4 -4
- package/dist/next/{Breadcrumbs-B60a5DUy.js.map → Breadcrumbs-D0AmJB4U.js.map} +1 -1
- package/dist/next/Breadcrumbs.cjs.js +1 -1
- package/dist/next/Breadcrumbs.js +1 -1
- package/dist/next/{Button-DMCOgi4K.cjs → Button-BZmph-Qr.cjs} +2 -2
- package/dist/next/{Button-DMCOgi4K.cjs.map → Button-BZmph-Qr.cjs.map} +1 -1
- package/dist/next/{Button-BfgUzkgN.js → Button-DWpImTmr.js} +3 -3
- package/dist/next/{Button-BfgUzkgN.js.map → Button-DWpImTmr.js.map} +1 -1
- package/dist/next/Button.cjs.js +1 -1
- package/dist/next/Button.js +1 -1
- package/dist/next/{Card-CSFC7mpW.js → Card-DnZOsQLP.js} +5 -5
- package/dist/next/{Card-CSFC7mpW.js.map → Card-DnZOsQLP.js.map} +1 -1
- package/dist/next/{Card-0Pm8Vjjn.cjs → Card-oPTXIvsb.cjs} +4 -4
- package/dist/next/{Card-0Pm8Vjjn.cjs.map → Card-oPTXIvsb.cjs.map} +1 -1
- package/dist/next/Card.cjs.js +1 -1
- package/dist/next/Card.js +1 -1
- package/dist/next/CheckBox.js +1 -1
- package/dist/next/{Checkbox-BlWHxhjw.js → Checkbox-CRg5oEdB.js} +2 -2
- package/dist/next/{Checkbox-BlWHxhjw.js.map → Checkbox-CRg5oEdB.js.map} +1 -1
- package/dist/next/{Chip-CuaKFQku.js → Chip-Cg7khsSn.js} +3 -3
- package/dist/next/{Chip-CuaKFQku.js.map → Chip-Cg7khsSn.js.map} +1 -1
- package/dist/next/{Chip-CB1mcRA1.cjs → Chip-DpMTNARP.cjs} +2 -2
- package/dist/next/{Chip-CB1mcRA1.cjs.map → Chip-DpMTNARP.cjs.map} +1 -1
- package/dist/next/Chip.cjs.js +1 -1
- package/dist/next/Chip.js +1 -1
- package/dist/next/{CommandPalette-BQEJG5yN.cjs → CommandPalette-BvjlLE14.cjs} +2 -2
- package/dist/next/{CommandPalette-BQEJG5yN.cjs.map → CommandPalette-BvjlLE14.cjs.map} +1 -1
- package/dist/next/{CommandPalette-Cxx3Ey9J.js → CommandPalette-D6R9_gmo.js} +3 -3
- package/dist/next/{CommandPalette-Cxx3Ey9J.js.map → CommandPalette-D6R9_gmo.js.map} +1 -1
- package/dist/next/CommandPalette.cjs.js +1 -1
- package/dist/next/CommandPalette.js +1 -1
- package/dist/next/{DateTimePicker-CdPvr6Mc.js → DateTimePicker-DB2exnHd.js} +2 -2
- package/dist/next/{DateTimePicker-CdPvr6Mc.js.map → DateTimePicker-DB2exnHd.js.map} +1 -1
- package/dist/next/DateTimePicker.js +1 -1
- package/dist/next/{Dropdown-79ZIBUjB.js → Dropdown-B7PgWHlY.js} +3 -3
- package/dist/next/{Dropdown-79ZIBUjB.js.map → Dropdown-B7PgWHlY.js.map} +1 -1
- package/dist/next/{Dropdown-BfvCn_20.cjs → Dropdown-kQLhr7_M.cjs} +2 -2
- package/dist/next/{Dropdown-BfvCn_20.cjs.map → Dropdown-kQLhr7_M.cjs.map} +1 -1
- package/dist/next/Dropdown.cjs.js +1 -1
- package/dist/next/Dropdown.js +1 -1
- package/dist/next/{EmptyState-Dy1Xeyzp.cjs → EmptyState-BH1X81TH.cjs} +2 -2
- package/dist/next/{EmptyState-Dy1Xeyzp.cjs.map → EmptyState-BH1X81TH.cjs.map} +1 -1
- package/dist/next/{EmptyState-oXCSBosz.js → EmptyState-DCCDQWOQ.js} +3 -3
- package/dist/next/{EmptyState-oXCSBosz.js.map → EmptyState-DCCDQWOQ.js.map} +1 -1
- package/dist/next/EmptyState.cjs.js +1 -1
- package/dist/next/EmptyState.js +1 -1
- package/dist/next/{FileUpload-qiY8YpDz.js → FileUpload-BQW5ol7P.js} +5 -5
- package/dist/next/{FileUpload-qiY8YpDz.js.map → FileUpload-BQW5ol7P.js.map} +1 -1
- package/dist/next/{FileUpload-C1DVXFK7.cjs → FileUpload-C9Ke2cTs.cjs} +3 -3
- package/dist/next/{FileUpload-C1DVXFK7.cjs.map → FileUpload-C9Ke2cTs.cjs.map} +1 -1
- package/dist/next/FileUpload.cjs.js +1 -1
- package/dist/next/FileUpload.js +1 -1
- package/dist/next/{Footer-DIPBB0is.js → Footer-Dl_wQwsb.js} +7 -7
- package/dist/next/{Footer-DIPBB0is.js.map → Footer-Dl_wQwsb.js.map} +1 -1
- package/dist/next/{Footer-4L7pu4Gp.cjs → Footer-i9rgxATK.cjs} +4 -4
- package/dist/next/{Footer-4L7pu4Gp.cjs.map → Footer-i9rgxATK.cjs.map} +1 -1
- package/dist/next/Footer.cjs.js +1 -1
- package/dist/next/Footer.js +1 -1
- package/dist/next/{IconButton-C4OC99ig.cjs → IconButton-4ySBEhn1.cjs} +2 -2
- package/dist/next/{IconButton-C4OC99ig.cjs.map → IconButton-4ySBEhn1.cjs.map} +1 -1
- package/dist/next/{IconButton-CNiln4Qf.js → IconButton-BWw3WPaS.js} +3 -3
- package/dist/next/{IconButton-CNiln4Qf.js.map → IconButton-BWw3WPaS.js.map} +1 -1
- package/dist/next/IconButton.cjs.js +1 -1
- package/dist/next/IconButton.js +1 -1
- package/dist/next/{MessagePopup-BscnzqBa.js → MessagePopup-DIrdAeyg.js} +3 -3
- package/dist/next/{MessagePopup-BscnzqBa.js.map → MessagePopup-DIrdAeyg.js.map} +1 -1
- package/dist/next/{MessagePopup-lIFn7LZ2.cjs → MessagePopup-D_gZy6eH.cjs} +3 -3
- package/dist/next/{MessagePopup-lIFn7LZ2.cjs.map → MessagePopup-D_gZy6eH.cjs.map} +1 -1
- package/dist/next/MessagePopup.cjs.js +1 -1
- package/dist/next/MessagePopup.js +1 -1
- package/dist/next/{MetricBox-Br-_66aB.js → MetricBox-D9-RmZoy.js} +2 -2
- package/dist/next/{MetricBox-Br-_66aB.js.map → MetricBox-D9-RmZoy.js.map} +1 -1
- package/dist/next/MetricBox.js +1 -1
- package/dist/next/{Modal-Baxb-_FV.cjs → Modal-D7hNuMII.cjs} +5 -5
- package/dist/next/Modal-D7hNuMII.cjs.map +1 -0
- package/dist/next/{Modal-ClsOP_6R.js → Modal-Dre8TMtr.js} +5 -5
- package/dist/next/Modal-Dre8TMtr.js.map +1 -0
- package/dist/next/Modal.cjs.js +1 -1
- package/dist/next/Modal.js +1 -1
- package/dist/next/{NavBar-BXnGlk49.cjs → NavBar-d-Hx7gkg.cjs} +3 -3
- package/dist/next/{NavBar-BXnGlk49.cjs.map → NavBar-d-Hx7gkg.cjs.map} +1 -1
- package/dist/next/{NavBar-Bmf1C-io.js → NavBar-dpbPYT0w.js} +3 -3
- package/dist/next/{NavBar-Bmf1C-io.js.map → NavBar-dpbPYT0w.js.map} +1 -1
- package/dist/next/NavBar.cjs.js +1 -1
- package/dist/next/NavBar.js +1 -1
- package/dist/next/{NotificationCenter-BrXxvcLm.js → NotificationCenter-BrAzv2oD.js} +3 -3
- package/dist/next/{NotificationCenter-BrXxvcLm.js.map → NotificationCenter-BrAzv2oD.js.map} +1 -1
- package/dist/next/{NotificationCenter-XcbhUqkh.cjs → NotificationCenter-JIX-pouI.cjs} +3 -3
- package/dist/next/{NotificationCenter-XcbhUqkh.cjs.map → NotificationCenter-JIX-pouI.cjs.map} +1 -1
- package/dist/next/NotificationCenter.cjs.js +1 -1
- package/dist/next/NotificationCenter.js +1 -1
- package/dist/next/{Pager-Dq-KkMmi.js → Pager-DFKfUn1s.js} +4 -4
- package/dist/next/{Pager-Dq-KkMmi.js.map → Pager-DFKfUn1s.js.map} +1 -1
- package/dist/next/{Pager-DesOcELM.cjs → Pager-DcibmVu1.cjs} +3 -3
- package/dist/next/{Pager-DesOcELM.cjs.map → Pager-DcibmVu1.cjs.map} +1 -1
- package/dist/next/Pager.cjs.js +1 -1
- package/dist/next/Pager.js +1 -1
- package/dist/next/{PopOver-Dp_vC53_.js → PopOver-CUON_Abe.js} +2 -2
- package/dist/next/{PopOver-Dp_vC53_.js.map → PopOver-CUON_Abe.js.map} +1 -1
- package/dist/next/PopOver.js +1 -1
- package/dist/next/{ProgressBar-Bf_ZzYzI.js → ProgressBar-CMYDs8uL.js} +2 -2
- package/dist/next/{ProgressBar-Bf_ZzYzI.js.map → ProgressBar-CMYDs8uL.js.map} +1 -1
- package/dist/next/ProgressBar.js +1 -1
- package/dist/next/{Select-DPL__SwJ.js → Select-b8fO1q2K.js} +2 -2
- package/dist/next/{Select-DPL__SwJ.js.map → Select-b8fO1q2K.js.map} +1 -1
- package/dist/next/Select.js +1 -1
- package/dist/next/{Sidebar-CWjyCeQj.js → Sidebar-BwW51HwF.js} +4 -4
- package/dist/next/{Sidebar-CWjyCeQj.js.map → Sidebar-BwW51HwF.js.map} +1 -1
- package/dist/next/{Sidebar-BXmF-Nl2.cjs → Sidebar-U5BQKtKR.cjs} +3 -3
- package/dist/next/{Sidebar-BXmF-Nl2.cjs.map → Sidebar-U5BQKtKR.cjs.map} +1 -1
- package/dist/next/Sidebar.cjs.js +1 -1
- package/dist/next/Sidebar.js +1 -1
- package/dist/next/{Slider-BC9XlsEQ.js → Slider-DOGkUQYT.js} +2 -2
- package/dist/next/{Slider-BC9XlsEQ.js.map → Slider-DOGkUQYT.js.map} +1 -1
- package/dist/next/Slider.js +1 -1
- package/dist/next/{Stepper-P9DL0HZW.cjs → Stepper-C0cNzpY8.cjs} +2 -2
- package/dist/next/{Stepper-P9DL0HZW.cjs.map → Stepper-C0cNzpY8.cjs.map} +1 -1
- package/dist/next/{Stepper-CTd99d_F.js → Stepper-CSh2wccK.js} +3 -3
- package/dist/next/{Stepper-CTd99d_F.js.map → Stepper-CSh2wccK.js.map} +1 -1
- package/dist/next/Stepper.cjs.js +1 -1
- package/dist/next/Stepper.js +1 -1
- package/dist/next/{Tabs-tZjEVd-U.js → Tabs-Dors0bVs.js} +2 -2
- package/dist/next/{Tabs-tZjEVd-U.js.map → Tabs-Dors0bVs.js.map} +1 -1
- package/dist/next/Tabs.js +1 -1
- package/dist/next/{TagInput-CXvw8ogs.js → TagInput-V3zvXcNq.js} +4 -4
- package/dist/next/{TagInput-CXvw8ogs.js.map → TagInput-V3zvXcNq.js.map} +1 -1
- package/dist/next/{TagInput-DldSDmHu.cjs → TagInput-ceV9Jjqe.cjs} +3 -3
- package/dist/next/{TagInput-DldSDmHu.cjs.map → TagInput-ceV9Jjqe.cjs.map} +1 -1
- package/dist/next/TagInput.cjs.js +1 -1
- package/dist/next/TagInput.js +1 -1
- package/dist/next/{TextArea-CWscnEZW.js → TextArea-BSO1_gaS.js} +2 -2
- package/dist/next/{TextArea-CWscnEZW.js.map → TextArea-BSO1_gaS.js.map} +1 -1
- package/dist/next/TextArea.js +1 -1
- package/dist/next/{TextInput-cfBWD6de.cjs → TextInput-7nN8g78V.cjs} +2 -2
- package/dist/next/{TextInput-cfBWD6de.cjs.map → TextInput-7nN8g78V.cjs.map} +1 -1
- package/dist/next/{TextInput-3ZD3ccXf.js → TextInput-yUHEWbdK.js} +3 -3
- package/dist/next/{TextInput-3ZD3ccXf.js.map → TextInput-yUHEWbdK.js.map} +1 -1
- package/dist/next/TextInput.cjs.js +1 -1
- package/dist/next/TextInput.js +1 -1
- package/dist/next/{ThemeContext-nYSJ_G6L.js → ThemeContext-zE_shsx6.js} +3 -3
- package/dist/{core/ThemeContext-nYSJ_G6L.js.map → next/ThemeContext-zE_shsx6.js.map} +1 -1
- package/dist/next/ThemeProvider.js +3 -3
- package/dist/next/{Timeline-Bd6k_2az.js → Timeline-BTsKMULd.js} +2 -2
- package/dist/next/{Timeline-Bd6k_2az.js.map → Timeline-BTsKMULd.js.map} +1 -1
- package/dist/next/Timeline.js +1 -1
- package/dist/next/{Toggle-Bl8weXv8.js → Toggle-BomUbOZa.js} +2 -2
- package/dist/next/{Toggle-Bl8weXv8.js.map → Toggle-BomUbOZa.js.map} +1 -1
- package/dist/next/Toggle.js +1 -1
- package/dist/next/{Toolbar-DyzNvwQv.js → Toolbar-Be-YQqmX.js} +3 -3
- package/dist/next/{Toolbar-DyzNvwQv.js.map → Toolbar-Be-YQqmX.js.map} +1 -1
- package/dist/next/{Toolbar-s0krbHKU.cjs → Toolbar-roQbIEcD.cjs} +2 -2
- package/dist/next/{Toolbar-s0krbHKU.cjs.map → Toolbar-roQbIEcD.cjs.map} +1 -1
- package/dist/next/Toolbar.cjs.js +1 -1
- package/dist/next/Toolbar.js +1 -1
- package/dist/next/{Tooltip-Ba5YWT7r.js → Tooltip-lxpnIfpO.js} +2 -2
- package/dist/next/{Tooltip-Ba5YWT7r.js.map → Tooltip-lxpnIfpO.js.map} +1 -1
- package/dist/next/Tooltip.js +1 -1
- package/dist/next/Typography-B6VNZtxH.cjs.map +1 -1
- package/dist/next/Typography-BdS7h4Eq.js.map +1 -1
- package/dist/next/{image-B9PuwflE.js → image-CvorlI3C.js} +76 -24
- package/dist/next/image-CvorlI3C.js.map +1 -0
- package/dist/next/{image-Bo_vHlt1.cjs → image-DuTgdWOV.cjs} +76 -24
- package/dist/next/image-DuTgdWOV.cjs.map +1 -0
- package/dist/next/index.cjs.js +8501 -21
- package/dist/next/index.cjs.js.map +1 -1
- package/dist/next/index.js +8518 -38
- package/dist/next/index.js.map +1 -1
- package/dist/next/{link-CyxHztrS.js → link-4NcriBFB.js} +57 -15
- package/dist/next/link-4NcriBFB.js.map +1 -0
- package/dist/next/{link-B1N-q38H.cjs → link-CenftYXJ.cjs} +56 -14
- package/dist/next/link-CenftYXJ.cjs.map +1 -0
- package/dist/next/{navigation-C2hD8Jlk.js → navigation-BCeRD3ib.js} +2128 -87
- package/dist/next/navigation-BCeRD3ib.js.map +1 -0
- package/dist/next/{navigation-C3npGZmO.cjs → navigation-DtjMH66C.cjs} +2128 -87
- package/dist/next/navigation-DtjMH66C.cjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/Modal/Modal.types.d.ts +3 -3
- package/dist/types/components/Modal/Modal.types.d.ts.map +1 -1
- package/dist/types/components/Pager/Pager.types.d.ts +2 -2
- package/dist/types/components/Pager/Pager.types.d.ts.map +1 -1
- package/dist/types/components/Pager/core/Pager.d.ts +2 -2
- package/dist/types/components/Pager/core/Pager.d.ts.map +1 -1
- package/dist/types/components/Pager/next/Pager.d.ts +2 -2
- package/dist/types/components/Pager/next/Pager.d.ts.map +1 -1
- package/dist/types/components/Typography/Typography.types.d.ts +2 -2
- package/dist/types/components/Typography/Typography.types.d.ts.map +1 -1
- package/dist/types/components/Typography/core/Typography.d.ts +1 -2
- package/dist/types/components/Typography/core/Typography.d.ts.map +1 -1
- package/dist/types/components/Typography/next/Typography.d.ts +1 -2
- package/dist/types/components/Typography/next/Typography.d.ts.map +1 -1
- package/dist/types/generated-docs/Accordion.props.d.ts +7 -0
- package/dist/types/generated-docs/Accordion.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Avatar.props.d.ts +7 -0
- package/dist/types/generated-docs/Avatar.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Badge.props.d.ts +7 -0
- package/dist/types/generated-docs/Badge.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Breadcrumbs.props.d.ts +7 -0
- package/dist/types/generated-docs/Breadcrumbs.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Button.props.d.ts +7 -0
- package/dist/types/generated-docs/Button.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Card.props.d.ts +7 -0
- package/dist/types/generated-docs/Card.props.d.ts.map +1 -0
- package/dist/types/generated-docs/CheckBox.props.d.ts +7 -0
- package/dist/types/generated-docs/CheckBox.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Chip.props.d.ts +7 -0
- package/dist/types/generated-docs/Chip.props.d.ts.map +1 -0
- package/dist/types/generated-docs/ChipGroup.props.d.ts +7 -0
- package/dist/types/generated-docs/ChipGroup.props.d.ts.map +1 -0
- package/dist/types/generated-docs/CircularProgress.props.d.ts +7 -0
- package/dist/types/generated-docs/CircularProgress.props.d.ts.map +1 -0
- package/dist/types/generated-docs/ColorPicker.props.d.ts +7 -0
- package/dist/types/generated-docs/ColorPicker.props.d.ts.map +1 -0
- package/dist/types/generated-docs/CommandPalette.props.d.ts +7 -0
- package/dist/types/generated-docs/CommandPalette.props.d.ts.map +1 -0
- package/dist/types/generated-docs/DataTable.props.d.ts +7 -0
- package/dist/types/generated-docs/DataTable.props.d.ts.map +1 -0
- package/dist/types/generated-docs/DateTimePicker.props.d.ts +7 -0
- package/dist/types/generated-docs/DateTimePicker.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Divider.props.d.ts +7 -0
- package/dist/types/generated-docs/Divider.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Dropdown.props.d.ts +7 -0
- package/dist/types/generated-docs/Dropdown.props.d.ts.map +1 -0
- package/dist/types/generated-docs/EmptyState.props.d.ts +7 -0
- package/dist/types/generated-docs/EmptyState.props.d.ts.map +1 -0
- package/dist/types/generated-docs/FileUpload.props.d.ts +7 -0
- package/dist/types/generated-docs/FileUpload.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Footer.props.d.ts +7 -0
- package/dist/types/generated-docs/Footer.props.d.ts.map +1 -0
- package/dist/types/generated-docs/FormGroup.props.d.ts +7 -0
- package/dist/types/generated-docs/FormGroup.props.d.ts.map +1 -0
- package/dist/types/generated-docs/IconButton.props.d.ts +7 -0
- package/dist/types/generated-docs/IconButton.props.d.ts.map +1 -0
- package/dist/types/generated-docs/MarkdownRenderer.props.d.ts +7 -0
- package/dist/types/generated-docs/MarkdownRenderer.props.d.ts.map +1 -0
- package/dist/types/generated-docs/MessagePopup.props.d.ts +7 -0
- package/dist/types/generated-docs/MessagePopup.props.d.ts.map +1 -0
- package/dist/types/generated-docs/MetricBox.props.d.ts +7 -0
- package/dist/types/generated-docs/MetricBox.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Modal.props.d.ts +7 -0
- package/dist/types/generated-docs/Modal.props.d.ts.map +1 -0
- package/dist/types/generated-docs/NavBar.props.d.ts +7 -0
- package/dist/types/generated-docs/NavBar.props.d.ts.map +1 -0
- package/dist/types/generated-docs/NotificationCenter.props.d.ts +7 -0
- package/dist/types/generated-docs/NotificationCenter.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Pager.props.d.ts +7 -0
- package/dist/types/generated-docs/Pager.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Popover.props.d.ts +7 -0
- package/dist/types/generated-docs/Popover.props.d.ts.map +1 -0
- package/dist/types/generated-docs/ProgressBar.props.d.ts +7 -0
- package/dist/types/generated-docs/ProgressBar.props.d.ts.map +1 -0
- package/dist/types/generated-docs/RadioButton.props.d.ts +7 -0
- package/dist/types/generated-docs/RadioButton.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Rating.props.d.ts +7 -0
- package/dist/types/generated-docs/Rating.props.d.ts.map +1 -0
- package/dist/types/generated-docs/ScrollToTop.props.d.ts +7 -0
- package/dist/types/generated-docs/ScrollToTop.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Select.props.d.ts +7 -0
- package/dist/types/generated-docs/Select.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Sidebar.props.d.ts +7 -0
- package/dist/types/generated-docs/Sidebar.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Skeleton.props.d.ts +7 -0
- package/dist/types/generated-docs/Skeleton.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Slider.props.d.ts +7 -0
- package/dist/types/generated-docs/Slider.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Spinner.props.d.ts +7 -0
- package/dist/types/generated-docs/Spinner.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Stepper.props.d.ts +7 -0
- package/dist/types/generated-docs/Stepper.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Tabs.props.d.ts +7 -0
- package/dist/types/generated-docs/Tabs.props.d.ts.map +1 -0
- package/dist/types/generated-docs/TagInput.props.d.ts +7 -0
- package/dist/types/generated-docs/TagInput.props.d.ts.map +1 -0
- package/dist/types/generated-docs/TextArea.props.d.ts +7 -0
- package/dist/types/generated-docs/TextArea.props.d.ts.map +1 -0
- package/dist/types/generated-docs/TextInput.props.d.ts +7 -0
- package/dist/types/generated-docs/TextInput.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Timeline.props.d.ts +7 -0
- package/dist/types/generated-docs/Timeline.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Toggle.props.d.ts +7 -0
- package/dist/types/generated-docs/Toggle.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Toolbar.props.d.ts +7 -0
- package/dist/types/generated-docs/Toolbar.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Tooltip.props.d.ts +7 -0
- package/dist/types/generated-docs/Tooltip.props.d.ts.map +1 -0
- package/dist/types/generated-docs/Typography.props.d.ts +7 -0
- package/dist/types/generated-docs/Typography.props.d.ts.map +1 -0
- package/dist/types/generated-docs/index.d.ts +54 -0
- package/dist/types/generated-docs/index.d.ts.map +1 -0
- package/dist/types/generated-docs/types.d.ts +20 -0
- package/dist/types/generated-docs/types.d.ts.map +1 -0
- package/dist/types/index.core.d.ts +1 -0
- package/dist/types/index.core.d.ts.map +1 -1
- package/dist/types/index.next.d.ts +1 -0
- package/dist/types/index.next.d.ts.map +1 -1
- package/package.json +14 -2
- package/dist/core/Modal-DVz_GNOL.js.map +0 -1
- package/dist/core/Modal-DhpY3Kt6.cjs.map +0 -1
- package/dist/next/Modal-Baxb-_FV.cjs.map +0 -1
- package/dist/next/Modal-ClsOP_6R.js.map +0 -1
- package/dist/next/image-B9PuwflE.js.map +0 -1
- package/dist/next/image-Bo_vHlt1.cjs.map +0 -1
- package/dist/next/link-B1N-q38H.cjs.map +0 -1
- package/dist/next/link-CyxHztrS.js.map +0 -1
- package/dist/next/navigation-C2hD8Jlk.js.map +0 -1
- package/dist/next/navigation-C3npGZmO.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagInput-DldSDmHu.cjs","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/TagInput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n useRef,\r\n} from \"react\";\r\nimport { TagInputBaseProps } from \"./TagInput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst EMPTY_TAGS: string[] = [];\r\n\r\nconst TagInputBase: React.FC<TagInputBaseProps> = ({\r\n tags = EMPTY_TAGS,\r\n \"aria-label\": ariaLabel = \"Tag Input\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-description\":\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Use arrow keys to navigate suggestions; Enter to select; Escape to close. Backspace removes the last tag when the field is empty.\",\r\n inputAriaLabel = \"Add new tag\",\r\n inputAriaLabelledBy,\r\n inputAriaDescribedBy,\r\n suggestionsAriaLabel = \"Tag suggestions\",\r\n removeTagButtonLabel = \"Remove tag\",\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n idBase,\r\n \"data-testid\": testId = \"tag-input\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const uid = useId();\r\n const baseId = idBase || testId || `tag-input-${uid}`;\r\n\r\n const inputId = `${baseId}-input`;\r\n const descId = `${baseId}-desc`;\r\n const labelId = `${baseId}-label`;\r\n const listboxId = `${baseId}-listbox`;\r\n const statusId = `${baseId}-status`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [internalTags, setInternalTags] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n useEffect(() => {\r\n setInternalTags((prev) => {\r\n if (\r\n prev.length === tags.length &&\r\n prev.every((tag, index) => tag === tags[index])\r\n ) {\r\n return prev;\r\n }\r\n\r\n return tags;\r\n });\r\n }, [tags]);\r\n\r\n const tagList = internalTags;\r\n\r\n const hasTag = (val: string) =>\r\n tagList.some((t) => t.toLowerCase() === val.toLowerCase());\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const query = inputValue.trim();\r\n if (!query) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n debounceRef.current = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(query);\r\n setSuggestions(result || []);\r\n setOpen((result?.length ?? 0) > 0);\r\n setActiveIndex((result?.length ?? 0) > 0 ? 0 : -1);\r\n } catch {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n }\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const emitChange = (updated: string[]): void => {\r\n setInternalTags(updated);\r\n onChange?.(updated);\r\n };\r\n\r\n const addTag = (raw: string) => {\r\n const newTag = raw.trim();\r\n if (!newTag || hasTag(newTag)) return false;\r\n\r\n const updated = [...tagList, newTag];\r\n emitChange(updated);\r\n setLastAction(`Added tag ${newTag}.`);\r\n return true;\r\n };\r\n\r\n const removeTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n emitChange(updated);\r\n setLastAction(`Removed tag ${tag}.`);\r\n };\r\n\r\n const clearSuggestions = (): void => {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key } = event;\r\n\r\n if (open && suggestions.length > 0) {\r\n if (key === \"ArrowDown\") {\r\n event.preventDefault();\r\n setActiveIndex((i) => (i + 1) % suggestions.length);\r\n return;\r\n }\r\n\r\n if (key === \"ArrowUp\") {\r\n event.preventDefault();\r\n setActiveIndex(\r\n (i) => (i - 1 + suggestions.length) % suggestions.length,\r\n );\r\n return;\r\n }\r\n\r\n if (key === \"Enter\") {\r\n event.preventDefault();\r\n const choice = suggestions[activeIndex];\r\n if (choice && addTag(choice)) {\r\n setInputValue(\"\");\r\n }\r\n clearSuggestions();\r\n return;\r\n }\r\n\r\n if (key === \"Escape\") {\r\n event.preventDefault();\r\n clearSuggestions();\r\n return;\r\n }\r\n }\r\n\r\n if (key === \"Enter\" || key === \",\") {\r\n event.preventDefault();\r\n if (addTag(inputValue)) setInputValue(\"\");\r\n clearSuggestions();\r\n return;\r\n }\r\n\r\n if (key === \"Backspace\" && inputValue === \"\" && tagList.length > 0) {\r\n const last = tagList[tagList.length - 1];\r\n removeTag(last);\r\n }\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n ),\r\n [classMap, theme, state, size],\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n ),\r\n [classMap, shadow, rounding],\r\n );\r\n\r\n const handleSuggestionClick = (suggestion: string): void => {\r\n if (addTag(suggestion)) setInputValue(\"\");\r\n clearSuggestions();\r\n };\r\n\r\n const activeOptionId =\r\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined;\r\n\r\n const groupDescribedBy = [descId, statusId, ariaDescribedBy]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const inputDescribedBy = [descId, statusId, inputAriaDescribedBy]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-label={ariaLabelledBy ? undefined : ariaLabel}\r\n aria-labelledby={ariaLabelledBy || labelId}\r\n aria-describedby={groupDescribedBy || undefined}\r\n data-testid={testId}\r\n >\r\n {!ariaLabelledBy && (\r\n <label id={labelId} className=\"sr_only\">\r\n {ariaLabel}\r\n </label>\r\n )}\r\n\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul className={classMap.tagContainer} data-testid={`${testId}-list`}>\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={`${tag}-${index}`}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`${removeTagButtonLabel} ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => removeTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n iconClassName={classMap.removeButtonIcon}\r\n disabled={false}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(val: string) => setInputValue(val)}\r\n onKeyDown={handleKeyDown}\r\n autoComplete=\"off\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-expanded={open}\r\n aria-controls={listboxId}\r\n aria-activedescendant={activeOptionId}\r\n aria-label={inputAriaLabelledBy ? undefined : inputAriaLabel}\r\n aria-labelledby={inputAriaLabelledBy}\r\n aria-describedby={inputDescribedBy || undefined}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n\r\n {open && suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={listboxId}\r\n aria-label={suggestionsAriaLabel}\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={`${suggestion}-${index}`}\r\n id={`${listboxId}-opt-${index}`}\r\n className={combineClassNames(\r\n classMap.suggestionItem,\r\n index === activeIndex && (classMap.active || \"\"),\r\n )}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n onMouseDown={(e) => e.preventDefault()}\r\n onClick={() => handleSuggestionClick(suggestion)}\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div id={statusId} aria-live=\"polite\" className=\"sr_only\">\r\n {open && suggestions.length > 0\r\n ? `${suggestions.length} suggestion${suggestions.length === 1 ? \"\" : \"s\"} available.`\r\n : \"\"}\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTagInputBase.displayName = \"TagInputBase\";\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./TagInput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../TagInput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\nTagInput.displayName = \"TagInput\";\r\nexport default TagInput;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultRounding","getDefaultShadow","IconButton","TextInput","useId","useState","useRef","useEffect","tag","useMemo","combineClassNames","capitalize","jsxs","jsx","CloseIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TagInput-ceV9Jjqe.cjs","sources":["../../src/components/TagInput/TagInputBase.tsx","../../src/components/TagInput/next/TagInput.tsx"],"sourcesContent":["import React, {\r\n useId,\r\n useState,\r\n KeyboardEvent,\r\n useMemo,\r\n useEffect,\r\n useRef,\r\n} from \"react\";\r\nimport { TagInputBaseProps } from \"./TagInput.types\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst EMPTY_TAGS: string[] = [];\r\n\r\nconst TagInputBase: React.FC<TagInputBaseProps> = ({\r\n tags = EMPTY_TAGS,\r\n \"aria-label\": ariaLabel = \"Tag Input\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-description\":\r\n ariaDescription = \"Type a tag and press Enter or comma to add. Use arrow keys to navigate suggestions; Enter to select; Escape to close. Backspace removes the last tag when the field is empty.\",\r\n inputAriaLabel = \"Add new tag\",\r\n inputAriaLabelledBy,\r\n inputAriaDescribedBy,\r\n suggestionsAriaLabel = \"Tag suggestions\",\r\n removeTagButtonLabel = \"Remove tag\",\r\n onChange,\r\n fetchSuggestions,\r\n debounceMs = 300,\r\n placeholder = \"Add a tag...\",\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n size = getDefaultSize(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n idBase,\r\n \"data-testid\": testId = \"tag-input\",\r\n classMap,\r\n IconButton,\r\n TextInput,\r\n}) => {\r\n const uid = useId();\r\n const baseId = idBase || testId || `tag-input-${uid}`;\r\n\r\n const inputId = `${baseId}-input`;\r\n const descId = `${baseId}-desc`;\r\n const labelId = `${baseId}-label`;\r\n const listboxId = `${baseId}-listbox`;\r\n const statusId = `${baseId}-status`;\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [internalTags, setInternalTags] = useState<string[]>(tags);\r\n const [lastAction, setLastAction] = useState<string>(\"\");\r\n const [suggestions, setSuggestions] = useState<string[]>([]);\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n useEffect(() => {\r\n setInternalTags((prev) => {\r\n if (\r\n prev.length === tags.length &&\r\n prev.every((tag, index) => tag === tags[index])\r\n ) {\r\n return prev;\r\n }\r\n\r\n return tags;\r\n });\r\n }, [tags]);\r\n\r\n const tagList = internalTags;\r\n\r\n const hasTag = (val: string) =>\r\n tagList.some((t) => t.toLowerCase() === val.toLowerCase());\r\n\r\n useEffect(() => {\r\n if (!fetchSuggestions) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const query = inputValue.trim();\r\n if (!query) {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n return;\r\n }\r\n\r\n debounceRef.current = setTimeout(async () => {\r\n try {\r\n const result = await fetchSuggestions(query);\r\n setSuggestions(result || []);\r\n setOpen((result?.length ?? 0) > 0);\r\n setActiveIndex((result?.length ?? 0) > 0 ? 0 : -1);\r\n } catch {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n }\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [inputValue, fetchSuggestions, debounceMs]);\r\n\r\n const emitChange = (updated: string[]): void => {\r\n setInternalTags(updated);\r\n onChange?.(updated);\r\n };\r\n\r\n const addTag = (raw: string) => {\r\n const newTag = raw.trim();\r\n if (!newTag || hasTag(newTag)) return false;\r\n\r\n const updated = [...tagList, newTag];\r\n emitChange(updated);\r\n setLastAction(`Added tag ${newTag}.`);\r\n return true;\r\n };\r\n\r\n const removeTag = (tag: string) => {\r\n const updated = tagList.filter((t) => t !== tag);\r\n emitChange(updated);\r\n setLastAction(`Removed tag ${tag}.`);\r\n };\r\n\r\n const clearSuggestions = (): void => {\r\n setSuggestions([]);\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n const { key } = event;\r\n\r\n if (open && suggestions.length > 0) {\r\n if (key === \"ArrowDown\") {\r\n event.preventDefault();\r\n setActiveIndex((i) => (i + 1) % suggestions.length);\r\n return;\r\n }\r\n\r\n if (key === \"ArrowUp\") {\r\n event.preventDefault();\r\n setActiveIndex(\r\n (i) => (i - 1 + suggestions.length) % suggestions.length,\r\n );\r\n return;\r\n }\r\n\r\n if (key === \"Enter\") {\r\n event.preventDefault();\r\n const choice = suggestions[activeIndex];\r\n if (choice && addTag(choice)) {\r\n setInputValue(\"\");\r\n }\r\n clearSuggestions();\r\n return;\r\n }\r\n\r\n if (key === \"Escape\") {\r\n event.preventDefault();\r\n clearSuggestions();\r\n return;\r\n }\r\n }\r\n\r\n if (key === \"Enter\" || key === \",\") {\r\n event.preventDefault();\r\n if (addTag(inputValue)) setInputValue(\"\");\r\n clearSuggestions();\r\n return;\r\n }\r\n\r\n if (key === \"Backspace\" && inputValue === \"\" && tagList.length > 0) {\r\n const last = tagList[tagList.length - 1];\r\n removeTag(last);\r\n }\r\n };\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tagInput,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n ),\r\n [classMap, theme, state, size],\r\n );\r\n\r\n const tagClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.tag,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n ),\r\n [classMap, shadow, rounding],\r\n );\r\n\r\n const handleSuggestionClick = (suggestion: string): void => {\r\n if (addTag(suggestion)) setInputValue(\"\");\r\n clearSuggestions();\r\n };\r\n\r\n const activeOptionId =\r\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined;\r\n\r\n const groupDescribedBy = [descId, statusId, ariaDescribedBy]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const inputDescribedBy = [descId, statusId, inputAriaDescribedBy]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role=\"group\"\r\n aria-label={ariaLabelledBy ? undefined : ariaLabel}\r\n aria-labelledby={ariaLabelledBy || labelId}\r\n aria-describedby={groupDescribedBy || undefined}\r\n data-testid={testId}\r\n >\r\n {!ariaLabelledBy && (\r\n <label id={labelId} className=\"sr_only\">\r\n {ariaLabel}\r\n </label>\r\n )}\r\n\r\n <div\r\n id={descId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </div>\r\n\r\n <ul className={classMap.tagContainer} data-testid={`${testId}-list`}>\r\n {tagList.map((tag, index) => (\r\n <li\r\n key={`${tag}-${index}`}\r\n className={tagClass}\r\n role=\"listitem\"\r\n data-testid={`${testId}-tag-${index}`}\r\n >\r\n <span className={classMap.tagLabel}>{tag}</span>\r\n <IconButton\r\n type=\"button\"\r\n aria-label={`${removeTagButtonLabel} ${tag}`}\r\n className={classMap.removeButton}\r\n onClick={() => removeTag(tag)}\r\n data-testid={`${testId}-remove-${index}`}\r\n icon={CloseIcon}\r\n size=\"small\"\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n iconClassName={classMap.removeButtonIcon}\r\n disabled={false}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <div className={classMap.inputWrapper}>\r\n <TextInput\r\n id={inputId}\r\n type=\"text\"\r\n theme={theme}\r\n state={state}\r\n rounding={rounding}\r\n shadow={shadow}\r\n className={classMap.input}\r\n value={inputValue}\r\n placeholder={tagList.length === 0 ? placeholder : \"\"}\r\n onChange={(val: string) => setInputValue(val)}\r\n onKeyDown={handleKeyDown}\r\n autoComplete=\"off\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-expanded={open}\r\n aria-controls={listboxId}\r\n aria-activedescendant={activeOptionId}\r\n aria-label={inputAriaLabelledBy ? undefined : inputAriaLabel}\r\n aria-labelledby={inputAriaLabelledBy}\r\n aria-describedby={inputDescribedBy || undefined}\r\n data-testid={`${testId}-input`}\r\n />\r\n </div>\r\n\r\n {open && suggestions.length > 0 && (\r\n <ul\r\n className={classMap.suggestionList}\r\n role=\"listbox\"\r\n id={listboxId}\r\n aria-label={suggestionsAriaLabel}\r\n data-testid={`${testId}-suggestions`}\r\n >\r\n {suggestions.map((suggestion, index) => (\r\n <li\r\n key={`${suggestion}-${index}`}\r\n id={`${listboxId}-opt-${index}`}\r\n className={combineClassNames(\r\n classMap.suggestionItem,\r\n index === activeIndex && (classMap.active || \"\"),\r\n )}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n onMouseDown={(e) => e.preventDefault()}\r\n onClick={() => handleSuggestionClick(suggestion)}\r\n data-testid={`${testId}-suggestion-${index}`}\r\n >\r\n {suggestion}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n <div id={statusId} aria-live=\"polite\" className=\"sr_only\">\r\n {open && suggestions.length > 0\r\n ? `${suggestions.length} suggestion${suggestions.length === 1 ? \"\" : \"s\"} available.`\r\n : \"\"}\r\n {lastAction}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTagInputBase.displayName = \"TagInputBase\";\r\nexport default TagInputBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./TagInput.module.scss\";\r\nimport { IconButton, TextInput } from \"@/index.next\";\r\nimport TagInputBase from \"../TagInputBase\";\r\nimport { TagInputProps } from \"../TagInput.types\";\r\n\r\nconst TagInput: React.FC<TagInputProps> = (props) => {\r\n return (\r\n <TagInputBase\r\n {...props}\r\n classMap={styles}\r\n IconButton={IconButton}\r\n TextInput={TextInput}\r\n />\r\n );\r\n};\r\nTagInput.displayName = \"TagInput\";\r\nexport default TagInput;\r\n"],"names":["getDefaultTheme","getDefaultSize","getDefaultRounding","getDefaultShadow","IconButton","TextInput","useId","useState","useRef","useEffect","tag","useMemo","combineClassNames","capitalize","jsxs","jsx","CloseIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,aAAuB,CAAA;AAE7B,MAAM,eAA4C,CAAC;AAAA,EACjD,OAAO;AAAA,EACP,cAAc,YAAY;AAAA,EAC1B,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,oBACE,kBAAkB;AAAA,EACpB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd,QAAQA,kBAAAA,gBAAA;AAAA,EACR,QAAQ;AAAA,EACR,OAAOC,kBAAAA,eAAA;AAAA,EACP,WAAWC,kBAAAA,mBAAA;AAAA,EACX,SAASC,kBAAAA,iBAAA;AAAA,EACT;AAAA,EACA,eAAe,SAAS;AAAA,EACxB;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AACF,MAAM;AACJ,QAAM,MAAMC,MAAAA,MAAA;AACZ,QAAM,SAAS,UAAU,UAAU,aAAa,GAAG;AAEnD,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,SAAS,GAAG,MAAM;AACxB,QAAM,UAAU,GAAG,MAAM;AACzB,QAAM,YAAY,GAAG,MAAM;AAC3B,QAAM,WAAW,GAAG,MAAM;AAE1B,QAAM,CAAC,YAAY,aAAa,IAAIC,MAAAA,SAAS,EAAE;AAC/C,QAAM,CAAC,cAAc,eAAe,IAAIA,MAAAA,SAAmB,IAAI;AAC/D,QAAM,CAAC,YAAY,aAAa,IAAIA,MAAAA,SAAiB,EAAE;AACvD,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAmB,CAAA,CAAE;AAC3D,QAAM,CAAC,MAAM,OAAO,IAAIA,MAAAA,SAAS,KAAK;AACtC,QAAM,CAAC,aAAa,cAAc,IAAIA,MAAAA,SAAiB,EAAE;AAEzD,QAAM,cAAcC,MAAAA,OAA6C,IAAI;AAErEC,QAAAA,UAAU,MAAM;AACd,oBAAgB,CAAC,SAAS;AACxB,UACE,KAAK,WAAW,KAAK,UACrB,KAAK,MAAM,CAACC,MAAK,UAAUA,SAAQ,KAAK,KAAK,CAAC,GAC9C;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,UAAU;AAEhB,QAAM,SAAS,CAAC,QACd,QAAQ,KAAK,CAAC,MAAM,EAAE,YAAA,MAAkB,IAAI,YAAA,CAAa;AAE3DD,QAAAA,UAAU,MAAM;AACd,QAAI,CAAC,kBAAkB;AACrB,qBAAe,CAAA,CAAE;AACjB,cAAQ,KAAK;AACb,qBAAe,EAAE;AACjB;AAAA,IACF;AAEA,QAAI,YAAY,QAAS,cAAa,YAAY,OAAO;AAEzD,UAAM,QAAQ,WAAW,KAAA;AACzB,QAAI,CAAC,OAAO;AACV,qBAAe,CAAA,CAAE;AACjB,cAAQ,KAAK;AACb,qBAAe,EAAE;AACjB;AAAA,IACF;AAEA,gBAAY,UAAU,WAAW,YAAY;AAC3C,UAAI;AACF,cAAM,SAAS,MAAM,iBAAiB,KAAK;AAC3C,uBAAe,UAAU,EAAE;AAC3B,kBAAS,iCAAQ,WAAU,KAAK,CAAC;AACjC,yBAAgB,iCAAQ,WAAU,KAAK,IAAI,IAAI,EAAE;AAAA,MACnD,QAAQ;AACN,uBAAe,CAAA,CAAE;AACjB,gBAAQ,KAAK;AACb,uBAAe,EAAE;AAAA,MACnB;AAAA,IACF,GAAG,UAAU;AAEb,WAAO,MAAM;AACX,UAAI,YAAY,QAAS,cAAa,YAAY,OAAO;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC,YAAY,kBAAkB,UAAU,CAAC;AAE7C,QAAM,aAAa,CAAC,YAA4B;AAC9C,oBAAgB,OAAO;AACvB,yCAAW;AAAA,EACb;AAEA,QAAM,SAAS,CAAC,QAAgB;AAC9B,UAAM,SAAS,IAAI,KAAA;AACnB,QAAI,CAAC,UAAU,OAAO,MAAM,EAAG,QAAO;AAEtC,UAAM,UAAU,CAAC,GAAG,SAAS,MAAM;AACnC,eAAW,OAAO;AAClB,kBAAc,aAAa,MAAM,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,CAACC,SAAgB;AACjC,UAAM,UAAU,QAAQ,OAAO,CAAC,MAAM,MAAMA,IAAG;AAC/C,eAAW,OAAO;AAClB,kBAAc,eAAeA,IAAG,GAAG;AAAA,EACrC;AAEA,QAAM,mBAAmB,MAAY;AACnC,mBAAe,CAAA,CAAE;AACjB,YAAQ,KAAK;AACb,mBAAe,EAAE;AAAA,EACnB;AAEA,QAAM,gBAAgB,CAAC,UAA2C;AAChE,UAAM,EAAE,QAAQ;AAEhB,QAAI,QAAQ,YAAY,SAAS,GAAG;AAClC,UAAI,QAAQ,aAAa;AACvB,cAAM,eAAA;AACN,uBAAe,CAAC,OAAO,IAAI,KAAK,YAAY,MAAM;AAClD;AAAA,MACF;AAEA,UAAI,QAAQ,WAAW;AACrB,cAAM,eAAA;AACN;AAAA,UACE,CAAC,OAAO,IAAI,IAAI,YAAY,UAAU,YAAY;AAAA,QAAA;AAEpD;AAAA,MACF;AAEA,UAAI,QAAQ,SAAS;AACnB,cAAM,eAAA;AACN,cAAM,SAAS,YAAY,WAAW;AACtC,YAAI,UAAU,OAAO,MAAM,GAAG;AAC5B,wBAAc,EAAE;AAAA,QAClB;AACA,yBAAA;AACA;AAAA,MACF;AAEA,UAAI,QAAQ,UAAU;AACpB,cAAM,eAAA;AACN,yBAAA;AACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,QAAQ,WAAW,QAAQ,KAAK;AAClC,YAAM,eAAA;AACN,UAAI,OAAO,UAAU,EAAG,eAAc,EAAE;AACxC,uBAAA;AACA;AAAA,IACF;AAEA,QAAI,QAAQ,eAAe,eAAe,MAAM,QAAQ,SAAS,GAAG;AAClE,YAAM,OAAO,QAAQ,QAAQ,SAAS,CAAC;AACvC,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,eAAeC,MAAAA;AAAAA,IACnB,MACEC,WAAAA;AAAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,SAAS,IAAI;AAAA,IAAA;AAAA,IAEjB,CAAC,UAAU,OAAO,OAAO,IAAI;AAAA,EAAA;AAG/B,QAAM,WAAWD,MAAAA;AAAAA,IACf,MACEC,WAAAA;AAAAA,MACE,SAAS;AAAA,MACT,UAAU,SAAS,SAASC,WAAAA,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQA,WAAAA,WAAW,QAAQ,CAAC,EAAE;AAAA,IAAA;AAAA,IAEvD,CAAC,UAAU,QAAQ,QAAQ;AAAA,EAAA;AAG7B,QAAM,wBAAwB,CAAC,eAA6B;AAC1D,QAAI,OAAO,UAAU,EAAG,eAAc,EAAE;AACxC,qBAAA;AAAA,EACF;AAEA,QAAM,iBACJ,QAAQ,eAAe,IAAI,GAAG,SAAS,QAAQ,WAAW,KAAK;AAEjE,QAAM,mBAAmB,CAAC,QAAQ,UAAU,eAAe,EACxD,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,QAAM,mBAAmB,CAAC,QAAQ,UAAU,oBAAoB,EAC7D,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,MAAK;AAAA,MACL,cAAY,iBAAiB,SAAY;AAAA,MACzC,mBAAiB,kBAAkB;AAAA,MACnC,oBAAkB,oBAAoB;AAAA,MACtC,eAAa;AAAA,MAEZ,UAAA;AAAA,QAAA,CAAC,kBACAC,2BAAAA,IAAC,SAAA,EAAM,IAAI,SAAS,WAAU,WAC3B,UAAA,WACH;AAAA,QAGFA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAU;AAAA,YACV,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGHA,2BAAAA,IAAC,MAAA,EAAG,WAAW,SAAS,cAAc,eAAa,GAAG,MAAM,SACzD,UAAA,QAAQ,IAAI,CAACL,MAAK,UACjBI,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAW;AAAA,YACX,MAAK;AAAA,YACL,eAAa,GAAG,MAAM,QAAQ,KAAK;AAAA,YAEnC,UAAA;AAAA,cAAAC,2BAAAA,IAAC,QAAA,EAAK,WAAW,SAAS,UAAW,UAAAL,MAAI;AAAA,cACzCK,2BAAAA;AAAAA,gBAACX;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,cAAY,GAAG,oBAAoB,IAAIM,IAAG;AAAA,kBAC1C,WAAW,SAAS;AAAA,kBACpB,SAAS,MAAM,UAAUA,IAAG;AAAA,kBAC5B,eAAa,GAAG,MAAM,WAAW,KAAK;AAAA,kBACtC,MAAMM,UAAAA;AAAAA,kBACN,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,eAAe,SAAS;AAAA,kBACxB,UAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ;AAAA,UAAA;AAAA,UAlBK,GAAGN,IAAG,IAAI,KAAK;AAAA,QAAA,CAoBvB,GACH;AAAA,QAEAK,2BAAAA,IAAC,OAAA,EAAI,WAAW,SAAS,cACvB,UAAAA,2BAAAA;AAAAA,UAACV;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,YACJ,MAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,SAAS;AAAA,YACpB,OAAO;AAAA,YACP,aAAa,QAAQ,WAAW,IAAI,cAAc;AAAA,YAClD,UAAU,CAAC,QAAgB,cAAc,GAAG;AAAA,YAC5C,WAAW;AAAA,YACX,cAAa;AAAA,YACb,MAAK;AAAA,YACL,qBAAkB;AAAA,YAClB,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf,yBAAuB;AAAA,YACvB,cAAY,sBAAsB,SAAY;AAAA,YAC9C,mBAAiB;AAAA,YACjB,oBAAkB,oBAAoB;AAAA,YACtC,eAAa,GAAG,MAAM;AAAA,UAAA;AAAA,QAAA,GAE1B;AAAA,QAEC,QAAQ,YAAY,SAAS,KAC5BU,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAK;AAAA,YACL,IAAI;AAAA,YACJ,cAAY;AAAA,YACZ,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA,YAAY,IAAI,CAAC,YAAY,UAC5BA,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,IAAI,GAAG,SAAS,QAAQ,KAAK;AAAA,gBAC7B,WAAWH,WAAAA;AAAAA,kBACT,SAAS;AAAA,kBACT,UAAU,gBAAgB,SAAS,UAAU;AAAA,gBAAA;AAAA,gBAE/C,MAAK;AAAA,gBACL,iBAAe,UAAU;AAAA,gBACzB,aAAa,CAAC,MAAM,EAAE,eAAA;AAAA,gBACtB,SAAS,MAAM,sBAAsB,UAAU;AAAA,gBAC/C,eAAa,GAAG,MAAM,eAAe,KAAK;AAAA,gBAEzC,UAAA;AAAA,cAAA;AAAA,cAZI,GAAG,UAAU,IAAI,KAAK;AAAA,YAAA,CAc9B;AAAA,UAAA;AAAA,QAAA;AAAA,wCAIJ,OAAA,EAAI,IAAI,UAAU,aAAU,UAAS,WAAU,WAC7C,UAAA;AAAA,UAAA,QAAQ,YAAY,SAAS,IAC1B,GAAG,YAAY,MAAM,cAAc,YAAY,WAAW,IAAI,KAAK,GAAG,gBACtE;AAAA,UACH;AAAA,QAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,aAAa,cAAc;ACjV3B,MAAM,WAAoC,CAAC,UAAU;AACnD,SACEG,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,UAAU;AAAA,MAAA,YACVX,WAAAA;AAAAA,MAAA,WACAC,UAAAA;AAAAA,IAAA;AAAA,EAAA;AAGN;AACA,SAAS,cAAc;;"}
|
package/dist/next/TagInput.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef, useId, useMemo } from "react";
|
|
3
3
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
|
-
import {
|
|
5
|
+
import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow } from "./boreal-style-config-DsaRlxmw.js";
|
|
6
6
|
const TextAreaBase = forwardRef(
|
|
7
7
|
({
|
|
8
8
|
label: label2,
|
|
@@ -237,4 +237,4 @@ TextArea.displayName = "TextArea";
|
|
|
237
237
|
export {
|
|
238
238
|
TextArea as T
|
|
239
239
|
};
|
|
240
|
-
//# sourceMappingURL=TextArea-
|
|
240
|
+
//# sourceMappingURL=TextArea-BSO1_gaS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea-CWscnEZW.js","sources":["../../src/components/TextArea/TextAreaBase.tsx","../../src/components/TextArea/next/TextArea.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { TextAreaProps } from \"./TextArea.types\";\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 TextAreaBase = forwardRef<\r\n HTMLTextAreaElement,\r\n TextAreaProps & { classMap: Record<string, string> }\r\n>(\r\n (\r\n {\r\n label,\r\n labelPosition = \"top\",\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n readOnly = false,\r\n outline = false,\r\n autocomplete = false,\r\n onChange,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n resizable = true,\r\n\r\n \"aria-label\": ariaLabel,\r\n \"aria-description\": ariaDescription,\r\n helperText,\r\n errorMessage,\r\n describedBy,\r\n disabled = false,\r\n height,\r\n classMap,\r\n className = \"\",\r\n \"data-testid\": testId = \"text-area\",\r\n id: idProp,\r\n required,\r\n\r\n // Native accessibility props\r\n \"aria-label\": ariaLabelProp,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n \"aria-errormessage\": ariaErrorMessageProp,\r\n\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const autoId = useId();\r\n const id = idProp || autoId;\r\n\r\n const labelId = label ? `${id}-label` : undefined;\r\n const descriptionId = ariaDescription ? `${id}-description` : undefined;\r\n const helperTextId = helperText ? `${id}-helper-text` : undefined;\r\n const internalErrorId = errorMessage ? `${id}-error-message` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textArea,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAriaLabel =\r\n !ariaLabelledBy && !label\r\n ? ariaLabelProp || ariaLabel || placeholder\r\n : undefined;\r\n\r\n const describedByIds =\r\n [\r\n ariaDescribedByProp,\r\n describedBy,\r\n descriptionId,\r\n helperTextId,\r\n isError ? internalErrorId : undefined,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const errorMessageId =\r\n isError && (ariaErrorMessageProp || internalErrorId)\r\n ? ariaErrorMessageProp || internalErrorId\r\n : undefined;\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n )}\r\n data-testid={testId}\r\n >\r\n {label && (\r\n <label\r\n id={labelId}\r\n htmlFor={id}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n\r\n <textarea\r\n ref={ref}\r\n id={id}\r\n placeholder={placeholder}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={\r\n ariaLabelledBy || (!ariaLabelledBy && label ? labelId : undefined)\r\n }\r\n aria-describedby={describedByIds}\r\n aria-errormessage={errorMessageId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={autocomplete ? \"on\" : \"off\"}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n style={{\r\n height,\r\n resize: resizable ? undefined : \"none\",\r\n }}\r\n className={classMap.textInput}\r\n data-testid={`${testId}-input`}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={classMap.customResizeHandle}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-resize-handle`}\r\n />\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descriptionId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {helperText && (\r\n <div\r\n id={helperTextId}\r\n className={classMap.helperText}\r\n data-testid={`${testId}-helper-text`}\r\n >\r\n {helperText}\r\n </div>\r\n )}\r\n\r\n {errorMessage && (\r\n <div\r\n id={internalErrorId}\r\n className={classMap.errorMessage}\r\n role={isError ? \"alert\" : undefined}\r\n data-testid={`${testId}-error-message`}\r\n >\r\n {errorMessage}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextAreaBase.displayName = \"TextAreaBase\";\r\n\r\nexport default TextAreaBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport TextAreaBase from \"../TextAreaBase\";\r\nimport type { TextAreaProps } from \"../TextArea.types\";\r\nimport styles from \"./TextArea.module.scss\";\r\n\r\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (props, ref) => {\r\n return <TextAreaBase {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport default TextArea;\r\n"],"names":["label","outline","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextArea-BSO1_gaS.js","sources":["../../src/components/TextArea/TextAreaBase.tsx","../../src/components/TextArea/next/TextArea.tsx"],"sourcesContent":["import { forwardRef, useId, useMemo } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { TextAreaProps } from \"./TextArea.types\";\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 TextAreaBase = forwardRef<\r\n HTMLTextAreaElement,\r\n TextAreaProps & { classMap: Record<string, string> }\r\n>(\r\n (\r\n {\r\n label,\r\n labelPosition = \"top\",\r\n icon: Icon,\r\n placeholder = \"Enter text\",\r\n readOnly = false,\r\n outline = false,\r\n autocomplete = false,\r\n onChange,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n resizable = true,\r\n\r\n \"aria-label\": ariaLabel,\r\n \"aria-description\": ariaDescription,\r\n helperText,\r\n errorMessage,\r\n describedBy,\r\n disabled = false,\r\n height,\r\n classMap,\r\n className = \"\",\r\n \"data-testid\": testId = \"text-area\",\r\n id: idProp,\r\n required,\r\n\r\n // Native accessibility props\r\n \"aria-label\": ariaLabelProp,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n \"aria-errormessage\": ariaErrorMessageProp,\r\n\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const autoId = useId();\r\n const id = idProp || autoId;\r\n\r\n const labelId = label ? `${id}-label` : undefined;\r\n const descriptionId = ariaDescription ? `${id}-description` : undefined;\r\n const helperTextId = helperText ? `${id}-helper-text` : undefined;\r\n const internalErrorId = errorMessage ? `${id}-error-message` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textArea,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAriaLabel =\r\n !ariaLabelledBy && !label\r\n ? ariaLabelProp || ariaLabel || placeholder\r\n : undefined;\r\n\r\n const describedByIds =\r\n [\r\n ariaDescribedByProp,\r\n describedBy,\r\n descriptionId,\r\n helperTextId,\r\n isError ? internalErrorId : undefined,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const errorMessageId =\r\n isError && (ariaErrorMessageProp || internalErrorId)\r\n ? ariaErrorMessageProp || internalErrorId\r\n : undefined;\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n )}\r\n data-testid={testId}\r\n >\r\n {label && (\r\n <label\r\n id={labelId}\r\n htmlFor={id}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={classMap.iconContainer}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n\r\n <textarea\r\n ref={ref}\r\n id={id}\r\n placeholder={placeholder}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={\r\n ariaLabelledBy || (!ariaLabelledBy && label ? labelId : undefined)\r\n }\r\n aria-describedby={describedByIds}\r\n aria-errormessage={errorMessageId}\r\n aria-invalid={isError || undefined}\r\n aria-required={required || undefined}\r\n aria-readonly={readOnly || undefined}\r\n aria-disabled={disabled || undefined}\r\n autoComplete={autocomplete ? \"on\" : \"off\"}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n style={{\r\n height,\r\n resize: resizable ? undefined : \"none\",\r\n }}\r\n className={classMap.textInput}\r\n data-testid={`${testId}-input`}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={classMap.customResizeHandle}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-resize-handle`}\r\n />\r\n\r\n {ariaDescription && (\r\n <span\r\n id={descriptionId}\r\n className=\"sr_only\"\r\n data-testid={`${testId}-description`}\r\n >\r\n {ariaDescription}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {helperText && (\r\n <div\r\n id={helperTextId}\r\n className={classMap.helperText}\r\n data-testid={`${testId}-helper-text`}\r\n >\r\n {helperText}\r\n </div>\r\n )}\r\n\r\n {errorMessage && (\r\n <div\r\n id={internalErrorId}\r\n className={classMap.errorMessage}\r\n role={isError ? \"alert\" : undefined}\r\n data-testid={`${testId}-error-message`}\r\n >\r\n {errorMessage}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextAreaBase.displayName = \"TextAreaBase\";\r\n\r\nexport default TextAreaBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport TextAreaBase from \"../TextAreaBase\";\r\nimport type { TextAreaProps } from \"../TextArea.types\";\r\nimport styles from \"./TextArea.module.scss\";\r\n\r\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (props, ref) => {\r\n return <TextAreaBase {...props} ref={ref} classMap={styles} />;\r\n }\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport default TextArea;\r\n"],"names":["label","outline","disabled"],"mappings":"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"}
|
package/dist/next/TextArea.js
CHANGED
|
@@ -5,7 +5,7 @@ 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 IconButton = require("./IconButton-
|
|
8
|
+
const IconButton = require("./IconButton-4ySBEhn1.cjs");
|
|
9
9
|
const EyeIcon = (props) => /* @__PURE__ */ require$$2.jsxs(
|
|
10
10
|
"svg",
|
|
11
11
|
{
|
|
@@ -341,4 +341,4 @@ const TextInput = React.forwardRef((props, ref) => {
|
|
|
341
341
|
});
|
|
342
342
|
TextInput.displayName = "TextInput";
|
|
343
343
|
exports.TextInput = TextInput;
|
|
344
|
-
//# sourceMappingURL=TextInput-
|
|
344
|
+
//# sourceMappingURL=TextInput-7nN8g78V.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput-cfBWD6de.cjs","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: 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 strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\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=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\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 EyeIcon;\r\n","const EyeSlashIcon: 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=\"M19.5 16L17.0248 12.6038\"\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=\"M12 17.5V14\"\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=\"M4.5 16L6.96895 12.6124\"\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=\"M3 8C6.6 16 17.4 16 21 8\"\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 EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\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 TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n label,\r\n labelPosition = \"top\",\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n onChange,\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n outline = false,\r\n classMap,\r\n IconButton,\r\n className = \"\",\r\n srOnlyText,\r\n \"data-testid\": testId = \"text-input\",\r\n ...rest\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n type: typeProp,\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-readonly\": ariaReadOnly,\r\n \"aria-disabled\": ariaDisabled,\r\n \"aria-description\": ariaDescription,\r\n \"aria-activedescendant\": ariaActiveDescendant,\r\n \"aria-haspopup\": ariaHasPopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement> & {\r\n role?: React.AriaRole;\r\n \"aria-label\"?: string;\r\n \"aria-labelledby\"?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean;\r\n \"aria-readonly\"?: boolean;\r\n \"aria-disabled\"?: boolean;\r\n \"aria-description\"?: string;\r\n \"aria-activedescendant\"?: string;\r\n \"aria-haspopup\"?:\r\n | boolean\r\n | \"false\"\r\n | \"true\"\r\n | \"menu\"\r\n | \"listbox\"\r\n | \"tree\"\r\n | \"grid\"\r\n | \"dialog\";\r\n \"aria-expanded\"?: boolean;\r\n \"aria-controls\"?: string;\r\n };\r\n\r\n const inputId = idProp || autoId;\r\n const hasLabel = Boolean(label);\r\n\r\n const generatedDescriptionId = srOnlyText\r\n ? `${inputId}-sr-description`\r\n : undefined;\r\n\r\n const computedAriaDescribedBy =\r\n [ariaDescribedBy, generatedDescriptionId].filter(Boolean).join(\" \") ||\r\n undefined;\r\n\r\n const computedAriaLabel = hasLabel\r\n ? undefined\r\n : ariaLabel || placeholder || \"Text input\";\r\n\r\n const computedPlaceholder = hasLabel ? \" \" : placeholder;\r\n\r\n const inputType = password\r\n ? showPassword\r\n ? \"text\"\r\n : \"password\"\r\n : typeProp || \"text\";\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const computedAriaInvalid = ariaInvalid ?? (isError || undefined);\r\n const computedAriaRequired = ariaRequired ?? (required || undefined);\r\n const computedAriaReadOnly = ariaReadOnly ?? (readOnly || undefined);\r\n const computedAriaDisabled = ariaDisabled ?? (disabled || undefined);\r\n\r\n const togglePasswordVisibility = () => {\r\n setShowPassword((prev) => !prev);\r\n };\r\n\r\n const containerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n ),\r\n [classMap, labelPosition],\r\n );\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textInput,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const inputClasses = useMemo(\r\n () => combineClassNames(classMap.textInput, outline && classMap.outline),\r\n [classMap, outline],\r\n );\r\n\r\n const iconClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconContainer,\r\n classMap[theme],\r\n disabled && classMap.disabled,\r\n ),\r\n [classMap, theme, disabled],\r\n );\r\n\r\n return (\r\n <div className={containerClass} data-testid={testId}>\r\n {label && (\r\n <label\r\n htmlFor={inputId}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={iconClasses}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={inputType}\r\n className={inputClasses}\r\n placeholder={computedPlaceholder}\r\n role={role}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={computedAriaDescribedBy}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-readonly={computedAriaReadOnly}\r\n aria-disabled={computedAriaDisabled}\r\n aria-description={ariaDescription}\r\n aria-activedescendant={ariaActiveDescendant}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n autoComplete={computedAutoComplete}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={`${testId}-input`}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n />\r\n )}\r\n\r\n {srOnlyText && (\r\n <span\r\n id={generatedDescriptionId}\r\n className={classMap.srOnly || \"sr_only\"}\r\n data-testid={`${testId}-sr-only-text`}\r\n >\r\n {srOnlyText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\n\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["jsxs","jsx","forwardRef","label","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","IconButton","useState","useId","useMemo","combineClassNames","capitalize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextInput-7nN8g78V.cjs","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: 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 strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\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=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\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 EyeIcon;\r\n","const EyeSlashIcon: 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=\"M19.5 16L17.0248 12.6038\"\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=\"M12 17.5V14\"\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=\"M4.5 16L6.96895 12.6124\"\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=\"M3 8C6.6 16 17.4 16 21 8\"\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 EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\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 TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n label,\r\n labelPosition = \"top\",\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n onChange,\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n outline = false,\r\n classMap,\r\n IconButton,\r\n className = \"\",\r\n srOnlyText,\r\n \"data-testid\": testId = \"text-input\",\r\n ...rest\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n type: typeProp,\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-readonly\": ariaReadOnly,\r\n \"aria-disabled\": ariaDisabled,\r\n \"aria-description\": ariaDescription,\r\n \"aria-activedescendant\": ariaActiveDescendant,\r\n \"aria-haspopup\": ariaHasPopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement> & {\r\n role?: React.AriaRole;\r\n \"aria-label\"?: string;\r\n \"aria-labelledby\"?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean;\r\n \"aria-readonly\"?: boolean;\r\n \"aria-disabled\"?: boolean;\r\n \"aria-description\"?: string;\r\n \"aria-activedescendant\"?: string;\r\n \"aria-haspopup\"?:\r\n | boolean\r\n | \"false\"\r\n | \"true\"\r\n | \"menu\"\r\n | \"listbox\"\r\n | \"tree\"\r\n | \"grid\"\r\n | \"dialog\";\r\n \"aria-expanded\"?: boolean;\r\n \"aria-controls\"?: string;\r\n };\r\n\r\n const inputId = idProp || autoId;\r\n const hasLabel = Boolean(label);\r\n\r\n const generatedDescriptionId = srOnlyText\r\n ? `${inputId}-sr-description`\r\n : undefined;\r\n\r\n const computedAriaDescribedBy =\r\n [ariaDescribedBy, generatedDescriptionId].filter(Boolean).join(\" \") ||\r\n undefined;\r\n\r\n const computedAriaLabel = hasLabel\r\n ? undefined\r\n : ariaLabel || placeholder || \"Text input\";\r\n\r\n const computedPlaceholder = hasLabel ? \" \" : placeholder;\r\n\r\n const inputType = password\r\n ? showPassword\r\n ? \"text\"\r\n : \"password\"\r\n : typeProp || \"text\";\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const computedAriaInvalid = ariaInvalid ?? (isError || undefined);\r\n const computedAriaRequired = ariaRequired ?? (required || undefined);\r\n const computedAriaReadOnly = ariaReadOnly ?? (readOnly || undefined);\r\n const computedAriaDisabled = ariaDisabled ?? (disabled || undefined);\r\n\r\n const togglePasswordVisibility = () => {\r\n setShowPassword((prev) => !prev);\r\n };\r\n\r\n const containerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n ),\r\n [classMap, labelPosition],\r\n );\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textInput,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const inputClasses = useMemo(\r\n () => combineClassNames(classMap.textInput, outline && classMap.outline),\r\n [classMap, outline],\r\n );\r\n\r\n const iconClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconContainer,\r\n classMap[theme],\r\n disabled && classMap.disabled,\r\n ),\r\n [classMap, theme, disabled],\r\n );\r\n\r\n return (\r\n <div className={containerClass} data-testid={testId}>\r\n {label && (\r\n <label\r\n htmlFor={inputId}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={iconClasses}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={inputType}\r\n className={inputClasses}\r\n placeholder={computedPlaceholder}\r\n role={role}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={computedAriaDescribedBy}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-readonly={computedAriaReadOnly}\r\n aria-disabled={computedAriaDisabled}\r\n aria-description={ariaDescription}\r\n aria-activedescendant={ariaActiveDescendant}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n autoComplete={computedAutoComplete}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={`${testId}-input`}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n />\r\n )}\r\n\r\n {srOnlyText && (\r\n <span\r\n id={generatedDescriptionId}\r\n className={classMap.srOnly || \"sr_only\"}\r\n data-testid={`${testId}-sr-only-text`}\r\n >\r\n {srOnlyText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\n\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["jsxs","jsx","forwardRef","label","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","IconButton","useState","useId","useMemo","combineClassNames","capitalize"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef, useState, useId, useMemo } from "react";
|
|
3
3
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
|
-
import {
|
|
5
|
+
import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow } from "./boreal-style-config-DsaRlxmw.js";
|
|
6
6
|
/* empty css */
|
|
7
|
-
import { I as IconButton } from "./IconButton-
|
|
7
|
+
import { I as IconButton } from "./IconButton-BWw3WPaS.js";
|
|
8
8
|
const EyeIcon = (props) => /* @__PURE__ */ jsxs(
|
|
9
9
|
"svg",
|
|
10
10
|
{
|
|
@@ -342,4 +342,4 @@ TextInput.displayName = "TextInput";
|
|
|
342
342
|
export {
|
|
343
343
|
TextInput as T
|
|
344
344
|
};
|
|
345
|
-
//# sourceMappingURL=TextInput-
|
|
345
|
+
//# sourceMappingURL=TextInput-yUHEWbdK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput-3ZD3ccXf.js","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: 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 strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\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=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\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 EyeIcon;\r\n","const EyeSlashIcon: 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=\"M19.5 16L17.0248 12.6038\"\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=\"M12 17.5V14\"\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=\"M4.5 16L6.96895 12.6124\"\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=\"M3 8C6.6 16 17.4 16 21 8\"\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 EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\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 TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n label,\r\n labelPosition = \"top\",\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n onChange,\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n outline = false,\r\n classMap,\r\n IconButton,\r\n className = \"\",\r\n srOnlyText,\r\n \"data-testid\": testId = \"text-input\",\r\n ...rest\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n type: typeProp,\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-readonly\": ariaReadOnly,\r\n \"aria-disabled\": ariaDisabled,\r\n \"aria-description\": ariaDescription,\r\n \"aria-activedescendant\": ariaActiveDescendant,\r\n \"aria-haspopup\": ariaHasPopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement> & {\r\n role?: React.AriaRole;\r\n \"aria-label\"?: string;\r\n \"aria-labelledby\"?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean;\r\n \"aria-readonly\"?: boolean;\r\n \"aria-disabled\"?: boolean;\r\n \"aria-description\"?: string;\r\n \"aria-activedescendant\"?: string;\r\n \"aria-haspopup\"?:\r\n | boolean\r\n | \"false\"\r\n | \"true\"\r\n | \"menu\"\r\n | \"listbox\"\r\n | \"tree\"\r\n | \"grid\"\r\n | \"dialog\";\r\n \"aria-expanded\"?: boolean;\r\n \"aria-controls\"?: string;\r\n };\r\n\r\n const inputId = idProp || autoId;\r\n const hasLabel = Boolean(label);\r\n\r\n const generatedDescriptionId = srOnlyText\r\n ? `${inputId}-sr-description`\r\n : undefined;\r\n\r\n const computedAriaDescribedBy =\r\n [ariaDescribedBy, generatedDescriptionId].filter(Boolean).join(\" \") ||\r\n undefined;\r\n\r\n const computedAriaLabel = hasLabel\r\n ? undefined\r\n : ariaLabel || placeholder || \"Text input\";\r\n\r\n const computedPlaceholder = hasLabel ? \" \" : placeholder;\r\n\r\n const inputType = password\r\n ? showPassword\r\n ? \"text\"\r\n : \"password\"\r\n : typeProp || \"text\";\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const computedAriaInvalid = ariaInvalid ?? (isError || undefined);\r\n const computedAriaRequired = ariaRequired ?? (required || undefined);\r\n const computedAriaReadOnly = ariaReadOnly ?? (readOnly || undefined);\r\n const computedAriaDisabled = ariaDisabled ?? (disabled || undefined);\r\n\r\n const togglePasswordVisibility = () => {\r\n setShowPassword((prev) => !prev);\r\n };\r\n\r\n const containerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n ),\r\n [classMap, labelPosition],\r\n );\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textInput,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const inputClasses = useMemo(\r\n () => combineClassNames(classMap.textInput, outline && classMap.outline),\r\n [classMap, outline],\r\n );\r\n\r\n const iconClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconContainer,\r\n classMap[theme],\r\n disabled && classMap.disabled,\r\n ),\r\n [classMap, theme, disabled],\r\n );\r\n\r\n return (\r\n <div className={containerClass} data-testid={testId}>\r\n {label && (\r\n <label\r\n htmlFor={inputId}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={iconClasses}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={inputType}\r\n className={inputClasses}\r\n placeholder={computedPlaceholder}\r\n role={role}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={computedAriaDescribedBy}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-readonly={computedAriaReadOnly}\r\n aria-disabled={computedAriaDisabled}\r\n aria-description={ariaDescription}\r\n aria-activedescendant={ariaActiveDescendant}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n autoComplete={computedAutoComplete}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={`${testId}-input`}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n />\r\n )}\r\n\r\n {srOnlyText && (\r\n <span\r\n id={generatedDescriptionId}\r\n className={classMap.srOnly || \"sr_only\"}\r\n data-testid={`${testId}-sr-only-text`}\r\n >\r\n {srOnlyText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\n\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["label","disabled","outline","IconButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextInput-yUHEWbdK.js","sources":["../../src/Icons/EyeIcon.tsx","../../src/Icons/EyeSlashIcon.tsx","../../src/components/TextInput/TextInputBase.tsx","../../src/components/TextInput/next/TextInput.tsx"],"sourcesContent":["const EyeIcon: 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 strokeWidth=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 13C6.6 5 17.4 5 21 13\"\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=\"M12 17C10.3431 17 9 15.6569 9 14C9 12.3431 10.3431 11 12 11C13.6569 11 15 12.3431 15 14C15 15.6569 13.6569 17 12 17Z\"\r\n fill=\"currentColor\"\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 EyeIcon;\r\n","const EyeSlashIcon: 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=\"M19.5 16L17.0248 12.6038\"\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=\"M12 17.5V14\"\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=\"M4.5 16L6.96895 12.6124\"\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=\"M3 8C6.6 16 17.4 16 21 8\"\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 EyeSlashIcon;\r\n","import {\r\n forwardRef,\r\n useState,\r\n useId,\r\n InputHTMLAttributes,\r\n useMemo,\r\n} from \"react\";\r\nimport { EyeIcon, EyeSlashIcon } from \"../../Icons\";\r\nimport { TextInputBaseProps } from \"./TextInput.types\";\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 TextInputBase = forwardRef<HTMLInputElement, TextInputBaseProps>(\r\n (\r\n {\r\n icon: Icon,\r\n label,\r\n labelPosition = \"top\",\r\n placeholder = \"Enter text\",\r\n password = false,\r\n readOnly = false,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n onChange,\r\n state = \"\",\r\n disabled = false,\r\n autocomplete = false,\r\n outline = false,\r\n classMap,\r\n IconButton,\r\n className = \"\",\r\n srOnlyText,\r\n \"data-testid\": testId = \"text-input\",\r\n ...rest\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const autoId = useId();\r\n\r\n const {\r\n id: idProp,\r\n required,\r\n autoComplete: autoCompleteProp,\r\n type: typeProp,\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-readonly\": ariaReadOnly,\r\n \"aria-disabled\": ariaDisabled,\r\n \"aria-description\": ariaDescription,\r\n \"aria-activedescendant\": ariaActiveDescendant,\r\n \"aria-haspopup\": ariaHasPopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n ...restInput\r\n } = rest as InputHTMLAttributes<HTMLInputElement> & {\r\n role?: React.AriaRole;\r\n \"aria-label\"?: string;\r\n \"aria-labelledby\"?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean;\r\n \"aria-readonly\"?: boolean;\r\n \"aria-disabled\"?: boolean;\r\n \"aria-description\"?: string;\r\n \"aria-activedescendant\"?: string;\r\n \"aria-haspopup\"?:\r\n | boolean\r\n | \"false\"\r\n | \"true\"\r\n | \"menu\"\r\n | \"listbox\"\r\n | \"tree\"\r\n | \"grid\"\r\n | \"dialog\";\r\n \"aria-expanded\"?: boolean;\r\n \"aria-controls\"?: string;\r\n };\r\n\r\n const inputId = idProp || autoId;\r\n const hasLabel = Boolean(label);\r\n\r\n const generatedDescriptionId = srOnlyText\r\n ? `${inputId}-sr-description`\r\n : undefined;\r\n\r\n const computedAriaDescribedBy =\r\n [ariaDescribedBy, generatedDescriptionId].filter(Boolean).join(\" \") ||\r\n undefined;\r\n\r\n const computedAriaLabel = hasLabel\r\n ? undefined\r\n : ariaLabel || placeholder || \"Text input\";\r\n\r\n const computedPlaceholder = hasLabel ? \" \" : placeholder;\r\n\r\n const inputType = password\r\n ? showPassword\r\n ? \"text\"\r\n : \"password\"\r\n : typeProp || \"text\";\r\n\r\n const isError = state === \"error\";\r\n\r\n const computedAutoComplete =\r\n autoCompleteProp ??\r\n (autocomplete ? (password ? \"current-password\" : \"on\") : \"off\");\r\n\r\n const computedAriaInvalid = ariaInvalid ?? (isError || undefined);\r\n const computedAriaRequired = ariaRequired ?? (required || undefined);\r\n const computedAriaReadOnly = ariaReadOnly ?? (readOnly || undefined);\r\n const computedAriaDisabled = ariaDisabled ?? (disabled || undefined);\r\n\r\n const togglePasswordVisibility = () => {\r\n setShowPassword((prev) => !prev);\r\n };\r\n\r\n const containerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.container,\r\n classMap[`label${capitalize(labelPosition)}`],\r\n ),\r\n [classMap, labelPosition],\r\n );\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.textInput,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, outline, disabled, shadow, rounding, className],\r\n );\r\n\r\n const inputClasses = useMemo(\r\n () => combineClassNames(classMap.textInput, outline && classMap.outline),\r\n [classMap, outline],\r\n );\r\n\r\n const iconClasses = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconContainer,\r\n classMap[theme],\r\n disabled && classMap.disabled,\r\n ),\r\n [classMap, theme, disabled],\r\n );\r\n\r\n return (\r\n <div className={containerClass} data-testid={testId}>\r\n {label && (\r\n <label\r\n htmlFor={inputId}\r\n className={classMap.label}\r\n data-testid={`${testId}-label`}\r\n >\r\n {label}\r\n </label>\r\n )}\r\n\r\n <div className={wrapperClass} data-testid={`${testId}-wrapper`}>\r\n {Icon && (\r\n <div\r\n className={iconClasses}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon aria-hidden={true} />\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n type={inputType}\r\n className={inputClasses}\r\n placeholder={computedPlaceholder}\r\n role={role}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={computedAriaDescribedBy}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-readonly={computedAriaReadOnly}\r\n aria-disabled={computedAriaDisabled}\r\n aria-description={ariaDescription}\r\n aria-activedescendant={ariaActiveDescendant}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n autoComplete={computedAutoComplete}\r\n onChange={(e) => onChange?.(e.currentTarget.value, e)}\r\n readOnly={readOnly}\r\n disabled={disabled}\r\n required={required}\r\n data-testid={`${testId}-input`}\r\n {...restInput}\r\n />\r\n\r\n {password && (\r\n <IconButton\r\n type=\"button\"\r\n className={classMap.togglePassword}\r\n onClick={togglePasswordVisibility}\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={showPassword ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={showPassword}\r\n data-testid={`${testId}-password-toggle`}\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n />\r\n )}\r\n\r\n {srOnlyText && (\r\n <span\r\n id={generatedDescriptionId}\r\n className={classMap.srOnly || \"sr_only\"}\r\n data-testid={`${testId}-sr-only-text`}\r\n >\r\n {srOnlyText}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTextInputBase.displayName = \"TextInputBase\";\r\n\r\nexport default TextInputBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport styles from \"./TextInput.module.scss\";\r\nimport { TextInputProps } from \"../TextInput.types\";\r\nimport TextInputBase from \"../TextInputBase\";\r\nimport { IconButton } from \"@/index.next\";\r\n\r\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>((props, ref) => {\r\n return (\r\n <TextInputBase\r\n {...props}\r\n IconButton={IconButton}\r\n ref={ref}\r\n classMap={styles}\r\n />\r\n );\r\n});\r\n\r\nTextInput.displayName = \"TextInput\";\r\nexport default TextInput;\r\n"],"names":["label","disabled","outline","IconButton"],"mappings":"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"}
|
package/dist/next/TextInput.js
CHANGED
|
@@ -193,7 +193,7 @@ const ThemeProvider = ({ children, customSchemes = [], initialScheme }) => {
|
|
|
193
193
|
);
|
|
194
194
|
};
|
|
195
195
|
export {
|
|
196
|
-
|
|
197
|
-
|
|
196
|
+
ThemeContext as T,
|
|
197
|
+
ThemeProvider as a
|
|
198
198
|
};
|
|
199
|
-
//# sourceMappingURL=ThemeContext-
|
|
199
|
+
//# sourceMappingURL=ThemeContext-zE_shsx6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeContext-nYSJ_G6L.js","sources":["../../src/context/ThemeContext.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/**\r\n * ---------------------------------------------------------------------\r\n * ThemeProvider.tsx\r\n * ---------------------------------------------------------------------\r\n * Provides a React context for managing and applying color schemes\r\n * dynamically across the Boreal UI system.\r\n *\r\n * Responsibilities:\r\n * - Registers any custom color schemes at runtime\r\n * - Sets the active color scheme based on `localStorage` or fallback default\r\n * - Dynamically updates CSS custom properties (`--*`) on the `:root`\r\n * to reflect the selected theme's color values\r\n * - Ensures text color contrast by calculating luminance and WCAG ratios\r\n *\r\n * Includes:\r\n * - Lightness adjustment utilities for generating `*-light` and `*-hover` variants\r\n * - Contrast checking and accessible text color fallbacks\r\n * - `ThemeContext` with `selectedScheme` index and setter\r\n *\r\n * Hooks:\r\n * - `useEffect` to register schemes and sync saved theme index\r\n * - `useEffect` to apply all computed color variables to `document.documentElement`\r\n *\r\n * Usage:\r\n * ```tsx\r\n * <ThemeProvider customSchemes={[customTheme]}>\r\n * <App />\r\n * </ThemeProvider>\r\n * ```\r\n *\r\n * Access via context:\r\n * ```ts\r\n * const { selectedScheme, setSelectedScheme } = useContext(ThemeContext);\r\n * ```\r\n */\r\n\r\nimport React, {\r\n createContext,\r\n useState,\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n} from \"react\";\r\nimport {\r\n getAllColorSchemes,\r\n registerColorScheme,\r\n} from \"../styles/colorSchemeRegistry\";\r\nimport { getDefaultColorSchemeName } from \"../config/boreal-style-config\";\r\nimport { colorSchemes } from \"../styles/Themes\";\r\nimport { ThemeContextType, ThemeProviderProps } from \"./ThemeContext.types\";\r\n\r\nexport const ThemeContext = createContext<ThemeContextType | undefined>(\r\n undefined,\r\n);\r\n\r\nconst fallbackIndex = colorSchemes.findIndex(\r\n (scheme) => scheme.name === getDefaultColorSchemeName(),\r\n);\r\nconst defaultIndex = fallbackIndex !== -1 ? fallbackIndex : 0;\r\n\r\nconst STORAGE_KEY = \"boreal:selectedScheme\";\r\n\r\nfunction shallowEqualByName(a: { name: string }[], b: { name: string }[]) {\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].name !== b[i].name) return false;\r\n }\r\n return true;\r\n}\r\n\r\nconst ThemeProvider: React.FC<\r\n ThemeProviderProps & { initialScheme?: number }\r\n> = ({ children, customSchemes = [], initialScheme }) => {\r\n if (fallbackIndex === -1 && process.env.NODE_ENV === \"development\") {\r\n console.warn(\r\n `Default color scheme \"${getDefaultColorSchemeName()}\" not found. Falling back to index 0.`,\r\n );\r\n }\r\n\r\n const [selectedScheme, setSelectedScheme] = useState<number>(() => {\r\n if (typeof initialScheme === \"number\") return initialScheme;\r\n\r\n if (typeof window !== \"undefined\") {\r\n try {\r\n const saved = localStorage.getItem(STORAGE_KEY);\r\n if (saved != null) return parseInt(saved, 10);\r\n } catch {\r\n console.error(\"Failed to load saved theme index\");\r\n }\r\n }\r\n return defaultIndex;\r\n });\r\n\r\n const [schemes, setSchemes] = useState(() => getAllColorSchemes());\r\n\r\n const customSchemesKey = useMemo(\r\n () => JSON.stringify(customSchemes ?? []),\r\n [customSchemes],\r\n );\r\n\r\n useEffect(() => {\r\n try {\r\n const parsed = JSON.parse(customSchemesKey);\r\n if (Array.isArray(parsed) && parsed.length > 0) {\r\n registerColorScheme(parsed);\r\n }\r\n } catch {\r\n console.error(\"Failed to parse custom schemes\");\r\n }\r\n\r\n const next = getAllColorSchemes();\r\n setSchemes((prev) => (shallowEqualByName(prev, next) ? prev : next));\r\n }, [customSchemesKey]);\r\n\r\n useLayoutEffect(() => {\r\n const allSchemes = getAllColorSchemes();\r\n const scheme = allSchemes[selectedScheme] ?? allSchemes[defaultIndex];\r\n\r\n const {\r\n primaryColor,\r\n secondaryColor,\r\n tertiaryColor,\r\n quaternaryColor,\r\n backgroundColor,\r\n forceTextColor,\r\n } = scheme;\r\n\r\n const hexToHSL = (hex: string) => {\r\n const r = parseInt(hex.slice(1, 3), 16) / 255;\r\n const g = parseInt(hex.slice(3, 5), 16) / 255;\r\n const b = parseInt(hex.slice(5, 7), 16) / 255;\r\n const max = Math.max(r, g, b),\r\n min = Math.min(r, g, b);\r\n let h = 0,\r\n s = 0;\r\n const l = (max + min) / 2;\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: Math.round(h * 360),\r\n s: Math.round(s * 100),\r\n l: Math.round(l * 100),\r\n };\r\n };\r\n\r\n const hslToHex = (h: number, s: number, l: number): string => {\r\n s /= 100;\r\n l /= 100;\r\n const k = (n: number) => (n + h / 30) % 12;\r\n const a = s * Math.min(l, 1 - l);\r\n const f = (n: number) =>\r\n Math.round(\r\n 255 *\r\n (l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))),\r\n );\r\n return `#${[f(0), f(8), f(4)].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n };\r\n\r\n const adjustLightness = (hex: string, percent: number): string => {\r\n const { h, s, l } = hexToHSL(hex);\r\n return hslToHex(h, s, Math.min(100, Math.max(0, l + percent)));\r\n };\r\n\r\n const relativeLuminance = (hex: string): number => {\r\n const rgb = [1, 3, 5].map((i) => {\r\n const c = parseInt(hex.slice(i, i + 2), 16) / 255;\r\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\r\n });\r\n return 0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2];\r\n };\r\n\r\n const contrastRatio = (a: string, b: string): number => {\r\n const lum1 = relativeLuminance(a);\r\n const lum2 = relativeLuminance(b);\r\n const lighter = Math.max(lum1, lum2);\r\n const darker = Math.min(lum1, lum2);\r\n return (lighter + 0.05) / (darker + 0.05);\r\n };\r\n\r\n const getAccessibleTextColor = (bg: string): string =>\r\n contrastRatio(bg, \"#000000\") >= 4.5 ? \"#000000\" : \"#FFFFFF\";\r\n\r\n const getAdaptiveBorderColor = (\r\n backgroundHex: string,\r\n amountLight = 14,\r\n amountDark = 14,\r\n ): string => {\r\n const { h, s, l } = hexToHSL(backgroundHex);\r\n\r\n const nextLightness =\r\n l >= 50 ? Math.max(0, l - amountDark) : Math.min(100, l + amountLight);\r\n\r\n const nextSaturation = s > 8 ? Math.max(0, s - 8) : s;\r\n\r\n return hslToHex(h, nextSaturation, nextLightness);\r\n };\r\n\r\n const vars = {\r\n \"--primary-color\": primaryColor,\r\n \"--primary-color-light\": adjustLightness(primaryColor, 10),\r\n \"--primary-color-hover\": adjustLightness(primaryColor, -10),\r\n \"--text-color-primary\":\r\n forceTextColor ?? getAccessibleTextColor(primaryColor),\r\n \"--text-color-primary-contrast\":\r\n forceTextColor ?? getAccessibleTextColor(backgroundColor),\r\n \"--text-color\": getAccessibleTextColor(backgroundColor),\r\n \"--text-color-light\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n 20,\r\n ),\r\n \"--text-color-lighter\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n 40,\r\n ),\r\n \"--secondary-color\": secondaryColor,\r\n \"--secondary-color-light\": adjustLightness(secondaryColor, 10),\r\n \"--secondary-color-hover\": adjustLightness(secondaryColor, -10),\r\n \"--text-color-secondary\": getAccessibleTextColor(secondaryColor),\r\n\r\n \"--tertiary-color\": tertiaryColor,\r\n \"--tertiary-color-light\": adjustLightness(tertiaryColor, 10),\r\n \"--tertiary-color-hover\": adjustLightness(tertiaryColor, -10),\r\n \"--text-color-tertiary\": getAccessibleTextColor(tertiaryColor),\r\n\r\n \"--quaternary-color\": quaternaryColor,\r\n \"--quaternary-color-light\": adjustLightness(quaternaryColor, 10),\r\n \"--quaternary-color-hover\": adjustLightness(quaternaryColor, -10),\r\n \"--text-color-quaternary\": getAccessibleTextColor(quaternaryColor),\r\n\r\n \"--background-color\": backgroundColor,\r\n \"--background-color-dark\": adjustLightness(backgroundColor, -10),\r\n \"--background-color-darker\": adjustLightness(backgroundColor, -25),\r\n \"--background-color-light\": adjustLightness(backgroundColor, 10),\r\n \"--background-color-lighter\": adjustLightness(backgroundColor, 20),\r\n\r\n \"--link-color\": getAccessibleTextColor(backgroundColor),\r\n \"--link-hover-color\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n -20,\r\n ),\r\n \"--link-hover-color-primary\": adjustLightness(primaryColor, -10),\r\n \"--link-hover-color-secondary\": adjustLightness(secondaryColor, -10),\r\n \"--link-hover-color-tertiary\": adjustLightness(tertiaryColor, -10),\r\n \"--link-hover-color-quaternary\": adjustLightness(quaternaryColor, -10),\r\n\r\n \"--focus-outline-color\": getAccessibleTextColor(backgroundColor),\r\n \"--divider-color\": getAdaptiveBorderColor(backgroundColor),\r\n \"--border-color\": getAdaptiveBorderColor(backgroundColor),\r\n \"--border-color-subtle\": getAdaptiveBorderColor(backgroundColor, 10, 10),\r\n \"--border-color-strong\": getAdaptiveBorderColor(backgroundColor, 20, 20),\r\n } as const;\r\n\r\n const rootStyle = document.documentElement.style;\r\n for (const [k, v] of Object.entries(vars)) rootStyle.setProperty(k, v);\r\n\r\n try {\r\n localStorage.setItem(STORAGE_KEY, String(selectedScheme));\r\n } catch {\r\n console.error(\"Failed to save theme index\");\r\n }\r\n }, [selectedScheme]);\r\n\r\n return (\r\n <ThemeContext.Provider\r\n value={{ selectedScheme, setSelectedScheme, schemes }}\r\n >\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n};\r\n\r\nexport default ThemeProvider;\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeContext-zE_shsx6.js","sources":["../../src/context/ThemeContext.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/**\r\n * ---------------------------------------------------------------------\r\n * ThemeProvider.tsx\r\n * ---------------------------------------------------------------------\r\n * Provides a React context for managing and applying color schemes\r\n * dynamically across the Boreal UI system.\r\n *\r\n * Responsibilities:\r\n * - Registers any custom color schemes at runtime\r\n * - Sets the active color scheme based on `localStorage` or fallback default\r\n * - Dynamically updates CSS custom properties (`--*`) on the `:root`\r\n * to reflect the selected theme's color values\r\n * - Ensures text color contrast by calculating luminance and WCAG ratios\r\n *\r\n * Includes:\r\n * - Lightness adjustment utilities for generating `*-light` and `*-hover` variants\r\n * - Contrast checking and accessible text color fallbacks\r\n * - `ThemeContext` with `selectedScheme` index and setter\r\n *\r\n * Hooks:\r\n * - `useEffect` to register schemes and sync saved theme index\r\n * - `useEffect` to apply all computed color variables to `document.documentElement`\r\n *\r\n * Usage:\r\n * ```tsx\r\n * <ThemeProvider customSchemes={[customTheme]}>\r\n * <App />\r\n * </ThemeProvider>\r\n * ```\r\n *\r\n * Access via context:\r\n * ```ts\r\n * const { selectedScheme, setSelectedScheme } = useContext(ThemeContext);\r\n * ```\r\n */\r\n\r\nimport React, {\r\n createContext,\r\n useState,\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n} from \"react\";\r\nimport {\r\n getAllColorSchemes,\r\n registerColorScheme,\r\n} from \"../styles/colorSchemeRegistry\";\r\nimport { getDefaultColorSchemeName } from \"../config/boreal-style-config\";\r\nimport { colorSchemes } from \"../styles/Themes\";\r\nimport { ThemeContextType, ThemeProviderProps } from \"./ThemeContext.types\";\r\n\r\nexport const ThemeContext = createContext<ThemeContextType | undefined>(\r\n undefined,\r\n);\r\n\r\nconst fallbackIndex = colorSchemes.findIndex(\r\n (scheme) => scheme.name === getDefaultColorSchemeName(),\r\n);\r\nconst defaultIndex = fallbackIndex !== -1 ? fallbackIndex : 0;\r\n\r\nconst STORAGE_KEY = \"boreal:selectedScheme\";\r\n\r\nfunction shallowEqualByName(a: { name: string }[], b: { name: string }[]) {\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n for (let i = 0; i < a.length; i++) {\r\n if (a[i].name !== b[i].name) return false;\r\n }\r\n return true;\r\n}\r\n\r\nconst ThemeProvider: React.FC<\r\n ThemeProviderProps & { initialScheme?: number }\r\n> = ({ children, customSchemes = [], initialScheme }) => {\r\n if (fallbackIndex === -1 && process.env.NODE_ENV === \"development\") {\r\n console.warn(\r\n `Default color scheme \"${getDefaultColorSchemeName()}\" not found. Falling back to index 0.`,\r\n );\r\n }\r\n\r\n const [selectedScheme, setSelectedScheme] = useState<number>(() => {\r\n if (typeof initialScheme === \"number\") return initialScheme;\r\n\r\n if (typeof window !== \"undefined\") {\r\n try {\r\n const saved = localStorage.getItem(STORAGE_KEY);\r\n if (saved != null) return parseInt(saved, 10);\r\n } catch {\r\n console.error(\"Failed to load saved theme index\");\r\n }\r\n }\r\n return defaultIndex;\r\n });\r\n\r\n const [schemes, setSchemes] = useState(() => getAllColorSchemes());\r\n\r\n const customSchemesKey = useMemo(\r\n () => JSON.stringify(customSchemes ?? []),\r\n [customSchemes],\r\n );\r\n\r\n useEffect(() => {\r\n try {\r\n const parsed = JSON.parse(customSchemesKey);\r\n if (Array.isArray(parsed) && parsed.length > 0) {\r\n registerColorScheme(parsed);\r\n }\r\n } catch {\r\n console.error(\"Failed to parse custom schemes\");\r\n }\r\n\r\n const next = getAllColorSchemes();\r\n setSchemes((prev) => (shallowEqualByName(prev, next) ? prev : next));\r\n }, [customSchemesKey]);\r\n\r\n useLayoutEffect(() => {\r\n const allSchemes = getAllColorSchemes();\r\n const scheme = allSchemes[selectedScheme] ?? allSchemes[defaultIndex];\r\n\r\n const {\r\n primaryColor,\r\n secondaryColor,\r\n tertiaryColor,\r\n quaternaryColor,\r\n backgroundColor,\r\n forceTextColor,\r\n } = scheme;\r\n\r\n const hexToHSL = (hex: string) => {\r\n const r = parseInt(hex.slice(1, 3), 16) / 255;\r\n const g = parseInt(hex.slice(3, 5), 16) / 255;\r\n const b = parseInt(hex.slice(5, 7), 16) / 255;\r\n const max = Math.max(r, g, b),\r\n min = Math.min(r, g, b);\r\n let h = 0,\r\n s = 0;\r\n const l = (max + min) / 2;\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return {\r\n h: Math.round(h * 360),\r\n s: Math.round(s * 100),\r\n l: Math.round(l * 100),\r\n };\r\n };\r\n\r\n const hslToHex = (h: number, s: number, l: number): string => {\r\n s /= 100;\r\n l /= 100;\r\n const k = (n: number) => (n + h / 30) % 12;\r\n const a = s * Math.min(l, 1 - l);\r\n const f = (n: number) =>\r\n Math.round(\r\n 255 *\r\n (l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))),\r\n );\r\n return `#${[f(0), f(8), f(4)].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\")}`;\r\n };\r\n\r\n const adjustLightness = (hex: string, percent: number): string => {\r\n const { h, s, l } = hexToHSL(hex);\r\n return hslToHex(h, s, Math.min(100, Math.max(0, l + percent)));\r\n };\r\n\r\n const relativeLuminance = (hex: string): number => {\r\n const rgb = [1, 3, 5].map((i) => {\r\n const c = parseInt(hex.slice(i, i + 2), 16) / 255;\r\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\r\n });\r\n return 0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2];\r\n };\r\n\r\n const contrastRatio = (a: string, b: string): number => {\r\n const lum1 = relativeLuminance(a);\r\n const lum2 = relativeLuminance(b);\r\n const lighter = Math.max(lum1, lum2);\r\n const darker = Math.min(lum1, lum2);\r\n return (lighter + 0.05) / (darker + 0.05);\r\n };\r\n\r\n const getAccessibleTextColor = (bg: string): string =>\r\n contrastRatio(bg, \"#000000\") >= 4.5 ? \"#000000\" : \"#FFFFFF\";\r\n\r\n const getAdaptiveBorderColor = (\r\n backgroundHex: string,\r\n amountLight = 14,\r\n amountDark = 14,\r\n ): string => {\r\n const { h, s, l } = hexToHSL(backgroundHex);\r\n\r\n const nextLightness =\r\n l >= 50 ? Math.max(0, l - amountDark) : Math.min(100, l + amountLight);\r\n\r\n const nextSaturation = s > 8 ? Math.max(0, s - 8) : s;\r\n\r\n return hslToHex(h, nextSaturation, nextLightness);\r\n };\r\n\r\n const vars = {\r\n \"--primary-color\": primaryColor,\r\n \"--primary-color-light\": adjustLightness(primaryColor, 10),\r\n \"--primary-color-hover\": adjustLightness(primaryColor, -10),\r\n \"--text-color-primary\":\r\n forceTextColor ?? getAccessibleTextColor(primaryColor),\r\n \"--text-color-primary-contrast\":\r\n forceTextColor ?? getAccessibleTextColor(backgroundColor),\r\n \"--text-color\": getAccessibleTextColor(backgroundColor),\r\n \"--text-color-light\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n 20,\r\n ),\r\n \"--text-color-lighter\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n 40,\r\n ),\r\n \"--secondary-color\": secondaryColor,\r\n \"--secondary-color-light\": adjustLightness(secondaryColor, 10),\r\n \"--secondary-color-hover\": adjustLightness(secondaryColor, -10),\r\n \"--text-color-secondary\": getAccessibleTextColor(secondaryColor),\r\n\r\n \"--tertiary-color\": tertiaryColor,\r\n \"--tertiary-color-light\": adjustLightness(tertiaryColor, 10),\r\n \"--tertiary-color-hover\": adjustLightness(tertiaryColor, -10),\r\n \"--text-color-tertiary\": getAccessibleTextColor(tertiaryColor),\r\n\r\n \"--quaternary-color\": quaternaryColor,\r\n \"--quaternary-color-light\": adjustLightness(quaternaryColor, 10),\r\n \"--quaternary-color-hover\": adjustLightness(quaternaryColor, -10),\r\n \"--text-color-quaternary\": getAccessibleTextColor(quaternaryColor),\r\n\r\n \"--background-color\": backgroundColor,\r\n \"--background-color-dark\": adjustLightness(backgroundColor, -10),\r\n \"--background-color-darker\": adjustLightness(backgroundColor, -25),\r\n \"--background-color-light\": adjustLightness(backgroundColor, 10),\r\n \"--background-color-lighter\": adjustLightness(backgroundColor, 20),\r\n\r\n \"--link-color\": getAccessibleTextColor(backgroundColor),\r\n \"--link-hover-color\": adjustLightness(\r\n getAccessibleTextColor(backgroundColor),\r\n -20,\r\n ),\r\n \"--link-hover-color-primary\": adjustLightness(primaryColor, -10),\r\n \"--link-hover-color-secondary\": adjustLightness(secondaryColor, -10),\r\n \"--link-hover-color-tertiary\": adjustLightness(tertiaryColor, -10),\r\n \"--link-hover-color-quaternary\": adjustLightness(quaternaryColor, -10),\r\n\r\n \"--focus-outline-color\": getAccessibleTextColor(backgroundColor),\r\n \"--divider-color\": getAdaptiveBorderColor(backgroundColor),\r\n \"--border-color\": getAdaptiveBorderColor(backgroundColor),\r\n \"--border-color-subtle\": getAdaptiveBorderColor(backgroundColor, 10, 10),\r\n \"--border-color-strong\": getAdaptiveBorderColor(backgroundColor, 20, 20),\r\n } as const;\r\n\r\n const rootStyle = document.documentElement.style;\r\n for (const [k, v] of Object.entries(vars)) rootStyle.setProperty(k, v);\r\n\r\n try {\r\n localStorage.setItem(STORAGE_KEY, String(selectedScheme));\r\n } catch {\r\n console.error(\"Failed to save theme index\");\r\n }\r\n }, [selectedScheme]);\r\n\r\n return (\r\n <ThemeContext.Provider\r\n value={{ selectedScheme, setSelectedScheme, schemes }}\r\n >\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n};\r\n\r\nexport default ThemeProvider;\r\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
|
-
import { d as getDefaultTheme,
|
|
5
|
+
import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow } from "./boreal-style-config-DsaRlxmw.js";
|
|
6
6
|
const timeline = "_timeline_l5scm_85";
|
|
7
7
|
const horizontal = "_horizontal_l5scm_109";
|
|
8
8
|
const item = "_item_l5scm_123";
|
|
@@ -220,4 +220,4 @@ Timeline.displayName = "Timeline";
|
|
|
220
220
|
export {
|
|
221
221
|
Timeline as T
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=Timeline-
|
|
223
|
+
//# sourceMappingURL=Timeline-BTsKMULd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timeline-
|
|
1
|
+
{"version":3,"file":"Timeline-BTsKMULd.js","sources":["../../src/components/Timeline/TimelineBase.tsx","../../src/components/Timeline/next/Timeline.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\r\nimport { TimelineProps } from \"./Timeline.types\";\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 TimelineBase: React.FC<\r\n TimelineProps & { classMap: Record<string, string> }\r\n> = ({\r\n items,\r\n orientation = \"vertical\",\r\n \"aria-label\": ariaLabel = \"Timeline\",\r\n \"aria-label\": ariaLabelOverride,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n role = \"list\",\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n classMap,\r\n className,\r\n \"data-testid\": testId = \"timeline\",\r\n ...rest\r\n}) => {\r\n const outerWrapper = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.timeline,\r\n classMap[orientation],\r\n classMap[theme],\r\n className,\r\n ),\r\n [classMap, orientation, theme, className],\r\n );\r\n\r\n const itemClassName = useMemo(\r\n () =>\r\n combineClassNames(classMap.item, classMap[orientation], classMap[theme]),\r\n [classMap, orientation, theme],\r\n );\r\n\r\n const markerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.marker,\r\n classMap[theme],\r\n classMap[orientation],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n ),\r\n [classMap, theme, orientation, shadow],\r\n );\r\n\r\n const contentClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.content,\r\n classMap[orientation],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n ),\r\n [classMap, orientation, shadow, rounding],\r\n );\r\n\r\n const setSize = items.length;\r\n\r\n return (\r\n <ul\r\n className={outerWrapper}\r\n data-testid={testId}\r\n role={role}\r\n aria-label={ariaLabelledBy ? undefined : (ariaLabelOverride ?? ariaLabel)}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n {items.map((item, index) => {\r\n const IconComponent = item.icon;\r\n const itemTestId = `${testId}-item-${index}`;\r\n const labelId = `${itemTestId}-title`;\r\n const descriptionId = item.description\r\n ? `${itemTestId}-description`\r\n : undefined;\r\n const dateId = item.date ? `${itemTestId}-date` : undefined;\r\n const hasTitle = Boolean(item.title);\r\n\r\n let dateTimeAttr: string | undefined;\r\n if (item.date) {\r\n const dateObj = new Date(item.date);\r\n if (!isNaN(dateObj.getTime())) {\r\n dateTimeAttr = dateObj.toISOString();\r\n }\r\n }\r\n\r\n const describedBy =\r\n [dateId, descriptionId].filter(Boolean).join(\" \") || undefined;\r\n\r\n return (\r\n <li\r\n key={index}\r\n role=\"listitem\"\r\n className={itemClassName}\r\n data-testid={itemTestId}\r\n aria-labelledby={hasTitle ? labelId : undefined}\r\n aria-label={!hasTitle ? `Timeline item ${index + 1}` : undefined}\r\n aria-describedby={describedBy}\r\n aria-posinset={index + 1}\r\n aria-setsize={setSize}\r\n >\r\n <div\r\n className={markerClassName}\r\n data-testid={`${itemTestId}-marker`}\r\n aria-hidden={true}\r\n >\r\n {IconComponent ? (\r\n <div\r\n className={classMap.icon}\r\n data-testid={`${itemTestId}-icon`}\r\n aria-hidden={true}\r\n >\r\n <IconComponent aria-hidden={true} />\r\n </div>\r\n ) : (\r\n <div\r\n className={classMap.dot}\r\n data-testid={`${itemTestId}-dot`}\r\n aria-hidden={true}\r\n />\r\n )}\r\n </div>\r\n\r\n <div\r\n className={contentClassName}\r\n data-testid={`${itemTestId}-content`}\r\n >\r\n {hasTitle && (\r\n <h3\r\n id={labelId}\r\n className={classMap.title}\r\n data-testid={`${itemTestId}-title`}\r\n >\r\n {item.title}\r\n </h3>\r\n )}\r\n\r\n {item.date && (\r\n <p\r\n id={dateId}\r\n className={classMap.date}\r\n data-testid={`${itemTestId}-date`}\r\n >\r\n <time dateTime={dateTimeAttr}>{item.date}</time>\r\n </p>\r\n )}\r\n\r\n {item.description && (\r\n <p\r\n id={descriptionId}\r\n className={classMap.description}\r\n data-testid={`${itemTestId}-description`}\r\n >\r\n {item.description}\r\n </p>\r\n )}\r\n </div>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n};\r\n\r\nTimelineBase.displayName = \"TimelineBase\";\r\nexport default TimelineBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport styles from \"./Timeline.module.scss\";\r\nimport TimelineBase from \"../TimelineBase\";\r\nimport { TimelineProps } from \"../Timeline.types\";\r\n\r\nconst Timeline: React.FC<TimelineProps> = (props) => {\r\n return <TimelineBase {...props} classMap={styles} />;\r\n};\r\nTimeline.displayName = \"Timeline\";\r\nexport default Timeline;\r\n"],"names":["item"],"mappings":"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"}
|
package/dist/next/Timeline.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef, useId, useMemo } from "react";
|
|
3
3
|
import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
|
|
4
4
|
import { c as capitalize } from "./capitalize-C0TSQSPh.js";
|
|
5
|
-
import {
|
|
5
|
+
import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize } from "./boreal-style-config-DsaRlxmw.js";
|
|
6
6
|
const container = "_container_9odur_85";
|
|
7
7
|
const label = "_label_9odur_101";
|
|
8
8
|
const toggle = "_toggle_9odur_120";
|
|
@@ -187,4 +187,4 @@ Toggle.displayName = "Toggle";
|
|
|
187
187
|
export {
|
|
188
188
|
Toggle as T
|
|
189
189
|
};
|
|
190
|
-
//# sourceMappingURL=Toggle-
|
|
190
|
+
//# sourceMappingURL=Toggle-BomUbOZa.js.map
|