@techzyapp/ui-library 1.0.42 → 1.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -14
- package/dist/{Accordion-B4vdZXIu.cjs → Accordion-CFyeLfPT.cjs} +2 -2
- package/dist/{Accordion-B4vdZXIu.cjs.map → Accordion-CFyeLfPT.cjs.map} +1 -1
- package/dist/{Accordion-DhFZ25KV.js → Accordion-DOrTQJB9.js} +2 -2
- package/dist/{Accordion-DhFZ25KV.js.map → Accordion-DOrTQJB9.js.map} +1 -1
- package/dist/AdminRoot-9KE3ll-D.js +101 -0
- package/dist/AdminRoot-9KE3ll-D.js.map +1 -0
- package/dist/AdminRoot-BMzHo0n7.cjs +2 -0
- package/dist/AdminRoot-BMzHo0n7.cjs.map +1 -0
- package/dist/Alert-BFfzpPNd.js +70 -0
- package/dist/{Alert-D6oBxBdP.js.map → Alert-BFfzpPNd.js.map} +1 -1
- package/dist/Alert-DS8TzpIS.cjs +2 -0
- package/dist/{Alert-C8BBxL_7.cjs.map → Alert-DS8TzpIS.cjs.map} +1 -1
- package/dist/{AuthLayout-q8pbCGdt.js → AuthLayout-BI1wLuDl.js} +2 -2
- package/dist/{AuthLayout-q8pbCGdt.js.map → AuthLayout-BI1wLuDl.js.map} +1 -1
- package/dist/{AuthLayout-exuNQicH.cjs → AuthLayout-Bzlsvicf.cjs} +2 -2
- package/dist/{AuthLayout-exuNQicH.cjs.map → AuthLayout-Bzlsvicf.cjs.map} +1 -1
- package/dist/{Avatar-l48Ice6t.cjs → Avatar-BBqX1732.cjs} +2 -2
- package/dist/{Avatar-l48Ice6t.cjs.map → Avatar-BBqX1732.cjs.map} +1 -1
- package/dist/{Avatar-ClcmN0ba.js → Avatar-CaYyv5wk.js} +2 -2
- package/dist/{Avatar-ClcmN0ba.js.map → Avatar-CaYyv5wk.js.map} +1 -1
- package/dist/{AvatarGroup-l-KV3wdl.js → AvatarGroup-6fhm-van.js} +2 -2
- package/dist/{AvatarGroup-l-KV3wdl.js.map → AvatarGroup-6fhm-van.js.map} +1 -1
- package/dist/{AvatarGroup-CuvFX4di.cjs → AvatarGroup-DrkzAt1-.cjs} +2 -2
- package/dist/{AvatarGroup-CuvFX4di.cjs.map → AvatarGroup-DrkzAt1-.cjs.map} +1 -1
- package/dist/Breadcrumbs-CloqFpp1.js +34 -0
- package/dist/{Breadcrumbs-cXET6OM5.js.map → Breadcrumbs-CloqFpp1.js.map} +1 -1
- package/dist/Breadcrumbs-N2-sZWW5.cjs +2 -0
- package/dist/{Breadcrumbs-B-olYVdw.cjs.map → Breadcrumbs-N2-sZWW5.cjs.map} +1 -1
- package/dist/Button-5LQtDA9d.js +72 -0
- package/dist/{Button-0ZgdNjX-.js.map → Button-5LQtDA9d.js.map} +1 -1
- package/dist/Button-Bxztlybi.cjs +2 -0
- package/dist/{Button-CwrDiZek.cjs.map → Button-Bxztlybi.cjs.map} +1 -1
- package/dist/{Calendar-CxzdnzdK.js → Calendar-BIKo_aus.js} +5 -5
- package/dist/{Calendar-CxzdnzdK.js.map → Calendar-BIKo_aus.js.map} +1 -1
- package/dist/{Calendar-d3CX5UJp.cjs → Calendar-CsBgaKZ-.cjs} +2 -2
- package/dist/{Calendar-d3CX5UJp.cjs.map → Calendar-CsBgaKZ-.cjs.map} +1 -1
- package/dist/{Card-CxnUoWsi.cjs → Card-Csn3FaMl.cjs} +2 -2
- package/dist/{Card-CxnUoWsi.cjs.map → Card-Csn3FaMl.cjs.map} +1 -1
- package/dist/{Card-CjqStov5.js → Card-DMwQ7rMk.js} +4 -4
- package/dist/{Card-CjqStov5.js.map → Card-DMwQ7rMk.js.map} +1 -1
- package/dist/Chip-BdCZ44I8.cjs +2 -0
- package/dist/{Chip-BkU3yx6G.cjs.map → Chip-BdCZ44I8.cjs.map} +1 -1
- package/dist/Chip-C7IkFuM1.js +92 -0
- package/dist/{Chip-CzJjbaKx.js.map → Chip-C7IkFuM1.js.map} +1 -1
- package/dist/ChoiceCardGroup-Cj_YFj6C.cjs +2 -0
- package/dist/{ChoiceCardGroup-C7Eengyd.cjs.map → ChoiceCardGroup-Cj_YFj6C.cjs.map} +1 -1
- package/dist/ChoiceCardGroup-D37XREKV.js +180 -0
- package/dist/{ChoiceCardGroup-q0yN-TeQ.js.map → ChoiceCardGroup-D37XREKV.js.map} +1 -1
- package/dist/CodeBlock-BnXxxqAW.cjs +2 -0
- package/dist/{CodeBlock-DRBQ_S5t.cjs.map → CodeBlock-BnXxxqAW.cjs.map} +1 -1
- package/dist/CodeBlock-C10JN6DR.js +96 -0
- package/dist/{CodeBlock-BHcvQrs9.js.map → CodeBlock-C10JN6DR.js.map} +1 -1
- package/dist/{ColorPicker-BzCEMN7B.cjs → ColorPicker-CVddGc-n.cjs} +2 -2
- package/dist/{ColorPicker-BzCEMN7B.cjs.map → ColorPicker-CVddGc-n.cjs.map} +1 -1
- package/dist/{ColorPicker-BQKFdTNr.js → ColorPicker-z8_-77LO.js} +3 -3
- package/dist/{ColorPicker-BQKFdTNr.js.map → ColorPicker-z8_-77LO.js.map} +1 -1
- package/dist/{ColorPickerPanel-kl2jUix-.cjs → ColorPickerPanel-DJY6-EqO.cjs} +2 -2
- package/dist/{ColorPickerPanel-kl2jUix-.cjs.map → ColorPickerPanel-DJY6-EqO.cjs.map} +1 -1
- package/dist/{ColorPickerPanel-DKTKC9KH.js → ColorPickerPanel-y4A2LLLf.js} +3 -3
- package/dist/{ColorPickerPanel-DKTKC9KH.js.map → ColorPickerPanel-y4A2LLLf.js.map} +1 -1
- package/dist/{ColorRamp-n7muILK3.cjs → ColorRamp-DvRsdOWy.cjs} +2 -2
- package/dist/{ColorRamp-n7muILK3.cjs.map → ColorRamp-DvRsdOWy.cjs.map} +1 -1
- package/dist/{ColorRamp-yfMyJCyx.js → ColorRamp-Dvit8yoP.js} +2 -2
- package/dist/{ColorRamp-yfMyJCyx.js.map → ColorRamp-Dvit8yoP.js.map} +1 -1
- package/dist/{ConfigProvider-D61cpCz-.js → ConfigProvider-CYgmMH4j.js} +133 -126
- package/dist/ConfigProvider-CYgmMH4j.js.map +1 -0
- package/dist/ConfigProvider-Cf-awvZs.cjs +2 -0
- package/dist/ConfigProvider-Cf-awvZs.cjs.map +1 -0
- package/dist/{CopyButton-DlSi82gv.cjs → CopyButton-BOp7waEt.cjs} +2 -2
- package/dist/{CopyButton-DlSi82gv.cjs.map → CopyButton-BOp7waEt.cjs.map} +1 -1
- package/dist/{CopyButton-ecxn-ghi.js → CopyButton-_iMBE4q_.js} +4 -4
- package/dist/{CopyButton-ecxn-ghi.js.map → CopyButton-_iMBE4q_.js.map} +1 -1
- package/dist/DashedButton-BX8hfY1x.cjs +2 -0
- package/dist/{DashedButton-Dw7xHgIp.cjs.map → DashedButton-BX8hfY1x.cjs.map} +1 -1
- package/dist/DashedButton-wcmXTYBw.js +58 -0
- package/dist/{DashedButton-csz6Jt_K.js.map → DashedButton-wcmXTYBw.js.map} +1 -1
- package/dist/{DatePicker-BjZ_P21i.cjs → DatePicker-UQwpH-rw.cjs} +2 -2
- package/dist/{DatePicker-BjZ_P21i.cjs.map → DatePicker-UQwpH-rw.cjs.map} +1 -1
- package/dist/{DatePicker-CAGpJbDi.js → DatePicker-X5hZVSW6.js} +6 -6
- package/dist/{DatePicker-CAGpJbDi.js.map → DatePicker-X5hZVSW6.js.map} +1 -1
- package/dist/DatePicker.module-BaQyKOUM.cjs +2 -0
- package/dist/{DatePicker.module-BDtTsg8M.cjs.map → DatePicker.module-BaQyKOUM.cjs.map} +1 -1
- package/dist/DatePicker.module-DoywSvLu.js +138 -0
- package/dist/{DatePicker.module-CMMQyEhG.js.map → DatePicker.module-DoywSvLu.js.map} +1 -1
- package/dist/{DateTimePicker-BJmF0Su6.js → DateTimePicker-Ch1kUHEb.js} +9 -9
- package/dist/{DateTimePicker-BJmF0Su6.js.map → DateTimePicker-Ch1kUHEb.js.map} +1 -1
- package/dist/{DateTimePicker-DZqWQeUL.cjs → DateTimePicker-ClTZGMON.cjs} +2 -2
- package/dist/{DateTimePicker-DZqWQeUL.cjs.map → DateTimePicker-ClTZGMON.cjs.map} +1 -1
- package/dist/{DescriptionList-Knq5eCiY.js → DescriptionList-Cque-iYk.js} +69 -69
- package/dist/{DescriptionList-Knq5eCiY.js.map → DescriptionList-Cque-iYk.js.map} +1 -1
- package/dist/DescriptionList-IVAvgpEL.cjs +2 -0
- package/dist/{DescriptionList-CvPDn-kh.cjs.map → DescriptionList-IVAvgpEL.cjs.map} +1 -1
- package/dist/Dropdown-C_y9_dVn.cjs +2 -0
- package/dist/Dropdown-C_y9_dVn.cjs.map +1 -0
- package/dist/Dropdown-D-D_Z1Jo.js +154 -0
- package/dist/Dropdown-D-D_Z1Jo.js.map +1 -0
- package/dist/{EmptyState-CX1g47y_.cjs → EmptyState-C84B-E8a.cjs} +2 -2
- package/dist/{EmptyState-CX1g47y_.cjs.map → EmptyState-C84B-E8a.cjs.map} +1 -1
- package/dist/{EmptyState-Dqtpmtje.js → EmptyState-Yts_p-jZ.js} +3 -3
- package/dist/{EmptyState-Dqtpmtje.js.map → EmptyState-Yts_p-jZ.js.map} +1 -1
- package/dist/{ErrorBoundary-Dos7VLb-.js → ErrorBoundary-BgMOPle0.js} +3 -3
- package/dist/{ErrorBoundary-Dos7VLb-.js.map → ErrorBoundary-BgMOPle0.js.map} +1 -1
- package/dist/{ErrorBoundary-B8KwWXXp.cjs → ErrorBoundary-DtYswKp3.cjs} +2 -2
- package/dist/{ErrorBoundary-B8KwWXXp.cjs.map → ErrorBoundary-DtYswKp3.cjs.map} +1 -1
- package/dist/{ErrorState-CwCqd2PU.cjs → ErrorState-Aa8LVjkl.cjs} +2 -2
- package/dist/{ErrorState-CwCqd2PU.cjs.map → ErrorState-Aa8LVjkl.cjs.map} +1 -1
- package/dist/{ErrorState-KhzrGIJ-.js → ErrorState-BE9Rcmht.js} +8 -8
- package/dist/{ErrorState-KhzrGIJ-.js.map → ErrorState-BE9Rcmht.js.map} +1 -1
- package/dist/FileCard-Chfx0QdF.cjs +2 -0
- package/dist/{FileCard-DEc10T2G.cjs.map → FileCard-Chfx0QdF.cjs.map} +1 -1
- package/dist/{FileCard-SSuFS13E.js → FileCard-m3i_8yKR.js} +33 -33
- package/dist/{FileCard-SSuFS13E.js.map → FileCard-m3i_8yKR.js.map} +1 -1
- package/dist/FileUploader-B27Y4rak.js +706 -0
- package/dist/FileUploader-B27Y4rak.js.map +1 -0
- package/dist/FileUploader-DkvFO0N_.cjs +2 -0
- package/dist/FileUploader-DkvFO0N_.cjs.map +1 -0
- package/dist/{Flag-B1ZvZVXi.cjs → Flag-BvZB3295.cjs} +2 -2
- package/dist/{Flag-B1ZvZVXi.cjs.map → Flag-BvZB3295.cjs.map} +1 -1
- package/dist/{Flag-BEIqYQZg.js → Flag-C1HwnZXJ.js} +2 -2
- package/dist/{Flag-BEIqYQZg.js.map → Flag-C1HwnZXJ.js.map} +1 -1
- package/dist/{FullscreenToggle-I_In47BB.js → FullscreenToggle-B4ynXdCP.js} +4 -4
- package/dist/{FullscreenToggle-I_In47BB.js.map → FullscreenToggle-B4ynXdCP.js.map} +1 -1
- package/dist/{FullscreenToggle-Po769CoC.cjs → FullscreenToggle-CEFZQ5OC.cjs} +2 -2
- package/dist/{FullscreenToggle-Po769CoC.cjs.map → FullscreenToggle-CEFZQ5OC.cjs.map} +1 -1
- package/dist/Icon-B7DJn8Tw.js +5418 -0
- package/dist/Icon-B7DJn8Tw.js.map +1 -0
- package/dist/Icon-CBg21lKA.cjs +2 -0
- package/dist/Icon-CBg21lKA.cjs.map +1 -0
- package/dist/IconButton-EaExCXRq.js +68 -0
- package/dist/{IconButton-D9MCwRK_.js.map → IconButton-EaExCXRq.js.map} +1 -1
- package/dist/IconButton-wW1o4HHw.cjs +2 -0
- package/dist/{IconButton-CxSXEYce.cjs.map → IconButton-wW1o4HHw.cjs.map} +1 -1
- package/dist/ImageEditor-DTFQZ6ON.js +2709 -0
- package/dist/ImageEditor-DTFQZ6ON.js.map +1 -0
- package/dist/ImageEditor-D_HKfDbx.cjs +60 -0
- package/dist/ImageEditor-D_HKfDbx.cjs.map +1 -0
- package/dist/Link-BZjolIAF.js +48 -0
- package/dist/{Link-BQlvsu9V.js.map → Link-BZjolIAF.js.map} +1 -1
- package/dist/Link-CtttVM6w.cjs +2 -0
- package/dist/{Link-GZT51mKx.cjs.map → Link-CtttVM6w.cjs.map} +1 -1
- package/dist/{List-CKoNx21F.cjs → List-CLUXeaXS.cjs} +2 -2
- package/dist/{List-CKoNx21F.cjs.map → List-CLUXeaXS.cjs.map} +1 -1
- package/dist/{List-2Y3ktTcF.js → List-DS91CZUt.js} +2 -2
- package/dist/{List-2Y3ktTcF.js.map → List-DS91CZUt.js.map} +1 -1
- package/dist/ListItem-CguNjf-u.cjs +2 -0
- package/dist/{ListItem-DkCYXucd.cjs.map → ListItem-CguNjf-u.cjs.map} +1 -1
- package/dist/ListItem-Ezmdk7q-.js +76 -0
- package/dist/{ListItem-2Lr5_NRY.js.map → ListItem-Ezmdk7q-.js.map} +1 -1
- package/dist/{Loader-5zp2MPm5.cjs → Loader-DNR2_YHm.cjs} +2 -2
- package/dist/{Loader-5zp2MPm5.cjs.map → Loader-DNR2_YHm.cjs.map} +1 -1
- package/dist/{Loader-Bluu6z0-.js → Loader-D_Foo6Hj.js} +2 -2
- package/dist/{Loader-Bluu6z0-.js.map → Loader-D_Foo6Hj.js.map} +1 -1
- package/dist/{LocationPicker-CGHXTIml.cjs → LocationPicker-CdO37PKg.cjs} +2 -2
- package/dist/{LocationPicker-CGHXTIml.cjs.map → LocationPicker-CdO37PKg.cjs.map} +1 -1
- package/dist/{LocationPicker-hULpHBVG.js → LocationPicker-DGbnbTW9.js} +8 -8
- package/dist/{LocationPicker-hULpHBVG.js.map → LocationPicker-DGbnbTW9.js.map} +1 -1
- package/dist/Modal-1rIBMvKH.js +154 -0
- package/dist/Modal-1rIBMvKH.js.map +1 -0
- package/dist/Modal-Du-uVpYw.cjs +2 -0
- package/dist/Modal-Du-uVpYw.cjs.map +1 -0
- package/dist/MultiSelect-BoqunsM9.js +219 -0
- package/dist/{MultiSelect-CHLMpim4.js.map → MultiSelect-BoqunsM9.js.map} +1 -1
- package/dist/MultiSelect-lAAaD0uL.cjs +2 -0
- package/dist/{MultiSelect-BdPvjiTj.cjs.map → MultiSelect-lAAaD0uL.cjs.map} +1 -1
- package/dist/{NumberField-C-FZ-uRI.cjs → NumberField-CyUA6eob.cjs} +2 -2
- package/dist/{NumberField-C-FZ-uRI.cjs.map → NumberField-CyUA6eob.cjs.map} +1 -1
- package/dist/{NumberField-BlpFmetF.js → NumberField-DHFGNQjZ.js} +4 -4
- package/dist/{NumberField-BlpFmetF.js.map → NumberField-DHFGNQjZ.js.map} +1 -1
- package/dist/OtpField-CIy5OtXI.cjs +2 -0
- package/dist/{OtpField-Drjy2wwq.cjs.map → OtpField-CIy5OtXI.cjs.map} +1 -1
- package/dist/{OtpField-D4-r7I0A.js → OtpField-pL9nj4AW.js} +61 -61
- package/dist/{OtpField-D4-r7I0A.js.map → OtpField-pL9nj4AW.js.map} +1 -1
- package/dist/Overlay-CywFQfjm.cjs +2 -0
- package/dist/Overlay-CywFQfjm.cjs.map +1 -0
- package/dist/Overlay-DiL0ZARH.js +60 -0
- package/dist/Overlay-DiL0ZARH.js.map +1 -0
- package/dist/{PageError-DyDj1wQZ.js → PageError-C5SO0mVJ.js} +5 -5
- package/dist/{PageError-DyDj1wQZ.js.map → PageError-C5SO0mVJ.js.map} +1 -1
- package/dist/{PageError-DXUOkE14.cjs → PageError-DbokLmOY.cjs} +2 -2
- package/dist/{PageError-DXUOkE14.cjs.map → PageError-DbokLmOY.cjs.map} +1 -1
- package/dist/{PageLayout-CoG0AaUs.cjs → PageLayout-B7ZDiNq8.cjs} +2 -2
- package/dist/{PageLayout-CoG0AaUs.cjs.map → PageLayout-B7ZDiNq8.cjs.map} +1 -1
- package/dist/{PageLayout-nsJa8CbT.js → PageLayout-Du-D6Pd4.js} +5 -5
- package/dist/{PageLayout-nsJa8CbT.js.map → PageLayout-Du-D6Pd4.js.map} +1 -1
- package/dist/{PageNotFound-BNNwMkwE.js → PageNotFound-DSkoMfed.js} +5 -5
- package/dist/{PageNotFound-BNNwMkwE.js.map → PageNotFound-DSkoMfed.js.map} +1 -1
- package/dist/{PageNotFound-CGSxT_n9.cjs → PageNotFound-DfNwdtgJ.cjs} +2 -2
- package/dist/{PageNotFound-CGSxT_n9.cjs.map → PageNotFound-DfNwdtgJ.cjs.map} +1 -1
- package/dist/Pagination-BH8ACaAC.js +139 -0
- package/dist/{Pagination-tuWRnGwR.js.map → Pagination-BH8ACaAC.js.map} +1 -1
- package/dist/Pagination-DO2Os4an.cjs +2 -0
- package/dist/{Pagination-CZtewveA.cjs.map → Pagination-DO2Os4an.cjs.map} +1 -1
- package/dist/{PaletteField-CTPl3D43.js → PaletteField-BFb0PQ-S.js} +3 -3
- package/dist/{PaletteField-CTPl3D43.js.map → PaletteField-BFb0PQ-S.js.map} +1 -1
- package/dist/{PaletteField-PDcu2vUp.cjs → PaletteField-BfvcJvGM.cjs} +2 -2
- package/dist/{PaletteField-PDcu2vUp.cjs.map → PaletteField-BfvcJvGM.cjs.map} +1 -1
- package/dist/PhoneField-C-wOm7g5.cjs +2 -0
- package/dist/{PhoneField-BPYg5ZHW.cjs.map → PhoneField-C-wOm7g5.cjs.map} +1 -1
- package/dist/{PhoneField-pdWDCszb.js → PhoneField-DFhGWgbK.js} +106 -106
- package/dist/{PhoneField-pdWDCszb.js.map → PhoneField-DFhGWgbK.js.map} +1 -1
- package/dist/{Popconfirm-cNpJmkuR.cjs → Popconfirm-_53vtMI0.cjs} +2 -2
- package/dist/{Popconfirm-cNpJmkuR.cjs.map → Popconfirm-_53vtMI0.cjs.map} +1 -1
- package/dist/{Popconfirm-CMVzLaC_.js → Popconfirm-o5da44ra.js} +4 -4
- package/dist/{Popconfirm-CMVzLaC_.js.map → Popconfirm-o5da44ra.js.map} +1 -1
- package/dist/{Progress-x12Rkh06.cjs → Progress-BSinoQ8t.cjs} +2 -2
- package/dist/{Progress-x12Rkh06.cjs.map → Progress-BSinoQ8t.cjs.map} +1 -1
- package/dist/{Progress-BNEFGn-O.js → Progress-CHzNwegP.js} +2 -2
- package/dist/{Progress-BNEFGn-O.js.map → Progress-CHzNwegP.js.map} +1 -1
- package/dist/{QrCode-CrNJZV_8.js → QrCode-C3hAfNP6.js} +2 -2
- package/dist/{QrCode-CrNJZV_8.js.map → QrCode-C3hAfNP6.js.map} +1 -1
- package/dist/{QrCode-TcQQE0h7.cjs → QrCode-tNNnsbHM.cjs} +2 -2
- package/dist/{QrCode-TcQQE0h7.cjs.map → QrCode-tNNnsbHM.cjs.map} +1 -1
- package/dist/{RemoveDialog-ARFp1UJM.js → RemoveDialog-CXy-PY-G.js} +6 -6
- package/dist/{RemoveDialog-ARFp1UJM.js.map → RemoveDialog-CXy-PY-G.js.map} +1 -1
- package/dist/{RemoveDialog-IWOAQFNK.cjs → RemoveDialog-Hi_gV-8A.cjs} +2 -2
- package/dist/{RemoveDialog-IWOAQFNK.cjs.map → RemoveDialog-Hi_gV-8A.cjs.map} +1 -1
- package/dist/RichTextEditor-BhVE1q4U.cjs +2 -0
- package/dist/RichTextEditor-BhVE1q4U.cjs.map +1 -0
- package/dist/RichTextEditor-DQz9jGD3.js +1011 -0
- package/dist/RichTextEditor-DQz9jGD3.js.map +1 -0
- package/dist/{RootLayout-CZ2GQ8XA.js → RootLayout-CjT5uHlt.js} +21 -21
- package/dist/RootLayout-CjT5uHlt.js.map +1 -0
- package/dist/{RootLayout-DStUP263.cjs → RootLayout-iSGY4MsS.cjs} +2 -2
- package/dist/RootLayout-iSGY4MsS.cjs.map +1 -0
- package/dist/Select-DVoL547R.cjs +2 -0
- package/dist/{Select-C2DIfuoB.cjs.map → Select-DVoL547R.cjs.map} +1 -1
- package/dist/{Select-KGsA8PbI.js → Select-DuLDLnnb.js} +47 -47
- package/dist/{Select-KGsA8PbI.js.map → Select-DuLDLnnb.js.map} +1 -1
- package/dist/Sidebar-DRQo4zAF.cjs +2 -0
- package/dist/{Sidebar-wK1_xaY_.cjs.map → Sidebar-DRQo4zAF.cjs.map} +1 -1
- package/dist/{Sidebar-_pcwxdd8.js → Sidebar-DvQmuBNK.js} +59 -59
- package/dist/{Sidebar-_pcwxdd8.js.map → Sidebar-DvQmuBNK.js.map} +1 -1
- package/dist/{Slider-Cpc5_dPl.js → Slider-D-QjclQJ.js} +2 -2
- package/dist/{Slider-Cpc5_dPl.js.map → Slider-D-QjclQJ.js.map} +1 -1
- package/dist/{Slider-CXAz9SUY.cjs → Slider-DxnCQRSH.cjs} +2 -2
- package/dist/{Slider-CXAz9SUY.cjs.map → Slider-DxnCQRSH.cjs.map} +1 -1
- package/dist/{SpeedDial-BT_boD06.cjs → SpeedDial-37OMwj9C.cjs} +2 -2
- package/dist/{SpeedDial-BT_boD06.cjs.map → SpeedDial-37OMwj9C.cjs.map} +1 -1
- package/dist/{SpeedDial-SMMfes9f.js → SpeedDial-BBQ9y6lm.js} +3 -3
- package/dist/{SpeedDial-SMMfes9f.js.map → SpeedDial-BBQ9y6lm.js.map} +1 -1
- package/dist/Stepper-CU5Y0kfj.js +168 -0
- package/dist/{Stepper-CR0Mlkq7.js.map → Stepper-CU5Y0kfj.js.map} +1 -1
- package/dist/Stepper-WqkfGPnQ.cjs +2 -0
- package/dist/{Stepper-BmA_DjTS.cjs.map → Stepper-WqkfGPnQ.cjs.map} +1 -1
- package/dist/{SwatchPicker-0gnOvv7U.cjs → SwatchPicker-DCjE0T80.cjs} +2 -2
- package/dist/{SwatchPicker-0gnOvv7U.cjs.map → SwatchPicker-DCjE0T80.cjs.map} +1 -1
- package/dist/{SwatchPicker-BZHRELA-.js → SwatchPicker-DS4WY2eM.js} +2 -2
- package/dist/{SwatchPicker-BZHRELA-.js.map → SwatchPicker-DS4WY2eM.js.map} +1 -1
- package/dist/{Table-D-F68lcm.js → Table-BECUUZtf.js} +346 -346
- package/dist/Table-BECUUZtf.js.map +1 -0
- package/dist/Table-BnlvrRMr.cjs +2 -0
- package/dist/Table-BnlvrRMr.cjs.map +1 -0
- package/dist/Tabs-BXAHddi7.js +193 -0
- package/dist/{Tabs-DP0aZ5TB.js.map → Tabs-BXAHddi7.js.map} +1 -1
- package/dist/Tabs-DiL1vNW3.cjs +2 -0
- package/dist/{Tabs-Cgp6D1WP.cjs.map → Tabs-DiL1vNW3.cjs.map} +1 -1
- package/dist/{TagsField-9nKu6ZW4.cjs → TagsField-BsV_6dff.cjs} +2 -2
- package/dist/{TagsField-9nKu6ZW4.cjs.map → TagsField-BsV_6dff.cjs.map} +1 -1
- package/dist/{TagsField-CcY9MTMw.js → TagsField-C1SgykAj.js} +5 -5
- package/dist/{TagsField-CcY9MTMw.js.map → TagsField-C1SgykAj.js.map} +1 -1
- package/dist/{TextField-C5MgCQIV.cjs → TextField-DUv689u2.cjs} +2 -2
- package/dist/{TextField-C5MgCQIV.cjs.map → TextField-DUv689u2.cjs.map} +1 -1
- package/dist/{TextField-0WvJsHhA.js → TextField-oZI7thoU.js} +4 -4
- package/dist/{TextField-0WvJsHhA.js.map → TextField-oZI7thoU.js.map} +1 -1
- package/dist/{ThemeToggle-DmCePuTy.js → ThemeToggle-5uHCUsX7.js} +4 -4
- package/dist/{ThemeToggle-DmCePuTy.js.map → ThemeToggle-5uHCUsX7.js.map} +1 -1
- package/dist/{ThemeToggle-BvcCxRpF.cjs → ThemeToggle-xn3roH0u.cjs} +2 -2
- package/dist/{ThemeToggle-BvcCxRpF.cjs.map → ThemeToggle-xn3roH0u.cjs.map} +1 -1
- package/dist/TimeColumns-By23LHZw.cjs +2 -0
- package/dist/{TimeColumns-Q-vsHFZU.cjs.map → TimeColumns-By23LHZw.cjs.map} +1 -1
- package/dist/TimeColumns-lO33mhX7.js +147 -0
- package/dist/{TimeColumns-WJRHQuFv.js.map → TimeColumns-lO33mhX7.js.map} +1 -1
- package/dist/{TimePicker-CvbQFzBf.cjs → TimePicker-BHFNH8LR.cjs} +2 -2
- package/dist/{TimePicker-CvbQFzBf.cjs.map → TimePicker-BHFNH8LR.cjs.map} +1 -1
- package/dist/{TimePicker-DJDuSxAg.js → TimePicker-Dl5p833O.js} +7 -7
- package/dist/{TimePicker-DJDuSxAg.js.map → TimePicker-Dl5p833O.js.map} +1 -1
- package/dist/Timeline-DOojNvLG.cjs +2 -0
- package/dist/Timeline-DOojNvLG.cjs.map +1 -0
- package/dist/Timeline-Dg03dwTN.js +87 -0
- package/dist/Timeline-Dg03dwTN.js.map +1 -0
- package/dist/Toaster-BPBFZiTr.js +64 -0
- package/dist/Toaster-BPBFZiTr.js.map +1 -0
- package/dist/Toaster-D4T89N1S.cjs +2 -0
- package/dist/Toaster-D4T89N1S.cjs.map +1 -0
- package/dist/ToggleButtonGroup-CGNRLxjg.cjs +2 -0
- package/dist/{ToggleButtonGroup-Ci_DFvdt.cjs.map → ToggleButtonGroup-CGNRLxjg.cjs.map} +1 -1
- package/dist/{ToggleButtonGroup-Mdskkjdh.js → ToggleButtonGroup-K6ZcrTZT.js} +37 -37
- package/dist/{ToggleButtonGroup-Mdskkjdh.js.map → ToggleButtonGroup-K6ZcrTZT.js.map} +1 -1
- package/dist/{TranslatedFields-DKXznBtD.js → TranslatedFields-Clsr84XC.js} +13 -13
- package/dist/{TranslatedFields-DKXznBtD.js.map → TranslatedFields-Clsr84XC.js.map} +1 -1
- package/dist/{TranslatedFields-CuK5KKzE.cjs → TranslatedFields-LdeJeHEp.cjs} +2 -2
- package/dist/{TranslatedFields-CuK5KKzE.cjs.map → TranslatedFields-LdeJeHEp.cjs.map} +1 -1
- package/dist/{UserCard-DbudGMvG.cjs → UserCard-CQOiWppq.cjs} +2 -2
- package/dist/{UserCard-DbudGMvG.cjs.map → UserCard-CQOiWppq.cjs.map} +1 -1
- package/dist/{UserCard-UG_Cwe-Y.js → UserCard-Cr75RwZb.js} +5 -5
- package/dist/{UserCard-UG_Cwe-Y.js.map → UserCard-Cr75RwZb.js.map} +1 -1
- package/dist/app/AdminRoot.d.cts +11 -3
- package/dist/app/AdminRoot.d.ts +11 -3
- package/dist/chunks/icons/{25-knEB8mSp.js → 25-BMMPtr_E.js} +4 -5
- package/dist/chunks/icons/{25-Dho_3EHD.cjs → 25-uATZNfXE.cjs} +1 -1
- package/dist/chunks/icons/{2b-CQJdcF1h.js → 2b-Brkug4c-.js} +10 -11
- package/dist/chunks/icons/{2b-C2_97u16.cjs → 2b-CIVRGp1R.cjs} +1 -1
- package/dist/chunks/icons/57-BLoIUlhF.js +27 -0
- package/dist/chunks/icons/57-D4zLdDZ1.cjs +1 -0
- package/dist/chunks/icons/{75-DqLkMUyj.cjs → 75-C2eJ2Tvr.cjs} +1 -1
- package/dist/chunks/icons/{75-D5RQw6IJ.js → 75-D16WojvG.js} +6 -7
- package/dist/chunks/icons/{7c-DpnA_JOJ.js → 7c-0j5Sno5_.js} +6 -7
- package/dist/chunks/icons/{7c-DEaFwltT.cjs → 7c-LUfAyp72.cjs} +1 -1
- package/dist/chunks/icons/8a-BJ_LOjmW.js +26 -0
- package/dist/chunks/icons/8a-CYkhOibI.cjs +1 -0
- package/dist/chunks/icons/97-Bx7FkkGJ.js +12 -0
- package/dist/chunks/icons/97-D7pUHrOX.cjs +1 -0
- package/dist/chunks/icons/{b7-BtHkI92Y.js → b7-DmmkevXf.js} +17 -18
- package/dist/chunks/icons/{b7-B-dB5jrV.cjs → b7-rI1GpsxW.cjs} +1 -1
- package/dist/chunks/icons/b8-De0yKEKv.js +28 -0
- package/dist/chunks/icons/b8-eR814BVJ.cjs +1 -0
- package/dist/chunks/icons/{b9-Bw942fE3.js → b9-CJO6ZdSw.js} +10 -11
- package/dist/chunks/icons/{b9-Be-J4RIp.cjs → b9-DZdWz9qg.cjs} +1 -1
- package/dist/chunks/icons/d5-BAPeb6B0.cjs +1 -0
- package/dist/chunks/icons/d5-BJJanOLe.js +21 -0
- package/dist/chunks/icons/d8--vRkIVal.js +19 -0
- package/dist/chunks/icons/d8-BfMys92X.cjs +1 -0
- package/dist/chunks/icons/dd-CARhkHmU.js +21 -0
- package/dist/chunks/icons/dd-D61yllMP.cjs +1 -0
- package/dist/components/Accordion/index.cjs +1 -1
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/AuthLayout/index.cjs +1 -1
- package/dist/components/AuthLayout/index.js +1 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ChoiceCard/index.cjs +1 -1
- package/dist/components/ChoiceCard/index.js +1 -1
- package/dist/components/CodeBlock/index.cjs +1 -1
- package/dist/components/CodeBlock/index.js +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/ColorRamp/index.cjs +1 -1
- package/dist/components/ColorRamp/index.js +1 -1
- package/dist/components/CopyButton/index.cjs +1 -1
- package/dist/components/CopyButton/index.js +1 -1
- package/dist/components/DashedButton/index.cjs +1 -1
- package/dist/components/DashedButton/index.js +1 -1
- package/dist/components/DatePicker/index.cjs +1 -1
- package/dist/components/DatePicker/index.js +1 -1
- package/dist/components/DateTimePicker/index.cjs +1 -1
- package/dist/components/DateTimePicker/index.js +1 -1
- package/dist/components/DescriptionList/index.cjs +1 -1
- package/dist/components/DescriptionList/index.js +1 -1
- package/dist/components/Dropdown/index.cjs +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/EmptyState/index.cjs +1 -1
- package/dist/components/EmptyState/index.js +1 -1
- package/dist/components/ErrorState/ErrorBoundary.d.cts +1 -1
- package/dist/components/ErrorState/ErrorBoundary.d.ts +1 -1
- package/dist/components/ErrorState/index.cjs +1 -1
- package/dist/components/ErrorState/index.js +2 -2
- package/dist/components/FileCard/index.cjs +1 -1
- package/dist/components/FileCard/index.js +1 -1
- package/dist/components/FileUploader/FileUploader.d.cts +33 -5
- package/dist/components/FileUploader/FileUploader.d.ts +33 -5
- package/dist/components/FileUploader/FileUploaderEditDialog.d.cts +8 -18
- package/dist/components/FileUploader/FileUploaderEditDialog.d.ts +8 -18
- package/dist/components/FileUploader/index.cjs +1 -1
- package/dist/components/FileUploader/index.js +1 -1
- package/dist/components/Flag/index.cjs +1 -1
- package/dist/components/Flag/index.js +1 -1
- package/dist/components/FullscreenToggle/index.cjs +1 -1
- package/dist/components/FullscreenToggle/index.js +1 -1
- package/dist/components/Icon/index.cjs +1 -1
- package/dist/components/Icon/index.js +1 -1
- package/dist/components/IconButton/index.cjs +1 -1
- package/dist/components/IconButton/index.js +1 -1
- package/dist/components/ImageEditor/CropShapeMenu.d.cts +17 -0
- package/dist/components/ImageEditor/CropShapeMenu.d.ts +17 -0
- package/dist/components/ImageEditor/EditorStage.d.cts +27 -0
- package/dist/components/ImageEditor/EditorStage.d.ts +27 -0
- package/dist/components/ImageEditor/FilterStrip.d.cts +14 -0
- package/dist/components/ImageEditor/FilterStrip.d.ts +14 -0
- package/dist/components/ImageEditor/ImageEditor.d.cts +30 -0
- package/dist/components/ImageEditor/ImageEditor.d.ts +30 -0
- package/dist/components/ImageEditor/ResizePanel.d.cts +19 -0
- package/dist/components/ImageEditor/ResizePanel.d.ts +19 -0
- package/dist/components/ImageEditor/RulerSlider.d.cts +37 -0
- package/dist/components/ImageEditor/RulerSlider.d.ts +37 -0
- package/dist/components/ImageEditor/core/affine.d.cts +11 -0
- package/dist/components/ImageEditor/core/affine.d.ts +11 -0
- package/dist/components/ImageEditor/core/editor.d.cts +69 -0
- package/dist/components/ImageEditor/core/editor.d.ts +69 -0
- package/dist/components/ImageEditor/core/geometry.d.cts +112 -0
- package/dist/components/ImageEditor/core/geometry.d.ts +112 -0
- package/dist/components/ImageEditor/core/load.d.cts +26 -0
- package/dist/components/ImageEditor/core/load.d.ts +26 -0
- package/dist/components/ImageEditor/core/matrix.d.cts +55 -0
- package/dist/components/ImageEditor/core/matrix.d.ts +55 -0
- package/dist/components/ImageEditor/core/pixels.d.cts +24 -0
- package/dist/components/ImageEditor/core/pixels.d.ts +24 -0
- package/dist/components/ImageEditor/core/redact.d.cts +37 -0
- package/dist/components/ImageEditor/core/redact.d.ts +37 -0
- package/dist/components/ImageEditor/core/render.d.cts +19 -0
- package/dist/components/ImageEditor/core/render.d.ts +19 -0
- package/dist/components/ImageEditor/core/scene.d.cts +47 -0
- package/dist/components/ImageEditor/core/scene.d.ts +47 -0
- package/dist/components/ImageEditor/core/spring.d.cts +17 -0
- package/dist/components/ImageEditor/core/spring.d.ts +17 -0
- package/dist/components/ImageEditor/core/types.d.cts +104 -0
- package/dist/components/ImageEditor/core/types.d.ts +104 -0
- package/dist/components/ImageEditor/core/webgl.d.cts +55 -0
- package/dist/components/ImageEditor/core/webgl.d.ts +55 -0
- package/dist/components/ImageEditor/index.cjs +2 -0
- package/dist/components/ImageEditor/index.cjs.map +1 -0
- package/dist/components/ImageEditor/index.d.cts +6 -0
- package/dist/components/ImageEditor/index.d.ts +6 -0
- package/dist/components/ImageEditor/index.js +9 -0
- package/dist/components/ImageEditor/index.js.map +1 -0
- package/dist/components/Link/index.cjs +1 -1
- package/dist/components/Link/index.js +1 -1
- package/dist/components/List/index.cjs +1 -1
- package/dist/components/List/index.js +2 -2
- package/dist/components/Loader/index.cjs +1 -1
- package/dist/components/Loader/index.js +1 -1
- package/dist/components/LocationPicker/index.cjs +1 -1
- package/dist/components/LocationPicker/index.js +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/MultiSelect/index.cjs +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/NumberField/index.cjs +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.js +1 -1
- package/dist/components/PageError/index.cjs +1 -1
- package/dist/components/PageError/index.js +1 -1
- package/dist/components/PageLayout/index.cjs +1 -1
- package/dist/components/PageLayout/index.js +1 -1
- package/dist/components/PageNotFound/index.cjs +1 -1
- package/dist/components/PageNotFound/index.js +1 -1
- package/dist/components/Pagination/index.cjs +1 -1
- package/dist/components/Pagination/index.js +1 -1
- package/dist/components/PaletteField/index.cjs +1 -1
- package/dist/components/PaletteField/index.js +1 -1
- package/dist/components/PhoneField/index.cjs +1 -1
- package/dist/components/PhoneField/index.js +1 -1
- package/dist/components/Popconfirm/index.cjs +1 -1
- package/dist/components/Popconfirm/index.js +1 -1
- package/dist/components/Progress/index.cjs +1 -1
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/QrCode/index.cjs +1 -1
- package/dist/components/QrCode/index.js +1 -1
- package/dist/components/RemoveDialog/index.cjs +1 -1
- package/dist/components/RemoveDialog/index.js +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.d.cts +3 -2
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +3 -2
- package/dist/components/RichTextEditor/index.cjs +1 -1
- package/dist/components/RichTextEditor/index.js +1 -1
- package/dist/components/RichTextEditor/nodes/ImageNode.d.cts +8 -5
- package/dist/components/RichTextEditor/nodes/ImageNode.d.ts +8 -5
- package/dist/components/RichTextEditor/nodes/VideoNode.d.cts +4 -4
- package/dist/components/RichTextEditor/nodes/VideoNode.d.ts +4 -4
- package/dist/components/RootLayout/RootLayout.d.cts +3 -2
- package/dist/components/RootLayout/RootLayout.d.ts +3 -2
- package/dist/components/RootLayout/index.cjs +1 -1
- package/dist/components/RootLayout/index.js +1 -1
- package/dist/components/Select/index.cjs +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Sidebar/index.cjs +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/Slider/index.cjs +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SpeedDial/index.cjs +1 -1
- package/dist/components/SpeedDial/index.js +1 -1
- package/dist/components/Stepper/index.cjs +1 -1
- package/dist/components/Stepper/index.js +1 -1
- package/dist/components/SwatchPicker/index.cjs +1 -1
- package/dist/components/SwatchPicker/index.js +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Tabs/index.cjs +1 -1
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/TagsField/index.cjs +1 -1
- package/dist/components/TagsField/index.js +1 -1
- package/dist/components/TextField/index.cjs +1 -1
- package/dist/components/TextField/index.js +1 -1
- package/dist/components/ThemeToggle/index.cjs +1 -1
- package/dist/components/ThemeToggle/index.js +1 -1
- package/dist/components/TimePicker/index.cjs +1 -1
- package/dist/components/TimePicker/index.js +1 -1
- package/dist/components/Timeline/Timeline.d.cts +16 -4
- package/dist/components/Timeline/Timeline.d.ts +16 -4
- package/dist/components/Timeline/TimelineItem.d.cts +12 -6
- package/dist/components/Timeline/TimelineItem.d.ts +12 -6
- package/dist/components/Timeline/index.cjs +1 -1
- package/dist/components/Timeline/index.d.cts +1 -1
- package/dist/components/Timeline/index.d.ts +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Timeline/timelineContext.d.cts +3 -2
- package/dist/components/Timeline/timelineContext.d.ts +3 -2
- package/dist/components/Toast/Toaster.d.cts +10 -4
- package/dist/components/Toast/Toaster.d.ts +10 -4
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/ToggleButton/index.cjs +1 -1
- package/dist/components/ToggleButton/index.js +1 -1
- package/dist/components/TranslatedFields/index.cjs +1 -1
- package/dist/components/TranslatedFields/index.js +1 -1
- package/dist/components/UserCard/index.cjs +1 -1
- package/dist/components/UserCard/index.js +1 -1
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/entries/app.cjs +1 -1
- package/dist/entries/app.js +1 -1
- package/dist/entries/components.cjs +1 -1
- package/dist/entries/components.js +164 -159
- package/dist/entries/components.js.map +1 -1
- package/dist/entries/i18n.cjs +1 -1
- package/dist/entries/i18n.js +2 -2
- package/dist/entries/icons.cjs +1 -1
- package/dist/entries/icons.js +1 -1
- package/dist/entries/theme.cjs +1 -1
- package/dist/entries/theme.d.cts +2 -2
- package/dist/entries/theme.d.ts +2 -2
- package/dist/entries/theme.js +14 -13
- package/dist/i18n/messages.d.cts +61 -4
- package/dist/i18n/messages.d.ts +61 -4
- package/dist/icons/names.d.cts +3 -3
- package/dist/icons/names.d.ts +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +246 -240
- package/dist/index.js.map +1 -1
- package/dist/{messages-BiRLMy1E.js → messages-BZYBZ3GR.js} +101 -44
- package/dist/messages-BZYBZ3GR.js.map +1 -0
- package/dist/{messages-C_fRRCg6.cjs → messages-CTHjpVJq.cjs} +9 -9
- package/dist/messages-CTHjpVJq.cjs.map +1 -0
- package/dist/theme/ConfigProvider.d.cts +20 -0
- package/dist/theme/ConfigProvider.d.ts +20 -0
- package/dist/theme/index.d.cts +2 -2
- package/dist/theme/index.d.ts +2 -2
- package/dist/{useHomeTo-DQj9tVZI.js → useHomeTo-Biyc-Un8.js} +2 -2
- package/dist/{useHomeTo-DQj9tVZI.js.map → useHomeTo-Biyc-Un8.js.map} +1 -1
- package/dist/{useHomeTo-BaM7kBDh.cjs → useHomeTo-D7wcH6aw.cjs} +2 -2
- package/dist/{useHomeTo-BaM7kBDh.cjs.map → useHomeTo-D7wcH6aw.cjs.map} +1 -1
- package/dist/{useOptionMenu-BKC1y6oj.cjs → useOptionMenu-B40OOVsO.cjs} +2 -2
- package/dist/{useOptionMenu-BKC1y6oj.cjs.map → useOptionMenu-B40OOVsO.cjs.map} +1 -1
- package/dist/{useOptionMenu-Dom1-bqm.js → useOptionMenu-BTt8t9SM.js} +6 -6
- package/dist/{useOptionMenu-Dom1-bqm.js.map → useOptionMenu-BTt8t9SM.js.map} +1 -1
- package/package.json +1 -6
- package/dist/AdminRoot-DufZpgdm.js +0 -100
- package/dist/AdminRoot-DufZpgdm.js.map +0 -1
- package/dist/AdminRoot-DwJ5jdXr.cjs +0 -2
- package/dist/AdminRoot-DwJ5jdXr.cjs.map +0 -1
- package/dist/Alert-C8BBxL_7.cjs +0 -2
- package/dist/Alert-D6oBxBdP.js +0 -70
- package/dist/Breadcrumbs-B-olYVdw.cjs +0 -2
- package/dist/Breadcrumbs-cXET6OM5.js +0 -34
- package/dist/Button-0ZgdNjX-.js +0 -72
- package/dist/Button-CwrDiZek.cjs +0 -2
- package/dist/Chip-BkU3yx6G.cjs +0 -2
- package/dist/Chip-CzJjbaKx.js +0 -92
- package/dist/ChoiceCardGroup-C7Eengyd.cjs +0 -2
- package/dist/ChoiceCardGroup-q0yN-TeQ.js +0 -180
- package/dist/CodeBlock-BHcvQrs9.js +0 -96
- package/dist/CodeBlock-DRBQ_S5t.cjs +0 -2
- package/dist/ConfigProvider-BaiTKZKC.cjs +0 -2
- package/dist/ConfigProvider-BaiTKZKC.cjs.map +0 -1
- package/dist/ConfigProvider-D61cpCz-.js.map +0 -1
- package/dist/DashedButton-Dw7xHgIp.cjs +0 -2
- package/dist/DashedButton-csz6Jt_K.js +0 -58
- package/dist/DatePicker.module-BDtTsg8M.cjs +0 -2
- package/dist/DatePicker.module-CMMQyEhG.js +0 -138
- package/dist/DescriptionList-CvPDn-kh.cjs +0 -2
- package/dist/Dropdown-CMjURWYd.cjs +0 -2
- package/dist/Dropdown-CMjURWYd.cjs.map +0 -1
- package/dist/Dropdown-CnDBlB02.js +0 -146
- package/dist/Dropdown-CnDBlB02.js.map +0 -1
- package/dist/FileCard-DEc10T2G.cjs +0 -2
- package/dist/FileUploader-D58_6kDA.cjs +0 -2
- package/dist/FileUploader-D58_6kDA.cjs.map +0 -1
- package/dist/FileUploader-DfYOBFa4.js +0 -707
- package/dist/FileUploader-DfYOBFa4.js.map +0 -1
- package/dist/Icon-B6lz-V0A.cjs +0 -2
- package/dist/Icon-B6lz-V0A.cjs.map +0 -1
- package/dist/Icon-D5TxgfCc.js +0 -5404
- package/dist/Icon-D5TxgfCc.js.map +0 -1
- package/dist/IconButton-CxSXEYce.cjs +0 -2
- package/dist/IconButton-D9MCwRK_.js +0 -68
- package/dist/Link-BQlvsu9V.js +0 -48
- package/dist/Link-GZT51mKx.cjs +0 -2
- package/dist/ListItem-2Lr5_NRY.js +0 -76
- package/dist/ListItem-DkCYXucd.cjs +0 -2
- package/dist/Modal-C6Zgwz_6.js +0 -206
- package/dist/Modal-C6Zgwz_6.js.map +0 -1
- package/dist/Modal-D9_OG53G.cjs +0 -2
- package/dist/Modal-D9_OG53G.cjs.map +0 -1
- package/dist/MultiSelect-BdPvjiTj.cjs +0 -2
- package/dist/MultiSelect-CHLMpim4.js +0 -219
- package/dist/OtpField-Drjy2wwq.cjs +0 -2
- package/dist/Pagination-CZtewveA.cjs +0 -2
- package/dist/Pagination-tuWRnGwR.js +0 -139
- package/dist/PhoneField-BPYg5ZHW.cjs +0 -2
- package/dist/RichTextEditor-C9jT2cLl.cjs +0 -2
- package/dist/RichTextEditor-C9jT2cLl.cjs.map +0 -1
- package/dist/RichTextEditor-DrwJUEYz.js +0 -916
- package/dist/RichTextEditor-DrwJUEYz.js.map +0 -1
- package/dist/RootLayout-CZ2GQ8XA.js.map +0 -1
- package/dist/RootLayout-DStUP263.cjs.map +0 -1
- package/dist/Select-C2DIfuoB.cjs +0 -2
- package/dist/Sidebar-wK1_xaY_.cjs +0 -2
- package/dist/Stepper-BmA_DjTS.cjs +0 -2
- package/dist/Stepper-CR0Mlkq7.js +0 -168
- package/dist/Table-BkjY1Lwt.cjs +0 -2
- package/dist/Table-BkjY1Lwt.cjs.map +0 -1
- package/dist/Table-D-F68lcm.js.map +0 -1
- package/dist/Tabs-Cgp6D1WP.cjs +0 -2
- package/dist/Tabs-DP0aZ5TB.js +0 -193
- package/dist/TimeColumns-Q-vsHFZU.cjs +0 -2
- package/dist/TimeColumns-WJRHQuFv.js +0 -147
- package/dist/Timeline-Cb1krSlo.js +0 -70
- package/dist/Timeline-Cb1krSlo.js.map +0 -1
- package/dist/Timeline-CmluHBIT.cjs +0 -2
- package/dist/Timeline-CmluHBIT.cjs.map +0 -1
- package/dist/Toaster-Bb5YEN5j.js +0 -63
- package/dist/Toaster-Bb5YEN5j.js.map +0 -1
- package/dist/Toaster-Dy1AonLa.cjs +0 -2
- package/dist/Toaster-Dy1AonLa.cjs.map +0 -1
- package/dist/ToggleButtonGroup-Ci_DFvdt.cjs +0 -2
- package/dist/chunks/icons/57-Bxh2lSz-.cjs +0 -1
- package/dist/chunks/icons/57-CkmrDM9A.js +0 -28
- package/dist/chunks/icons/8a-CThAqelS.js +0 -27
- package/dist/chunks/icons/8a-DRBAtpxY.cjs +0 -1
- package/dist/chunks/icons/97-J9NBhX2o.js +0 -14
- package/dist/chunks/icons/97-r2YXIQ_T.cjs +0 -1
- package/dist/chunks/icons/b8-CyIivk3C.cjs +0 -1
- package/dist/chunks/icons/b8-DcK0w8WM.js +0 -29
- package/dist/chunks/icons/d5-3fWtNlXW.js +0 -20
- package/dist/chunks/icons/d5-CoG_Hfw9.cjs +0 -1
- package/dist/chunks/icons/d8-DsebfeMy.cjs +0 -1
- package/dist/chunks/icons/d8-DtOvDDrr.js +0 -20
- package/dist/chunks/icons/dd-BXVES9Ib.js +0 -22
- package/dist/chunks/icons/dd-beaqCKss.cjs +0 -1
- package/dist/messages-BiRLMy1E.js.map +0 -1
- package/dist/messages-C_fRRCg6.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar-CxzdnzdK.js","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Calendar-BIKo_aus.js","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const o=require("react/jsx-runtime"),f=require("react"),j=require("clsx"),E=require("./Icon-
|
|
2
|
-
//# sourceMappingURL=Calendar-
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),f=require("react"),j=require("clsx"),E=require("./Icon-CBg21lKA.cjs"),L=require("./IconButton-wW1o4HHw.cjs"),r=require("./DatePicker.module-BaQyKOUM.cjs"),z=require("./ConfigProvider-Cf-awvZs.cjs");function T(n,s){if(n&&n.isSame(s,"month"))return n;const i=r.today();return i.isSame(s,"month")?i:s.startOf("month")}const A=3;function H({value:n,month:s,onMonthChange:i,onSelect:I,min:p,max:b,disabledDate:K,weekStartsOn:S,autoFocus:O,labelId:k}){const m=z.useT(),[l,N]=f.useState("day"),[a,u]=f.useState(()=>T(n,s)),h=f.useRef(null),d=f.useRef(!!O);f.useEffect(()=>{u(e=>e.isSame(s,"month")?e:T(n,s))},[s]),f.useEffect(()=>{var t,c;if(!d.current)return;d.current=!1;const e=(t=h.current)==null?void 0:t.querySelector('[tabindex="0"]');e==null||e.focus(),(c=e==null?void 0:e.scrollIntoView)==null||c.call(e,{block:"nearest"})},[a,l,s]);const R=e=>{d.current=!0,N(e)},y=e=>{d.current=!0,e.isSame(s,"month")||i(e.startOf("month")),u(e)},w=e=>{const t=a.add(e,"month");d.current=!0,u(t),i(t.startOf("month"))},D=e=>{let t=a.year()+e;p&&(t=Math.max(t,p.year())),b&&(t=Math.min(t,b.year()));const c=a.year(t);d.current=!0,u(c),i(c.startOf("month"))},q=e=>{const t=s.year(e);d.current=!0,u(t),i(t),N("month")},g=e=>{const t=s.month(e);d.current=!0,u(T(n,t)),i(t),N("day")},G=e=>{const t=(a.day()-S+7)%7;switch(e.key){case"ArrowLeft":e.preventDefault(),y(a.subtract(1,"day"));break;case"ArrowRight":e.preventDefault(),y(a.add(1,"day"));break;case"ArrowUp":e.preventDefault(),y(a.subtract(7,"day"));break;case"ArrowDown":e.preventDefault(),y(a.add(7,"day"));break;case"Home":e.preventDefault(),y(a.subtract(t,"day"));break;case"End":e.preventDefault(),y(a.add(6-t,"day"));break;case"PageUp":e.preventDefault(),y(a.subtract(1,e.shiftKey?"year":"month"));break;case"PageDown":e.preventDefault(),y(a.add(1,e.shiftKey?"year":"month"));break;case"Enter":case" ":e.preventDefault(),r.isDisabled(a,p,b,K)||I(r.toISO(a));break}},P=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),w(-1);break;case"ArrowRight":e.preventDefault(),w(1);break;case"ArrowUp":e.preventDefault(),w(-A);break;case"ArrowDown":e.preventDefault(),w(A);break;case"Enter":case" ":e.preventDefault(),g(a.month());break}},_=e=>{switch(e.key){case"ArrowLeft":e.preventDefault(),D(-1);break;case"ArrowRight":e.preventDefault(),D(1);break;case"ArrowUp":e.preventDefault(),D(-A);break;case"ArrowDown":e.preventDefault(),D(A);break;case"Enter":case" ":e.preventDefault(),q(a.year());break}},B=r.today(),Y=e=>m(`calendar.month${e}`),v=Array.from({length:7},(e,t)=>m(`calendar.weekday${(S+t)%7}`)),U=l==="day"?r.buildMonthGrid(s,S):[],$=l==="month"?Array.from({length:12},(e,t)=>Y(t)):[],M=l==="year"?r.yearList(p,b,s.year()):[];return o.jsxs("div",{className:r.styles.calendar,children:[o.jsxs("div",{className:r.styles.calHeader,children:[l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.prevMonth"),onClick:()=>i(s.subtract(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleLeft"})}),o.jsxs("div",{className:r.styles.calTitleGroup,children:[(l==="day"||l==="month")&&o.jsx("button",{type:"button",id:k,className:r.styles.calTitle,onClick:()=>R("year"),children:s.format("YYYY")}),l==="day"&&o.jsx("button",{type:"button",className:r.styles.calTitle,onClick:()=>R("month"),children:Y(s.month())}),l==="year"&&o.jsx("span",{id:k,className:r.styles.calTitleStatic,children:m("calendar.selectYear")})]}),l==="day"&&o.jsx(L.IconButton,{variant:"text",color:"primary",size:"sm","aria-label":m("calendar.nextMonth"),onClick:()=>i(s.add(1,"month")),children:o.jsx(E.Icon,{name:"ArrowCircleRight"})})]}),l==="year"?o.jsx("div",{ref:h,className:j.clsx(r.styles.pickGrid,r.styles.pickScroll),role:"listbox","aria-labelledby":k,onKeyDown:_,children:M.map(e=>{const t=n?n.year()===e:!1;return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,t&&r.styles.pickSelected,!t&&e===B.year()&&r.styles.pickToday),tabIndex:e===a.year()?0:-1,"aria-selected":t,onClick:()=>q(e),children:e},e)})}):l==="month"?o.jsx("div",{ref:h,className:r.styles.pickGrid,role:"listbox","aria-labelledby":k,onKeyDown:P,children:$.map((e,t)=>{const c=n?n.isSame(s.month(t),"month"):!1,x=B.isSame(s.month(t),"month");return o.jsx("button",{type:"button",role:"option",className:j.clsx(r.styles.pickCell,c&&r.styles.pickSelected,!c&&x&&r.styles.pickToday),tabIndex:t===a.month()?0:-1,"aria-selected":c,onClick:()=>g(t),children:e},e)})}):o.jsxs("div",{ref:h,className:r.styles.grid,role:"grid","aria-label":`${Y(s.month())} ${s.format("YYYY")}`,onKeyDown:G,children:[o.jsx("div",{className:r.styles.weekdays,role:"row",children:v.map((e,t)=>o.jsx("span",{role:"columnheader",className:r.styles.weekday,children:e},t))}),Array.from({length:6},(e,t)=>o.jsx("div",{role:"row",className:r.styles.week,children:U.slice(t*7,t*7+7).map(c=>{const x=n?c.date.isSame(n,"day"):!1,C=r.isDisabled(c.date,p,b,K);return o.jsx("button",{type:"button",role:"gridcell",className:j.clsx(r.styles.day,!c.inMonth&&r.styles.dayOutside,x&&r.styles.daySelected,c.isToday&&r.styles.dayToday,C&&r.styles.dayDisabled),tabIndex:c.date.isSame(a,"day")?0:-1,"aria-selected":x,"aria-disabled":C||void 0,"aria-current":c.isToday?"date":void 0,onClick:()=>!C&&I(c.iso),children:c.date.date()},c.iso)})},t))]})]})}exports.Calendar=H;
|
|
2
|
+
//# sourceMappingURL=Calendar-CsBgaKZ-.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar-d3CX5UJp.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Calendar-CsBgaKZ-.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"wPA+BA,SAASA,EAAaC,EAAqBC,EAAqB,CAC9D,GAAID,GAASA,EAAM,OAAOC,EAAO,OAAO,EAAG,OAAOD,EAClD,MAAME,EAAMC,EAAAA,MAAA,EACZ,OAAID,EAAI,OAAOD,EAAO,OAAO,EAAUC,EAChCD,EAAM,QAAQ,OAAO,CAC9B,CAGA,MAAMG,EAAY,EAUX,SAASC,EAAS,CACvB,MAAAL,EACA,MAAAC,EACA,cAAAK,EACA,SAAAC,EACA,IAAAC,EACA,IAAAC,EACA,aAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAAkB,CAChB,MAAMC,EAAIC,EAAAA,KAAA,EACJ,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAe,KAAK,EACtC,CAACC,EAASC,CAAU,EAAIF,EAAAA,SAAgB,IAAMnB,EAAaC,EAAOC,CAAK,CAAC,EACxEoB,EAAUC,EAAAA,OAA8B,IAAI,EAC5CC,EAAgBD,EAAAA,OAAO,EAAQV,CAAU,EAG/CY,EAAAA,UAAU,IAAM,CACdJ,EAAYK,GAAOA,EAAE,OAAOxB,EAAO,OAAO,EAAIwB,EAAI1B,EAAaC,EAAOC,CAAK,CAAE,CAE/E,EAAG,CAACA,CAAK,CAAC,EAGVuB,EAAAA,UAAU,IAAM,SACd,GAAI,CAACD,EAAc,QAAS,OAC5BA,EAAc,QAAU,GACxB,MAAMG,GAAKC,EAAAN,EAAQ,UAAR,YAAAM,EAAiB,cAA2B,kBACvDD,GAAA,MAAAA,EAAI,SACJE,EAAAF,GAAA,YAAAA,EAAI,iBAAJ,MAAAE,EAAA,KAAAF,EAAqB,CAAE,MAAO,SAAA,EAChC,EAAG,CAACP,EAASH,EAAMf,CAAK,CAAC,EAEzB,MAAM4B,EAAYC,GAAe,CAC/BP,EAAc,QAAU,GACxBN,EAAQa,CAAI,CACd,EAGMC,EAAWD,GAAgB,CAC/BP,EAAc,QAAU,GACnBO,EAAK,OAAO7B,EAAO,OAAO,GAAGK,EAAcwB,EAAK,QAAQ,OAAO,CAAC,EACrEV,EAAWU,CAAI,CACjB,EACME,EAAeC,GAAkB,CACrC,MAAMH,EAAOX,EAAQ,IAAIc,EAAO,OAAO,EACvCV,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EACMI,EAAcD,GAAkB,CACpC,IAAIE,EAAOhB,EAAQ,KAAA,EAASc,EACxBzB,IAAK2B,EAAO,KAAK,IAAIA,EAAM3B,EAAI,MAAM,GACrCC,IAAK0B,EAAO,KAAK,IAAIA,EAAM1B,EAAI,MAAM,GACzC,MAAMqB,EAAOX,EAAQ,KAAKgB,CAAI,EAC9BZ,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EAEMM,EAAYC,GAAc,CAC9B,MAAMP,EAAO7B,EAAM,KAAKoC,CAAC,EACzBd,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,CAAI,EAClBb,EAAQ,OAAO,CACjB,EACMqB,EAAaC,GAAc,CAC/B,MAAMT,EAAO7B,EAAM,MAAMsC,CAAC,EAC1BhB,EAAc,QAAU,GACxBH,EAAWrB,EAAaC,EAAO8B,CAAI,CAAC,EACpCxB,EAAcwB,CAAI,EAClBb,EAAQ,KAAK,CACf,EAGMuB,EAAoBC,GAAyC,CACjE,MAAMC,GAAgBvB,EAAQ,IAAA,EAAQR,EAAe,GAAK,EAC1D,OAAQ8B,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,aACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,UACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,YACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,OACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAASuB,EAAc,KAAK,CAAC,EAC7C,MACF,IAAK,MACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAIuB,EAAc,KAAK,CAAC,EAC5C,MACF,IAAK,SACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EAC9D,MACF,IAAK,WACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EACzD,MACF,IAAK,QACL,IAAK,IACHA,EAAM,eAAA,EACDE,EAAAA,WAAWxB,EAASX,EAAKC,EAAKC,CAAY,GAAGH,EAASqC,QAAMzB,CAAO,CAAC,EACzE,KAAA,CAEN,EAEM0B,EAAsBJ,GAAyC,CACnE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNT,EAAY,EAAE,EACd,MACF,IAAK,aACHS,EAAM,eAAA,EACNT,EAAY,CAAC,EACb,MACF,IAAK,UACHS,EAAM,eAAA,EACNT,EAAY,CAAC5B,CAAS,EACtB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNT,EAAY5B,CAAS,EACrB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNH,EAAUnB,EAAQ,OAAO,EACzB,KAAA,CAEN,EAEM2B,EAAqBL,GAAyC,CAClE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNP,EAAW,EAAE,EACb,MACF,IAAK,aACHO,EAAM,eAAA,EACNP,EAAW,CAAC,EACZ,MACF,IAAK,UACHO,EAAM,eAAA,EACNP,EAAW,CAAC9B,CAAS,EACrB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNP,EAAW9B,CAAS,EACpB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNL,EAASjB,EAAQ,MAAM,EACvB,KAAA,CAEN,EAGMjB,EAAMC,EAAAA,MAAA,EAEN4C,EAAaR,GAAczB,EAAE,iBAAiByB,CAAC,EAAgB,EAC/DS,EAAW,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACC,EAAGC,IAC7CpC,EAAE,oBAAoBH,EAAeuC,GAAK,CAAC,EAAgB,CAAA,EAEvDC,EAAYnC,IAAS,MAAQoC,EAAAA,eAAenD,EAAOU,CAAY,EAAI,CAAA,EACnE0C,EAASrC,IAAS,QAAU,MAAM,KAAK,CAAE,OAAQ,EAAA,EAAM,CAACiC,EAAGV,IAAMQ,EAAUR,CAAC,CAAC,EAAI,CAAA,EACjFe,EAAQtC,IAAS,OAASuC,EAAAA,SAAS/C,EAAKC,EAAKR,EAAM,KAAA,CAAM,EAAI,CAAA,EAEnE,OACEuD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,SACrB,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,UACpB,SAAA,CAAAzC,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,SAAS,EAAG,OAAO,CAAC,EAEvD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,iBAAA,CAAkB,CAAA,CAAA,EAIjCJ,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,cACnB,SAAA,EAAAzC,IAAS,OAASA,IAAS,UAC3B0C,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,GAAI7C,EACJ,UAAW4C,EAAAA,OAAO,SAClB,QAAS,IAAM5B,EAAS,MAAM,EAE7B,SAAA5B,EAAM,OAAO,MAAM,CAAA,CAAA,EAGvBe,IAAS,OACR0C,EAAAA,IAAC,UAAO,KAAK,SAAS,UAAWD,SAAO,SAAU,QAAS,IAAM5B,EAAS,OAAO,EAC9E,WAAU5B,EAAM,MAAA,CAAO,EAC1B,EAEDe,IAAS,QACR0C,EAAAA,IAAC,OAAA,CAAK,GAAI7C,EAAS,UAAW4C,EAAAA,OAAO,eAClC,SAAA3C,EAAE,qBAAqB,CAAA,CAC1B,CAAA,EAEJ,EAECE,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,IAAI,EAAG,OAAO,CAAC,EAElD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,kBAAA,CAAmB,CAAA,CAAA,CAChC,EAEJ,EAEC5C,IAAS,OACR0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWwC,EAAAA,KAAKJ,EAAAA,OAAO,SAAUA,EAAAA,OAAO,UAAU,EAClD,KAAK,UACL,kBAAiB5C,EACjB,UAAWiC,EAEV,SAAAQ,EAAM,IAAKjB,GAAM,CAChB,MAAMyB,EAAa9D,EAAQA,EAAM,KAAA,IAAWqC,EAAI,GAChD,OACEqB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAczB,IAAMnC,EAAI,KAAA,GAAUuD,EAAAA,OAAO,SAAA,EAE5C,SAAUpB,IAAMlB,EAAQ,KAAA,EAAS,EAAI,GACrC,gBAAe2C,EACf,QAAS,IAAM1B,EAASC,CAAC,EAExB,SAAAA,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAEDrB,IAAS,QACX0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWoC,EAAAA,OAAO,SAClB,KAAK,UACL,kBAAiB5C,EACjB,UAAWgC,EAEV,SAAAQ,EAAO,IAAI,CAACU,EAAOxB,IAAM,CACxB,MAAMuB,EAAa9D,EAAQA,EAAM,OAAOC,EAAM,MAAMsC,CAAC,EAAG,OAAO,EAAI,GAC7DyB,EAAY9D,EAAI,OAAOD,EAAM,MAAMsC,CAAC,EAAG,OAAO,EACpD,OACEmB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAcE,GAAaP,SAAO,SAAA,EAErC,SAAUlB,IAAMpB,EAAQ,MAAA,EAAU,EAAI,GACtC,gBAAe2C,EACf,QAAS,IAAMxB,EAAUC,CAAC,EAEzB,SAAAwB,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAGHP,EAAAA,KAAC,MAAA,CACC,IAAKnC,EACL,UAAWoC,EAAAA,OAAO,KAClB,KAAK,OACL,aAAY,GAAGV,EAAU9C,EAAM,MAAA,CAAO,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,GAC/D,UAAWuC,EAEX,SAAA,CAAAkB,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,OAAO,SAAU,KAAK,MACnC,SAAAT,EAAS,IAAI,CAACiB,EAAGf,IAChBQ,EAAAA,IAAC,OAAA,CAAa,KAAK,eAAe,UAAWD,EAAAA,OAAO,QACjD,SAAAQ,CAAA,EADQf,CAEX,CACD,CAAA,CACH,EACC,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACD,EAAGiB,IAC7BR,EAAAA,IAAC,MAAA,CAAa,KAAK,MAAM,UAAWD,EAAAA,OAAO,KACxC,SAAAN,EAAU,MAAMe,EAAK,EAAGA,EAAK,EAAI,CAAC,EAAE,IAAKC,GAAM,CAC9C,MAAMC,EAAWpE,EAAQmE,EAAE,KAAK,OAAOnE,EAAO,KAAK,EAAI,GACjDqE,EAAW1B,EAAAA,WAAWwB,EAAE,KAAM3D,EAAKC,EAAKC,CAAY,EAC1D,OACEgD,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,WACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,IACP,CAACU,EAAE,SAAWV,EAAAA,OAAO,WACrBW,GAAYX,EAAAA,OAAO,YACnBU,EAAE,SAAWV,EAAAA,OAAO,SACpBY,GAAYZ,EAAAA,OAAO,WAAA,EAErB,SAAUU,EAAE,KAAK,OAAOhD,EAAS,KAAK,EAAI,EAAI,GAC9C,gBAAeiD,EACf,gBAAeC,GAAY,OAC3B,eAAcF,EAAE,QAAU,OAAS,OACnC,QAAS,IAAM,CAACE,GAAY9D,EAAS4D,EAAE,GAAG,EAEzC,SAAAA,EAAE,KAAK,KAAA,CAAK,EAhBRA,EAAE,GAAA,CAmBb,CAAC,CAAA,EAzBOD,CA0BV,CACD,CAAA,CAAA,CAAA,CACH,EAEJ,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const s=require("react/jsx-runtime"),u=require("react"),h=require("clsx"),f=require("./Icon-
|
|
2
|
-
//# sourceMappingURL=Card-
|
|
1
|
+
"use strict";const s=require("react/jsx-runtime"),u=require("react"),h=require("clsx"),f=require("./Icon-CBg21lKA.cjs"),R=require("./Skeleton-DK0lAjS9.cjs"),y=require("./IconButton-wW1o4HHw.cjs"),H=require("./ConfigProvider-Cf-awvZs.cjs"),P="_card_7za2z_3",U="_flat_7za2z_14",G="_header_7za2z_18",J="_headerDivided_7za2z_27",K="_headerMain_7za2z_31",L="_icon_7za2z_39",Q="_headerText_7za2z_43",V="_title_7za2z_51",W="_subtitle_7za2z_64",X="_actions_7za2z_78",Y="_chevron_7za2z_85",Z="_collapsible_7za2z_93",$="_collapsed_7za2z_98",g="_collapsibleInner_7za2z_101",ee="_foldable_7za2z_110",se="_body_7za2z_114",ae="_footer_7za2z_118",ne="_stickyFooter_7za2z_129",oe="_footerStart_7za2z_144",te="_footerEnd_7za2z_145",e={card:P,flat:U,header:G,headerDivided:J,headerMain:K,icon:L,headerText:Q,title:V,subtitle:W,actions:X,chevron:Y,collapsible:Z,collapsed:$,collapsibleInner:g,foldable:ee,body:se,footer:ae,stickyFooter:ne,footerStart:oe,footerEnd:te},le=new Set(f.ICON_NAMES),ce=u.forwardRef(function({title:t,subtitle:l,icon:n,color:S="accent",flat:k=!1,actions:c,footer:x,footerStart:v,stickyFooter:q=!1,collapsible:o=!1,collapsed:m,defaultCollapsed:E=!1,onCollapsedChange:r,loading:d=!1,className:M,children:i,...T},D){const F=H.useT(),j=m!==void 0,[B,C]=u.useState(E),a=o&&(j?m:B),N=u.useId(),w=()=>{const p=!a;j||C(p),r==null||r(p)},_=n==null?null:typeof n=="string"&&le.has(n)?s.jsx(f.Icon,{name:n}):n,A=t!=null||l!=null||_!=null||c!=null||o,b=d||i!=null&&i!=="",z=x!=null||v!=null,I=b||z,O=I&&!a;return s.jsxs("div",{ref:D,className:h.clsx(e.card,k&&e.flat,a&&e.collapsed,q&&z&&e.stickyFooter,M),"aria-busy":d||void 0,...T,children:[A&&s.jsxs("div",{className:h.clsx(e.header,O&&e.headerDivided),children:[s.jsxs("div",{className:e.headerMain,children:[_!=null&&s.jsx(y.IconButton,{variant:"filled",size:"sm",color:S,nonClickable:!0,"aria-hidden":!0,className:e.icon,children:_}),(t!=null||l!=null)&&s.jsxs("div",{className:e.headerText,children:[t!=null&&s.jsx("div",{className:e.title,children:t}),l!=null&&s.jsx("div",{className:e.subtitle,children:l})]})]}),(c!=null||o)&&s.jsxs("div",{className:e.actions,children:[!a&&c,o&&s.jsx(y.IconButton,{variant:"text",size:"sm","aria-label":F(a?"common.expand":"common.collapse"),"aria-expanded":!a,"aria-controls":N,onClick:w,children:s.jsx(f.Icon,{name:"ArrowUp3",className:e.chevron,"data-collapsed":a?"true":"false"})})]})]}),I&&s.jsx("div",{id:N,className:h.clsx(e.collapsible,o&&e.foldable),children:s.jsxs("div",{className:e.collapsibleInner,children:[b&&s.jsx("div",{className:e.body,children:d?s.jsx(R.Skeleton,{lines:3}):i}),z&&s.jsxs("div",{className:e.footer,children:[s.jsx("div",{className:e.footerStart,children:v}),s.jsx("div",{className:e.footerEnd,children:x})]})]})})]})});exports.Card=ce;
|
|
2
|
+
//# sourceMappingURL=Card-Csn3FaMl.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card-
|
|
1
|
+
{"version":3,"file":"Card-Csn3FaMl.cjs","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { Skeleton } from '../Skeleton'\nimport { IconButton } from '../IconButton'\nimport { useT, type ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /**\n * Keep the footer **pinned to the bottom of the screen** while the card is taller than the viewport — so a\n * long form's Save / Cancel stay reachable without scrolling to the end. It sits in its normal place once\n * the card's end scrolls into view. Needs no `overflow` on the scrolling ancestors (the admin shell has\n * none). Defaults to `false`.\n */\n stickyFooter?: boolean\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Replace the body with skeleton lines while its data loads (header + footer stay). Defaults to `false`. */\n loading?: boolean\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). `stickyFooter` pins the footer to the bottom\n * of the screen while the card scrolls. Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n stickyFooter = false,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n loading = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = loading || (children != null && children !== '')\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.card,\n flat && styles.flat,\n isCollapsed && styles.collapsed,\n stickyFooter && hasFooter && styles.stickyFooter,\n className,\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={t(isCollapsed ? 'common.expand' : 'common.collapse')}\n aria-expanded={!isCollapsed}\n aria-controls={collapsibleId}\n onClick={toggle}\n >\n <Icon\n name=\"ArrowUp3\"\n className={styles.chevron}\n data-collapsed={isCollapsed ? 'true' : 'false'}\n />\n </IconButton>\n )}\n </div>\n )}\n </div>\n )}\n {hasCollapsibleContent && (\n <div\n id={collapsibleId}\n className={clsx(styles.collapsible, collapsible && styles.foldable)}\n >\n <div className={styles.collapsibleInner}>\n {hasBody && (\n <div className={styles.body}>{loading ? <Skeleton lines={3} /> : children}</div>\n )}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","stickyFooter","collapsible","collapsed","defaultCollapsed","onCollapsedChange","loading","className","children","props","ref","t","useT","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton","Skeleton"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as a, jsxs as s } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as R, useState as U, useId as q } from "react";
|
|
3
3
|
import { clsx as m } from "clsx";
|
|
4
|
-
import { b as y, a as G } from "./Icon-
|
|
4
|
+
import { b as y, a as G } from "./Icon-B7DJn8Tw.js";
|
|
5
5
|
import { S as J } from "./Skeleton-_-uGax2j.js";
|
|
6
|
-
import { I as S } from "./IconButton-
|
|
7
|
-
import { a as K } from "./ConfigProvider-
|
|
6
|
+
import { I as S } from "./IconButton-EaExCXRq.js";
|
|
7
|
+
import { a as K } from "./ConfigProvider-CYgmMH4j.js";
|
|
8
8
|
const L = "_card_7za2z_3", P = "_flat_7za2z_14", Q = "_header_7za2z_18", V = "_headerDivided_7za2z_27", W = "_headerMain_7za2z_31", X = "_icon_7za2z_39", Y = "_headerText_7za2z_43", Z = "_title_7za2z_51", $ = "_subtitle_7za2z_64", g = "_actions_7za2z_78", ee = "_chevron_7za2z_85", ae = "_collapsible_7za2z_93", oe = "_collapsed_7za2z_98", se = "_collapsibleInner_7za2z_101", le = "_foldable_7za2z_110", te = "_body_7za2z_114", ne = "_footer_7za2z_118", re = "_stickyFooter_7za2z_129", ce = "_footerStart_7za2z_144", de = "_footerEnd_7za2z_145", e = {
|
|
9
9
|
card: L,
|
|
10
10
|
flat: P,
|
|
@@ -126,4 +126,4 @@ const L = "_card_7za2z_3", P = "_flat_7za2z_14", Q = "_header_7za2z_18", V = "_h
|
|
|
126
126
|
export {
|
|
127
127
|
be as C
|
|
128
128
|
};
|
|
129
|
-
//# sourceMappingURL=Card-
|
|
129
|
+
//# sourceMappingURL=Card-DMwQ7rMk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card-CjqStov5.js","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { Skeleton } from '../Skeleton'\nimport { IconButton } from '../IconButton'\nimport { useT, type ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /**\n * Keep the footer **pinned to the bottom of the screen** while the card is taller than the viewport — so a\n * long form's Save / Cancel stay reachable without scrolling to the end. It sits in its normal place once\n * the card's end scrolls into view. Needs no `overflow` on the scrolling ancestors (the admin shell has\n * none). Defaults to `false`.\n */\n stickyFooter?: boolean\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Replace the body with skeleton lines while its data loads (header + footer stay). Defaults to `false`. */\n loading?: boolean\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). `stickyFooter` pins the footer to the bottom\n * of the screen while the card scrolls. Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n stickyFooter = false,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n loading = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = loading || (children != null && children !== '')\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.card,\n flat && styles.flat,\n isCollapsed && styles.collapsed,\n stickyFooter && hasFooter && styles.stickyFooter,\n className,\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={t(isCollapsed ? 'common.expand' : 'common.collapse')}\n aria-expanded={!isCollapsed}\n aria-controls={collapsibleId}\n onClick={toggle}\n >\n <Icon\n name=\"ArrowUp3\"\n className={styles.chevron}\n data-collapsed={isCollapsed ? 'true' : 'false'}\n />\n </IconButton>\n )}\n </div>\n )}\n </div>\n )}\n {hasCollapsibleContent && (\n <div\n id={collapsibleId}\n className={clsx(styles.collapsible, collapsible && styles.foldable)}\n >\n <div className={styles.collapsibleInner}>\n {hasBody && (\n <div className={styles.body}>{loading ? <Skeleton lines={3} /> : children}</div>\n )}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","stickyFooter","collapsible","collapsed","defaultCollapsed","onCollapsedChange","loading","className","children","props","ref","t","useT","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton","Skeleton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Card-DMwQ7rMk.js","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { Skeleton } from '../Skeleton'\nimport { IconButton } from '../IconButton'\nimport { useT, type ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /**\n * Keep the footer **pinned to the bottom of the screen** while the card is taller than the viewport — so a\n * long form's Save / Cancel stay reachable without scrolling to the end. It sits in its normal place once\n * the card's end scrolls into view. Needs no `overflow` on the scrolling ancestors (the admin shell has\n * none). Defaults to `false`.\n */\n stickyFooter?: boolean\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Replace the body with skeleton lines while its data loads (header + footer stay). Defaults to `false`. */\n loading?: boolean\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). `stickyFooter` pins the footer to the bottom\n * of the screen while the card scrolls. Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n stickyFooter = false,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n loading = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = loading || (children != null && children !== '')\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.card,\n flat && styles.flat,\n isCollapsed && styles.collapsed,\n stickyFooter && hasFooter && styles.stickyFooter,\n className,\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={t(isCollapsed ? 'common.expand' : 'common.collapse')}\n aria-expanded={!isCollapsed}\n aria-controls={collapsibleId}\n onClick={toggle}\n >\n <Icon\n name=\"ArrowUp3\"\n className={styles.chevron}\n data-collapsed={isCollapsed ? 'true' : 'false'}\n />\n </IconButton>\n )}\n </div>\n )}\n </div>\n )}\n {hasCollapsibleContent && (\n <div\n id={collapsibleId}\n className={clsx(styles.collapsible, collapsible && styles.foldable)}\n >\n <div className={styles.collapsibleInner}>\n {hasBody && (\n <div className={styles.body}>{loading ? <Skeleton lines={3} /> : children}</div>\n )}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","stickyFooter","collapsible","collapsed","defaultCollapsed","onCollapsedChange","loading","className","children","props","ref","t","useT","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton","Skeleton"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),j=require("react"),C=require("clsx"),I=require("./Icon-CBg21lKA.cjs"),y=require("./ConfigProvider-Cf-awvZs.cjs"),A="_chip_7u6q9_3",B="_sm_7u6q9_20",N="_md_7u6q9_25",z="_lg_7u6q9_30",P="_contained_7u6q9_37",R="_filled_7u6q9_42",T="_outlined_7u6q9_46",$="_text_7u6q9_51",E="_clickable_7u6q9_57",M="_disabled_7u6q9_84",D="_startIcon_7u6q9_91",F="_avatar_7u6q9_97",G="_withAvatar_7u6q9_104",H="_withDelete_7u6q9_108",J="_deleteBtn_7u6q9_129",t={chip:A,sm:B,md:N,lg:z,contained:P,filled:R,outlined:T,text:$,clickable:E,disabled:M,startIcon:D,avatar:F,withAvatar:G,withDelete:H,deleteBtn:J},L=j.forwardRef(function({variant:d="filled",color:r="primary",size:_="md",clickable:q=!1,disabled:n=!1,startIcon:u,avatar:l,onDelete:s,deleteIcon:h,deleteLabel:f,deleteTabIndex:m,className:p,style:b,children:i,onKeyDown:o,...x},v){const g=y.useT(),a=q&&!n,k=e=>{e.stopPropagation(),n||s==null||s()},w=e=>{a&&(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.currentTarget.click()),o==null||o(e)};return c.jsxs("div",{ref:v,className:C.clsx(t.chip,t[d],t[_],a&&t.clickable,n&&t.disabled,l&&t.withAvatar,s&&t.withDelete,p),style:{"--tz-btn-rgb":`var(--tz-color-${r}-rgb)`,"--tz-btn-on":`var(--tz-color-${r}-contrast, #fff)`,...b},role:a?"button":void 0,tabIndex:a?0:void 0,"aria-disabled":n||void 0,onKeyDown:w,...x,children:[l?c.jsx("span",{className:t.avatar,children:l}):u?c.jsx("span",{className:t.startIcon,children:u}):null,i!=null&&i!==""?c.jsx("span",{children:i}):null,s?c.jsx("button",{type:"button",className:t.deleteBtn,onClick:k,onMouseDown:e=>e.preventDefault(),"aria-label":f??g("common.remove"),tabIndex:m,disabled:n,children:h??c.jsx(I.Icon,{name:"CloseCircle",size:_})}):null]})});exports.Chip=L;
|
|
2
|
+
//# sourceMappingURL=Chip-BdCZ44I8.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-
|
|
1
|
+
{"version":3,"file":"Chip-BdCZ44I8.cjs","sources":["../src/components/Chip/Chip.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport styles from './Chip.module.css'\n\nexport type ChipVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ChipSize = 'sm' | 'md' | 'lg'\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Visual style. Defaults to `filled` (a soft tinted chip). */\n variant?: ChipVariant\n /** Theme palette token that tints the chip. Defaults to `primary`. */\n color?: ThemeColor\n /** Preset size — height + font. Defaults to `md`. */\n size?: ChipSize\n /** Makes the chip interactive (hover, pointer, keyboard, `onClick`). Off by default (a static tag). */\n clickable?: boolean\n /** Dims the chip and disables all interaction. */\n disabled?: boolean\n /** Leading icon (e.g. an `<Icon />`). Ignored when `avatar` is set. */\n startIcon?: ReactNode\n /** Leading avatar (e.g. an `<Avatar />`), sized to the chip and flush to the left. */\n avatar?: ReactNode\n /** When provided, shows a trailing delete button that calls this (its click won't trigger `onClick`). */\n onDelete?: () => void\n /** Custom delete icon. Defaults to a `CloseCircle`. */\n deleteIcon?: ReactNode\n /** Accessible label for the delete button. Defaults to the localized \"Remove\" (`common.remove`). */\n deleteLabel?: string\n /** Tab index for the delete button — pass `-1` when the chip lives inside a composite widget (e.g. a multi-select) that owns keyboard focus. */\n deleteTabIndex?: number\n /** Chip label. */\n children?: ReactNode\n}\n\n/**\n * A compact tag/token. Static by default; `clickable` makes it an interactive `role=\"button\"`\n * (hover + Enter/Space). Supports a leading `startIcon` or `avatar` and a trailing delete button via\n * `onDelete`. Tinted by `color` through the shared `--tz-btn-rgb` / `--tz-btn-on` pattern across the\n * four standard variants. Token-only styling.\n */\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n clickable = false,\n disabled = false,\n startIcon,\n avatar,\n onDelete,\n deleteIcon,\n deleteLabel,\n deleteTabIndex,\n className,\n style,\n children,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const t = useT()\n const interactive = clickable && !disabled\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n if (!disabled) onDelete?.()\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (interactive && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.chip,\n styles[variant],\n styles[size],\n interactive && styles.clickable,\n disabled && styles.disabled,\n avatar && styles.withAvatar,\n onDelete && styles.withDelete,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {avatar ? (\n <span className={styles.avatar}>{avatar}</span>\n ) : startIcon ? (\n <span className={styles.startIcon}>{startIcon}</span>\n ) : null}\n {children != null && children !== '' ? <span>{children}</span> : null}\n {onDelete ? (\n <button\n type=\"button\"\n className={styles.deleteBtn}\n onClick={handleDelete}\n onMouseDown={(event) => event.preventDefault()}\n aria-label={deleteLabel ?? t('common.remove')}\n tabIndex={deleteTabIndex}\n disabled={disabled}\n >\n {deleteIcon ?? <Icon name=\"CloseCircle\" size={size} />}\n </button>\n ) : null}\n </div>\n )\n})\n"],"names":["Chip","forwardRef","variant","color","size","clickable","disabled","startIcon","avatar","onDelete","deleteIcon","deleteLabel","deleteTabIndex","className","style","children","onKeyDown","props","ref","t","useT","interactive","handleDelete","event","handleKeyDown","jsxs","clsx","styles","jsx","Icon"],"mappings":"2nBAiDaA,EAAOC,EAAAA,WAAsC,SACxD,CACE,QAAAC,EAAU,SACV,MAAAC,EAAQ,UACR,KAAAC,EAAO,KACP,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,UAAAC,EACA,OAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,eAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACJC,EAAchB,GAAa,CAACC,EAE5BgB,EAAgBC,GAAyC,CAC7DA,EAAM,gBAAA,EACDjB,GAAUG,GAAA,MAAAA,GACjB,EAEMe,EAAiBD,GAAyC,CAC1DF,IAAgBE,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACzDA,EAAM,eAAA,EACNA,EAAM,cAAc,MAAA,GAEtBP,GAAA,MAAAA,EAAYO,EACd,EAEA,OACEE,EAAAA,KAAC,MAAA,CACC,IAAAP,EACA,UAAWQ,EAAAA,KACTC,EAAO,KACPA,EAAOzB,CAAO,EACdyB,EAAOvB,CAAI,EACXiB,GAAeM,EAAO,UACtBrB,GAAYqB,EAAO,SACnBnB,GAAUmB,EAAO,WACjBlB,GAAYkB,EAAO,WACnBd,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBV,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGW,CAAA,EAGP,KAAMO,EAAc,SAAW,OAC/B,SAAUA,EAAc,EAAI,OAC5B,gBAAef,GAAY,OAC3B,UAAWkB,EACV,GAAGP,EAEH,SAAA,CAAAT,EACCoB,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAO,OAAS,SAAAnB,EAAO,EACtCD,EACFqB,MAAC,OAAA,CAAK,UAAWD,EAAO,UAAY,WAAU,EAC5C,KACHZ,GAAY,MAAQA,IAAa,GAAKa,EAAAA,IAAC,OAAA,CAAM,SAAAb,EAAS,EAAU,KAChEN,EACCmB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWD,EAAO,UAClB,QAASL,EACT,YAAcC,GAAUA,EAAM,eAAA,EAC9B,aAAYZ,GAAeQ,EAAE,eAAe,EAC5C,SAAUP,EACV,SAAAN,EAEC,SAAAI,GAAckB,MAACC,EAAAA,KAAA,CAAK,KAAK,cAAc,KAAAzB,CAAA,CAAY,CAAA,CAAA,EAEpD,IAAA,CAAA,CAAA,CAGV,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { jsxs as C, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as I } from "react";
|
|
3
|
+
import { clsx as y } from "clsx";
|
|
4
|
+
import { b as A } from "./Icon-B7DJn8Tw.js";
|
|
5
|
+
import { a as B } from "./ConfigProvider-CYgmMH4j.js";
|
|
6
|
+
const N = "_chip_7u6q9_3", z = "_sm_7u6q9_20", j = "_md_7u6q9_25", T = "_lg_7u6q9_30", $ = "_contained_7u6q9_37", E = "_filled_7u6q9_42", M = "_outlined_7u6q9_46", P = "_text_7u6q9_51", R = "_clickable_7u6q9_57", D = "_disabled_7u6q9_84", F = "_startIcon_7u6q9_91", G = "_avatar_7u6q9_97", H = "_withAvatar_7u6q9_104", J = "_withDelete_7u6q9_108", L = "_deleteBtn_7u6q9_129", t = {
|
|
7
|
+
chip: N,
|
|
8
|
+
sm: z,
|
|
9
|
+
md: j,
|
|
10
|
+
lg: T,
|
|
11
|
+
contained: $,
|
|
12
|
+
filled: E,
|
|
13
|
+
outlined: M,
|
|
14
|
+
text: P,
|
|
15
|
+
clickable: R,
|
|
16
|
+
disabled: D,
|
|
17
|
+
startIcon: F,
|
|
18
|
+
avatar: G,
|
|
19
|
+
withAvatar: H,
|
|
20
|
+
withDelete: J,
|
|
21
|
+
deleteBtn: L
|
|
22
|
+
}, X = I(function({
|
|
23
|
+
variant: d = "filled",
|
|
24
|
+
color: r = "primary",
|
|
25
|
+
size: _ = "md",
|
|
26
|
+
clickable: m = !1,
|
|
27
|
+
disabled: c = !1,
|
|
28
|
+
startIcon: u,
|
|
29
|
+
avatar: o,
|
|
30
|
+
onDelete: l,
|
|
31
|
+
deleteIcon: f,
|
|
32
|
+
deleteLabel: p,
|
|
33
|
+
deleteTabIndex: h,
|
|
34
|
+
className: b,
|
|
35
|
+
style: q,
|
|
36
|
+
children: s,
|
|
37
|
+
onKeyDown: i,
|
|
38
|
+
...v
|
|
39
|
+
}, x) {
|
|
40
|
+
const k = B(), e = m && !c, w = (a) => {
|
|
41
|
+
a.stopPropagation(), c || l == null || l();
|
|
42
|
+
}, g = (a) => {
|
|
43
|
+
e && (a.key === "Enter" || a.key === " ") && (a.preventDefault(), a.currentTarget.click()), i == null || i(a);
|
|
44
|
+
};
|
|
45
|
+
return /* @__PURE__ */ C(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
ref: x,
|
|
49
|
+
className: y(
|
|
50
|
+
t.chip,
|
|
51
|
+
t[d],
|
|
52
|
+
t[_],
|
|
53
|
+
e && t.clickable,
|
|
54
|
+
c && t.disabled,
|
|
55
|
+
o && t.withAvatar,
|
|
56
|
+
l && t.withDelete,
|
|
57
|
+
b
|
|
58
|
+
),
|
|
59
|
+
style: {
|
|
60
|
+
"--tz-btn-rgb": `var(--tz-color-${r}-rgb)`,
|
|
61
|
+
"--tz-btn-on": `var(--tz-color-${r}-contrast, #fff)`,
|
|
62
|
+
...q
|
|
63
|
+
},
|
|
64
|
+
role: e ? "button" : void 0,
|
|
65
|
+
tabIndex: e ? 0 : void 0,
|
|
66
|
+
"aria-disabled": c || void 0,
|
|
67
|
+
onKeyDown: g,
|
|
68
|
+
...v,
|
|
69
|
+
children: [
|
|
70
|
+
o ? /* @__PURE__ */ n("span", { className: t.avatar, children: o }) : u ? /* @__PURE__ */ n("span", { className: t.startIcon, children: u }) : null,
|
|
71
|
+
s != null && s !== "" ? /* @__PURE__ */ n("span", { children: s }) : null,
|
|
72
|
+
l ? /* @__PURE__ */ n(
|
|
73
|
+
"button",
|
|
74
|
+
{
|
|
75
|
+
type: "button",
|
|
76
|
+
className: t.deleteBtn,
|
|
77
|
+
onClick: w,
|
|
78
|
+
onMouseDown: (a) => a.preventDefault(),
|
|
79
|
+
"aria-label": p ?? k("common.remove"),
|
|
80
|
+
tabIndex: h,
|
|
81
|
+
disabled: c,
|
|
82
|
+
children: f ?? /* @__PURE__ */ n(A, { name: "CloseCircle", size: _ })
|
|
83
|
+
}
|
|
84
|
+
) : null
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
});
|
|
89
|
+
export {
|
|
90
|
+
X as C
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=Chip-C7IkFuM1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-
|
|
1
|
+
{"version":3,"file":"Chip-C7IkFuM1.js","sources":["../src/components/Chip/Chip.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport styles from './Chip.module.css'\n\nexport type ChipVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ChipSize = 'sm' | 'md' | 'lg'\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Visual style. Defaults to `filled` (a soft tinted chip). */\n variant?: ChipVariant\n /** Theme palette token that tints the chip. Defaults to `primary`. */\n color?: ThemeColor\n /** Preset size — height + font. Defaults to `md`. */\n size?: ChipSize\n /** Makes the chip interactive (hover, pointer, keyboard, `onClick`). Off by default (a static tag). */\n clickable?: boolean\n /** Dims the chip and disables all interaction. */\n disabled?: boolean\n /** Leading icon (e.g. an `<Icon />`). Ignored when `avatar` is set. */\n startIcon?: ReactNode\n /** Leading avatar (e.g. an `<Avatar />`), sized to the chip and flush to the left. */\n avatar?: ReactNode\n /** When provided, shows a trailing delete button that calls this (its click won't trigger `onClick`). */\n onDelete?: () => void\n /** Custom delete icon. Defaults to a `CloseCircle`. */\n deleteIcon?: ReactNode\n /** Accessible label for the delete button. Defaults to the localized \"Remove\" (`common.remove`). */\n deleteLabel?: string\n /** Tab index for the delete button — pass `-1` when the chip lives inside a composite widget (e.g. a multi-select) that owns keyboard focus. */\n deleteTabIndex?: number\n /** Chip label. */\n children?: ReactNode\n}\n\n/**\n * A compact tag/token. Static by default; `clickable` makes it an interactive `role=\"button\"`\n * (hover + Enter/Space). Supports a leading `startIcon` or `avatar` and a trailing delete button via\n * `onDelete`. Tinted by `color` through the shared `--tz-btn-rgb` / `--tz-btn-on` pattern across the\n * four standard variants. Token-only styling.\n */\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n clickable = false,\n disabled = false,\n startIcon,\n avatar,\n onDelete,\n deleteIcon,\n deleteLabel,\n deleteTabIndex,\n className,\n style,\n children,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const t = useT()\n const interactive = clickable && !disabled\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n if (!disabled) onDelete?.()\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (interactive && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.chip,\n styles[variant],\n styles[size],\n interactive && styles.clickable,\n disabled && styles.disabled,\n avatar && styles.withAvatar,\n onDelete && styles.withDelete,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {avatar ? (\n <span className={styles.avatar}>{avatar}</span>\n ) : startIcon ? (\n <span className={styles.startIcon}>{startIcon}</span>\n ) : null}\n {children != null && children !== '' ? <span>{children}</span> : null}\n {onDelete ? (\n <button\n type=\"button\"\n className={styles.deleteBtn}\n onClick={handleDelete}\n onMouseDown={(event) => event.preventDefault()}\n aria-label={deleteLabel ?? t('common.remove')}\n tabIndex={deleteTabIndex}\n disabled={disabled}\n >\n {deleteIcon ?? <Icon name=\"CloseCircle\" size={size} />}\n </button>\n ) : null}\n </div>\n )\n})\n"],"names":["Chip","forwardRef","variant","color","size","clickable","disabled","startIcon","avatar","onDelete","deleteIcon","deleteLabel","deleteTabIndex","className","style","children","onKeyDown","props","ref","t","useT","interactive","handleDelete","event","handleKeyDown","jsxs","clsx","styles","jsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;GAiDaA,IAAOC,EAAsC,SACxD;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAIC,EAAA,GACJC,IAAchB,KAAa,CAACC,GAE5BgB,IAAe,CAACC,MAAyC;AAC7D,IAAAA,EAAM,gBAAA,GACDjB,KAAUG,KAAA,QAAAA;AAAA,EACjB,GAEMe,IAAgB,CAACD,MAAyC;AAC9D,IAAIF,MAAgBE,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACzDA,EAAM,eAAA,GACNA,EAAM,cAAc,MAAA,IAEtBP,KAAA,QAAAA,EAAYO;AAAA,EACd;AAEA,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,WAAWQ;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOzB,CAAO;AAAA,QACdyB,EAAOvB,CAAI;AAAA,QACXiB,KAAeM,EAAO;AAAA,QACtBrB,KAAYqB,EAAO;AAAA,QACnBnB,KAAUmB,EAAO;AAAA,QACjBlB,KAAYkB,EAAO;AAAA,QACnBd;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBV,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGW;AAAA,MAAA;AAAA,MAGP,MAAMO,IAAc,WAAW;AAAA,MAC/B,UAAUA,IAAc,IAAI;AAAA,MAC5B,iBAAef,KAAY;AAAA,MAC3B,WAAWkB;AAAA,MACV,GAAGP;AAAA,MAEH,UAAA;AAAA,QAAAT,IACC,gBAAAoB,EAAC,QAAA,EAAK,WAAWD,EAAO,QAAS,UAAAnB,GAAO,IACtCD,IACF,gBAAAqB,EAAC,QAAA,EAAK,WAAWD,EAAO,WAAY,aAAU,IAC5C;AAAA,QACHZ,KAAY,QAAQA,MAAa,KAAK,gBAAAa,EAAC,QAAA,EAAM,UAAAb,GAAS,IAAU;AAAA,QAChEN,IACC,gBAAAmB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWD,EAAO;AAAA,YAClB,SAASL;AAAA,YACT,aAAa,CAACC,MAAUA,EAAM,eAAA;AAAA,YAC9B,cAAYZ,KAAeQ,EAAE,eAAe;AAAA,YAC5C,UAAUP;AAAA,YACV,UAAAN;AAAA,YAEC,UAAAI,KAAc,gBAAAkB,EAACC,GAAA,EAAK,MAAK,eAAc,MAAAzB,EAAA,CAAY;AAAA,UAAA;AAAA,QAAA,IAEpD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}
|