@techzyapp/ui-library 1.0.25 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdminRoot-BTvmassR.js +55 -0
- package/dist/AdminRoot-BTvmassR.js.map +1 -0
- package/dist/AdminRoot-DM-cZCpN.cjs +2 -0
- package/dist/AdminRoot-DM-cZCpN.cjs.map +1 -0
- package/dist/{Alert-udX1ybuC.cjs → Alert-CFm6MU0u.cjs} +2 -2
- package/dist/{Alert-udX1ybuC.cjs.map → Alert-CFm6MU0u.cjs.map} +1 -1
- package/dist/{Alert-DXmzM_rh.js → Alert-v-lelDih.js} +3 -3
- package/dist/{Alert-DXmzM_rh.js.map → Alert-v-lelDih.js.map} +1 -1
- package/dist/{AuthLayout-CP9qu6Bv.js → AuthLayout-DOFYw_z5.js} +3 -3
- package/dist/{AuthLayout-CP9qu6Bv.js.map → AuthLayout-DOFYw_z5.js.map} +1 -1
- package/dist/{AuthLayout-BRUxDgzs.cjs → AuthLayout-QAtW2GAT.cjs} +2 -2
- package/dist/{AuthLayout-BRUxDgzs.cjs.map → AuthLayout-QAtW2GAT.cjs.map} +1 -1
- package/dist/Avatar-DXNPg23a.js +90 -0
- package/dist/Avatar-DXNPg23a.js.map +1 -0
- package/dist/Avatar-DrV_F7Ex.cjs +2 -0
- package/dist/Avatar-DrV_F7Ex.cjs.map +1 -0
- package/dist/{AvatarGroup-uW0SD5P4.cjs → AvatarGroup-CHesdo-M.cjs} +2 -2
- package/dist/{AvatarGroup-uW0SD5P4.cjs.map → AvatarGroup-CHesdo-M.cjs.map} +1 -1
- package/dist/{AvatarGroup-YaNasLMS.js → AvatarGroup-CwlYqDCI.js} +2 -2
- package/dist/{AvatarGroup-YaNasLMS.js.map → AvatarGroup-CwlYqDCI.js.map} +1 -1
- package/dist/Badge-BmFgusOa.js +50 -0
- package/dist/{Badge-DSWigoGC.js.map → Badge-BmFgusOa.js.map} +1 -1
- package/dist/Badge-DVbe1rAI.cjs +2 -0
- package/dist/{Badge-BQpr2Jee.cjs.map → Badge-DVbe1rAI.cjs.map} +1 -1
- package/dist/{Breadcrumbs-CsYTiX2h.cjs → Breadcrumbs-3wHPNa0P.cjs} +2 -2
- package/dist/{Breadcrumbs-CsYTiX2h.cjs.map → Breadcrumbs-3wHPNa0P.cjs.map} +1 -1
- package/dist/{Breadcrumbs-DQHHeLId.js → Breadcrumbs-Cgd-u3aK.js} +3 -3
- package/dist/{Breadcrumbs-DQHHeLId.js.map → Breadcrumbs-Cgd-u3aK.js.map} +1 -1
- package/dist/Button-BLW9yV8W.js +72 -0
- package/dist/{Button-DBs8xnA5.js.map → Button-BLW9yV8W.js.map} +1 -1
- package/dist/Button-KRGjJdMV.cjs +2 -0
- package/dist/{Button-CXmDOzPk.cjs.map → Button-KRGjJdMV.cjs.map} +1 -1
- package/dist/{Calendar-B2nMXk4C.cjs → Calendar-CoTCOOUu.cjs} +2 -2
- package/dist/{Calendar-B2nMXk4C.cjs.map → Calendar-CoTCOOUu.cjs.map} +1 -1
- package/dist/{Calendar-CtteUt82.js → Calendar-sLA-xa0B.js} +4 -4
- package/dist/{Calendar-CtteUt82.js.map → Calendar-sLA-xa0B.js.map} +1 -1
- package/dist/Card-6fiSEC0z.js +121 -0
- package/dist/Card-6fiSEC0z.js.map +1 -0
- package/dist/Card-zTkvreQu.cjs +2 -0
- package/dist/Card-zTkvreQu.cjs.map +1 -0
- package/dist/Checkbox-CTp1xFW7.cjs +2 -0
- package/dist/{Checkbox-fzJCwe0j.cjs.map → Checkbox-CTp1xFW7.cjs.map} +1 -1
- package/dist/Checkbox-DyKBIgVT.js +98 -0
- package/dist/{Checkbox-ZYOSBYRt.js.map → Checkbox-DyKBIgVT.js.map} +1 -1
- package/dist/{Chip-DdKhcstm.js → Chip-C-5Z5wsC.js} +31 -31
- package/dist/{Chip-DdKhcstm.js.map → Chip-C-5Z5wsC.js.map} +1 -1
- package/dist/Chip-CqOqfafx.cjs +2 -0
- package/dist/{Chip-gUH_7nQc.cjs.map → Chip-CqOqfafx.cjs.map} +1 -1
- package/dist/ChoiceCardGroup-BSagRbPI.cjs +2 -0
- package/dist/{ChoiceCardGroup-d0VVTUi5.cjs.map → ChoiceCardGroup-BSagRbPI.cjs.map} +1 -1
- package/dist/ChoiceCardGroup-CEniY_HJ.js +181 -0
- package/dist/{ChoiceCardGroup-DBohUnRj.js.map → ChoiceCardGroup-CEniY_HJ.js.map} +1 -1
- package/dist/{CodeBlock-C6tQtbHU.cjs → CodeBlock-DFiHDZXh.cjs} +2 -2
- package/dist/{CodeBlock-C6tQtbHU.cjs.map → CodeBlock-DFiHDZXh.cjs.map} +1 -1
- package/dist/{CodeBlock-DD_d3-sM.js → CodeBlock-rPaqO7yD.js} +3 -3
- package/dist/{CodeBlock-DD_d3-sM.js.map → CodeBlock-rPaqO7yD.js.map} +1 -1
- package/dist/ColorPicker-Bqypsy5E.cjs +2 -0
- package/dist/ColorPicker-Bqypsy5E.cjs.map +1 -0
- package/dist/{ColorPicker-Dw6Qk0iy.js → ColorPicker-DXDAXvlA.js} +36 -27
- package/dist/ColorPicker-DXDAXvlA.js.map +1 -0
- package/dist/ColorPickerPanel-6lQC1URc.js +322 -0
- package/dist/ColorPickerPanel-6lQC1URc.js.map +1 -0
- package/dist/ColorPickerPanel-C9ARc_uD.cjs +2 -0
- package/dist/ColorPickerPanel-C9ARc_uD.cjs.map +1 -0
- package/dist/ColorRamp-B9OWxCOK.cjs +2 -0
- package/dist/ColorRamp-B9OWxCOK.cjs.map +1 -0
- package/dist/ColorRamp-DQ8wkgvF.js +126 -0
- package/dist/ColorRamp-DQ8wkgvF.js.map +1 -0
- package/dist/{ConfigProvider-Bszl3Wr3.cjs → ConfigProvider-BElY0HuV.cjs} +2 -2
- package/dist/ConfigProvider-BElY0HuV.cjs.map +1 -0
- package/dist/{ConfigProvider-DR9YMy9U.js → ConfigProvider-B_RSn9bb.js} +2 -2
- package/dist/ConfigProvider-B_RSn9bb.js.map +1 -0
- package/dist/CopyButton-B5aicGl3.cjs +2 -0
- package/dist/{CopyButton-Ct-8AmmX.cjs.map → CopyButton-B5aicGl3.cjs.map} +1 -1
- package/dist/CopyButton-BplPYm8i.js +43 -0
- package/dist/{CopyButton-DJ1PSJZU.js.map → CopyButton-BplPYm8i.js.map} +1 -1
- package/dist/DashedButton-B7xodc3N.cjs +2 -0
- package/dist/{DashedButton-3C4IZuo4.cjs.map → DashedButton-B7xodc3N.cjs.map} +1 -1
- package/dist/DashedButton-iM7kzopW.js +59 -0
- package/dist/{DashedButton-BXZAyMtw.js.map → DashedButton-iM7kzopW.js.map} +1 -1
- package/dist/{DatePicker-BxEydgfu.cjs → DatePicker-Cdl2JYBd.cjs} +2 -2
- package/dist/{DatePicker-BxEydgfu.cjs.map → DatePicker-Cdl2JYBd.cjs.map} +1 -1
- package/dist/{DatePicker-CJioG5M7.js → DatePicker-U5TJ9FYM.js} +7 -7
- package/dist/{DatePicker-CJioG5M7.js.map → DatePicker-U5TJ9FYM.js.map} +1 -1
- package/dist/DatePicker.module-BDtTsg8M.cjs +2 -0
- package/dist/{DatePicker.module-tE-tGNBd.cjs.map → DatePicker.module-BDtTsg8M.cjs.map} +1 -1
- package/dist/DatePicker.module-CMMQyEhG.js +138 -0
- package/dist/{DatePicker.module-BZDftL4g.js.map → DatePicker.module-CMMQyEhG.js.map} +1 -1
- package/dist/{DateTimePicker-COEj2Z0F.cjs → DateTimePicker-DUFtddxJ.cjs} +2 -2
- package/dist/{DateTimePicker-COEj2Z0F.cjs.map → DateTimePicker-DUFtddxJ.cjs.map} +1 -1
- package/dist/{DateTimePicker-e2zj2bhS.js → DateTimePicker-laJsZYJX.js} +10 -10
- package/dist/{DateTimePicker-e2zj2bhS.js.map → DateTimePicker-laJsZYJX.js.map} +1 -1
- package/dist/DescriptionList-BCvOX8fg.cjs +2 -0
- package/dist/DescriptionList-BCvOX8fg.cjs.map +1 -0
- package/dist/DescriptionList-Y9jF_4L0.js +176 -0
- package/dist/DescriptionList-Y9jF_4L0.js.map +1 -0
- package/dist/{Dropdown-FfkmluRu.js → Dropdown--1mNTVZJ.js} +2 -2
- package/dist/{Dropdown-FfkmluRu.js.map → Dropdown--1mNTVZJ.js.map} +1 -1
- package/dist/{Dropdown-Ui7h2TGd.cjs → Dropdown-DNZ9S_zQ.cjs} +2 -2
- package/dist/{Dropdown-Ui7h2TGd.cjs.map → Dropdown-DNZ9S_zQ.cjs.map} +1 -1
- package/dist/EmptyState-BtwuzX9Z.js +58 -0
- package/dist/EmptyState-BtwuzX9Z.js.map +1 -0
- package/dist/EmptyState-CO_NRZ6w.cjs +2 -0
- package/dist/EmptyState-CO_NRZ6w.cjs.map +1 -0
- package/dist/ErrorBoundary-DJ6R1M9k.js +126 -0
- package/dist/ErrorBoundary-DJ6R1M9k.js.map +1 -0
- package/dist/ErrorBoundary-unvC1vZQ.cjs +2 -0
- package/dist/ErrorBoundary-unvC1vZQ.cjs.map +1 -0
- package/dist/FileCard-C3a2yDhK.js +149 -0
- package/dist/FileCard-C3a2yDhK.js.map +1 -0
- package/dist/FileCard-DKjDQRzZ.cjs +2 -0
- package/dist/FileCard-DKjDQRzZ.cjs.map +1 -0
- package/dist/FileUploader-CuOHWkiG.js +707 -0
- package/dist/FileUploader-CuOHWkiG.js.map +1 -0
- package/dist/FileUploader-VIOg03pl.cjs +2 -0
- package/dist/FileUploader-VIOg03pl.cjs.map +1 -0
- package/dist/{Flag-CB4YyPj3.cjs → Flag-aOQncoEZ.cjs} +2 -2
- package/dist/{Flag-CB4YyPj3.cjs.map → Flag-aOQncoEZ.cjs.map} +1 -1
- package/dist/{Flag-yA1y5XzR.js → Flag-kpUfmrwC.js} +2 -2
- package/dist/{Flag-yA1y5XzR.js.map → Flag-kpUfmrwC.js.map} +1 -1
- package/dist/FloatingPanel-BIC4WrFa.cjs +2 -0
- package/dist/FloatingPanel-BIC4WrFa.cjs.map +1 -0
- package/dist/FloatingPanel-CeSOtE_D.js +135 -0
- package/dist/FloatingPanel-CeSOtE_D.js.map +1 -0
- package/dist/{FullscreenToggle-0lskYnpx.cjs → FullscreenToggle-BSwxQEaG.cjs} +2 -2
- package/dist/{FullscreenToggle-0lskYnpx.cjs.map → FullscreenToggle-BSwxQEaG.cjs.map} +1 -1
- package/dist/{FullscreenToggle-jSLruiKt.js → FullscreenToggle-CMifmPD3.js} +3 -3
- package/dist/{FullscreenToggle-jSLruiKt.js.map → FullscreenToggle-CMifmPD3.js.map} +1 -1
- package/dist/IconButton-A2B0bqC-.cjs +2 -0
- package/dist/{IconButton-BN-bZxEi.cjs.map → IconButton-A2B0bqC-.cjs.map} +1 -1
- package/dist/IconButton-Dq17Fekm.js +68 -0
- package/dist/{IconButton-BEGWfcVc.js.map → IconButton-Dq17Fekm.js.map} +1 -1
- package/dist/List-9lUjapQ5.cjs +2 -0
- package/dist/List-9lUjapQ5.cjs.map +1 -0
- package/dist/List-CZwNGxuP.js +107 -0
- package/dist/List-CZwNGxuP.js.map +1 -0
- package/dist/Loader-CwyoKoWY.js +28 -0
- package/dist/{Loader-BZIa8hwv.js.map → Loader-CwyoKoWY.js.map} +1 -1
- package/dist/Loader-D9nteBXt.cjs +2 -0
- package/dist/{Loader-B5YqzEYy.cjs.map → Loader-D9nteBXt.cjs.map} +1 -1
- package/dist/MobileFrame-8FSsYA_w.js +91 -0
- package/dist/MobileFrame-8FSsYA_w.js.map +1 -0
- package/dist/MobileFrame-Dsfgd_4k.cjs +2 -0
- package/dist/MobileFrame-Dsfgd_4k.cjs.map +1 -0
- package/dist/Modal-CQDcYS-Y.cjs +2 -0
- package/dist/Modal-CQDcYS-Y.cjs.map +1 -0
- package/dist/Modal-cz6JIsZn.js +196 -0
- package/dist/Modal-cz6JIsZn.js.map +1 -0
- package/dist/MultiSelect-BIwE6wb7.cjs +2 -0
- package/dist/MultiSelect-BIwE6wb7.cjs.map +1 -0
- package/dist/MultiSelect-C6l0LpIs.js +219 -0
- package/dist/MultiSelect-C6l0LpIs.js.map +1 -0
- package/dist/{MultilineTextField-Dz6Fg8RJ.cjs → MultilineTextField-B6EYAdik.cjs} +2 -2
- package/dist/{MultilineTextField-Dz6Fg8RJ.cjs.map → MultilineTextField-B6EYAdik.cjs.map} +1 -1
- package/dist/{MultilineTextField-CwNCJ9lZ.js → MultilineTextField-BgfBFeeF.js} +2 -2
- package/dist/{MultilineTextField-CwNCJ9lZ.js.map → MultilineTextField-BgfBFeeF.js.map} +1 -1
- package/dist/{NumberField-2yM0mmyj.js → NumberField-BpUTV_Qn.js} +5 -5
- package/dist/{NumberField-2yM0mmyj.js.map → NumberField-BpUTV_Qn.js.map} +1 -1
- package/dist/{NumberField-CEt95jcC.cjs → NumberField-IyhO4OpJ.cjs} +2 -2
- package/dist/{NumberField-CEt95jcC.cjs.map → NumberField-IyhO4OpJ.cjs.map} +1 -1
- package/dist/{OtpField-CkliY82J.js → OtpField-BoLxbGtY.js} +4 -4
- package/dist/{OtpField-CkliY82J.js.map → OtpField-BoLxbGtY.js.map} +1 -1
- package/dist/{OtpField-on-K0_fM.cjs → OtpField-HMrxkdiy.cjs} +2 -2
- package/dist/{OtpField-on-K0_fM.cjs.map → OtpField-HMrxkdiy.cjs.map} +1 -1
- package/dist/{PageLayout-DGHu7Vm3.cjs → PageLayout-DtWG-6dn.cjs} +2 -2
- package/dist/{PageLayout-DGHu7Vm3.cjs.map → PageLayout-DtWG-6dn.cjs.map} +1 -1
- package/dist/{PageLayout-DzPh_G6H.js → PageLayout-G8F1WgC-.js} +2 -2
- package/dist/{PageLayout-DzPh_G6H.js.map → PageLayout-G8F1WgC-.js.map} +1 -1
- package/dist/{PageNotFound-CCFfPHgA.js → PageNotFound-CeKIMZ55.js} +9 -9
- package/dist/PageNotFound-CeKIMZ55.js.map +1 -0
- package/dist/PageNotFound-DG8xXPL3.cjs +2 -0
- package/dist/PageNotFound-DG8xXPL3.cjs.map +1 -0
- package/dist/Pagination-Br8P3KwE.cjs +2 -0
- package/dist/{Pagination-BdVebW2L.cjs.map → Pagination-Br8P3KwE.cjs.map} +1 -1
- package/dist/Pagination-CE1uKrR4.js +139 -0
- package/dist/{Pagination-CmskZjcz.js.map → Pagination-CE1uKrR4.js.map} +1 -1
- package/dist/PaletteField-BBPbkDcp.js +54 -0
- package/dist/PaletteField-BBPbkDcp.js.map +1 -0
- package/dist/PaletteField-DwvSn6V6.cjs +2 -0
- package/dist/PaletteField-DwvSn6V6.cjs.map +1 -0
- package/dist/PhoneField-B-L0xAtD.js +372 -0
- package/dist/PhoneField-B-L0xAtD.js.map +1 -0
- package/dist/PhoneField-BclMbl7L.cjs +2 -0
- package/dist/PhoneField-BclMbl7L.cjs.map +1 -0
- package/dist/Popconfirm-BgpvCBy1.js +113 -0
- package/dist/Popconfirm-BgpvCBy1.js.map +1 -0
- package/dist/Popconfirm-DD8F8SXn.cjs +2 -0
- package/dist/Popconfirm-DD8F8SXn.cjs.map +1 -0
- package/dist/{Popover-CgIU4Rhg.js → Popover-B82Id9Ut.js} +2 -2
- package/dist/{Popover-CgIU4Rhg.js.map → Popover-B82Id9Ut.js.map} +1 -1
- package/dist/{Popover-CBI1icIM.cjs → Popover-DAT6DcM9.cjs} +2 -2
- package/dist/{Popover-CBI1icIM.cjs.map → Popover-DAT6DcM9.cjs.map} +1 -1
- package/dist/Progress-L5koRRJp.js +119 -0
- package/dist/Progress-L5koRRJp.js.map +1 -0
- package/dist/Progress-_aZ8XOJr.cjs +2 -0
- package/dist/Progress-_aZ8XOJr.cjs.map +1 -0
- package/dist/QrCode-BQ1eUiAJ.cjs +2 -0
- package/dist/QrCode-BQ1eUiAJ.cjs.map +1 -0
- package/dist/QrCode-osD23Vkt.js +80 -0
- package/dist/QrCode-osD23Vkt.js.map +1 -0
- package/dist/QueryError-BMH8X69O.cjs +2 -0
- package/dist/QueryError-BMH8X69O.cjs.map +1 -0
- package/dist/QueryError-tBuIQRgv.js +19 -0
- package/dist/QueryError-tBuIQRgv.js.map +1 -0
- package/dist/RadioGroup-BcFBdFhh.cjs +2 -0
- package/dist/{RadioGroup-C8u7eNBS.cjs.map → RadioGroup-BcFBdFhh.cjs.map} +1 -1
- package/dist/RadioGroup-dVx_hMCY.js +141 -0
- package/dist/{RadioGroup-DbodUJW8.js.map → RadioGroup-dVx_hMCY.js.map} +1 -1
- package/dist/RemoveDialog-C9_UzFBf.js +109 -0
- package/dist/RemoveDialog-C9_UzFBf.js.map +1 -0
- package/dist/RemoveDialog-DBKYnTYU.cjs +2 -0
- package/dist/RemoveDialog-DBKYnTYU.cjs.map +1 -0
- package/dist/RichTextEditor-DTz7Qcn_.cjs +2 -0
- package/dist/RichTextEditor-DTz7Qcn_.cjs.map +1 -0
- package/dist/{RichTextEditor-Bm8FFbcR.js → RichTextEditor-fXcbUjTl.js} +13 -13
- package/dist/RichTextEditor-fXcbUjTl.js.map +1 -0
- package/dist/RootLayout-DG2dXhXn.cjs +2 -0
- package/dist/{RootLayout-kssj9exn.cjs.map → RootLayout-DG2dXhXn.cjs.map} +1 -1
- package/dist/RootLayout-p8ArA6wA.js +515 -0
- package/dist/{RootLayout-Cf7Rr9Iz.js.map → RootLayout-p8ArA6wA.js.map} +1 -1
- package/dist/Select-BAR_aVSz.js +199 -0
- package/dist/Select-BAR_aVSz.js.map +1 -0
- package/dist/Select-BuVfUiw-.cjs +2 -0
- package/dist/Select-BuVfUiw-.cjs.map +1 -0
- package/dist/{Sidebar-YH-DoNG9.js → Sidebar-CsWcjSTx.js} +193 -183
- package/dist/Sidebar-CsWcjSTx.js.map +1 -0
- package/dist/Sidebar-NI5HGGYF.cjs +2 -0
- package/dist/Sidebar-NI5HGGYF.cjs.map +1 -0
- package/dist/Skeleton-DK0lAjS9.cjs +2 -0
- package/dist/Skeleton-DK0lAjS9.cjs.map +1 -0
- package/dist/Skeleton-_-uGax2j.js +56 -0
- package/dist/Skeleton-_-uGax2j.js.map +1 -0
- package/dist/Slider-Cu1FhxR2.cjs +2 -0
- package/dist/{Slider-dxYVXRev.cjs.map → Slider-Cu1FhxR2.cjs.map} +1 -1
- package/dist/Slider-DoQJWgGU.js +184 -0
- package/dist/{Slider-oGXd5e9X.js.map → Slider-DoQJWgGU.js.map} +1 -1
- package/dist/{SpeedDial-9_Yk8AGx.cjs → SpeedDial-C_rZkHmF.cjs} +2 -2
- package/dist/{SpeedDial-9_Yk8AGx.cjs.map → SpeedDial-C_rZkHmF.cjs.map} +1 -1
- package/dist/{SpeedDial-DWNuC6f8.js → SpeedDial-DF-ILheU.js} +2 -2
- package/dist/{SpeedDial-DWNuC6f8.js.map → SpeedDial-DF-ILheU.js.map} +1 -1
- package/dist/{Stepper-CuqFpamY.js → Stepper-B39Ax_w6.js} +70 -70
- package/dist/{Stepper-CuqFpamY.js.map → Stepper-B39Ax_w6.js.map} +1 -1
- package/dist/Stepper-CT7n113R.cjs +2 -0
- package/dist/{Stepper-B1z_u650.cjs.map → Stepper-CT7n113R.cjs.map} +1 -1
- package/dist/{SwatchPicker-CCJltwHI.cjs → SwatchPicker-BWXqgsEy.cjs} +2 -2
- package/dist/{SwatchPicker-CCJltwHI.cjs.map → SwatchPicker-BWXqgsEy.cjs.map} +1 -1
- package/dist/{SwatchPicker-CqyWngFJ.js → SwatchPicker-Bpxk0IOe.js} +3 -3
- package/dist/{SwatchPicker-CqyWngFJ.js.map → SwatchPicker-Bpxk0IOe.js.map} +1 -1
- package/dist/Switch-DSs2Y0IR.cjs +2 -0
- package/dist/{Switch-DRkZ6kHJ.cjs.map → Switch-DSs2Y0IR.cjs.map} +1 -1
- package/dist/Switch-Jh2Ch8GO.js +85 -0
- package/dist/{Switch-DMPJ0fhB.js.map → Switch-Jh2Ch8GO.js.map} +1 -1
- package/dist/Table-CH_oiEP3.js +1170 -0
- package/dist/Table-CH_oiEP3.js.map +1 -0
- package/dist/Table-DD_uysnY.cjs +2 -0
- package/dist/Table-DD_uysnY.cjs.map +1 -0
- package/dist/Tabs-By86Cmpw.js +190 -0
- package/dist/{Tabs-ytbBzAxG.js.map → Tabs-By86Cmpw.js.map} +1 -1
- package/dist/Tabs-C1N9FgAq.cjs +2 -0
- package/dist/{Tabs-BiKDy_fv.cjs.map → Tabs-C1N9FgAq.cjs.map} +1 -1
- package/dist/{TagsField-CEt_PC5y.js → TagsField-BiOyAadf.js} +5 -5
- package/dist/{TagsField-CEt_PC5y.js.map → TagsField-BiOyAadf.js.map} +1 -1
- package/dist/{TagsField-DpDbf0ru.cjs → TagsField-RX-x45-j.cjs} +2 -2
- package/dist/{TagsField-DpDbf0ru.cjs.map → TagsField-RX-x45-j.cjs.map} +1 -1
- package/dist/{TextField-Df_kGy2l.cjs → TextField-CdbanZuk.cjs} +2 -2
- package/dist/{TextField-Df_kGy2l.cjs.map → TextField-CdbanZuk.cjs.map} +1 -1
- package/dist/{TextField-BWdmF-HE.js → TextField-CkronCRC.js} +5 -5
- package/dist/{TextField-BWdmF-HE.js.map → TextField-CkronCRC.js.map} +1 -1
- package/dist/TextField.module-6gYcR9TL.js +27 -0
- package/dist/TextField.module-6gYcR9TL.js.map +1 -0
- package/dist/TextField.module-DsNCo8vN.cjs +2 -0
- package/dist/TextField.module-DsNCo8vN.cjs.map +1 -0
- package/dist/{ThemeToggle-CgxF6oUu.js → ThemeToggle-BYUEH6be.js} +3 -3
- package/dist/{ThemeToggle-CgxF6oUu.js.map → ThemeToggle-BYUEH6be.js.map} +1 -1
- package/dist/{ThemeToggle-BJdXhmfc.cjs → ThemeToggle-C4QhDd76.cjs} +2 -2
- package/dist/{ThemeToggle-BJdXhmfc.cjs.map → ThemeToggle-C4QhDd76.cjs.map} +1 -1
- package/dist/{TimeColumns-DxVN0V8l.cjs → TimeColumns-Cl0_IRf0.cjs} +2 -2
- package/dist/{TimeColumns-DxVN0V8l.cjs.map → TimeColumns-Cl0_IRf0.cjs.map} +1 -1
- package/dist/{TimeColumns-n-fz50mr.js → TimeColumns-yzjScNU8.js} +3 -3
- package/dist/{TimeColumns-n-fz50mr.js.map → TimeColumns-yzjScNU8.js.map} +1 -1
- package/dist/{TimePicker-DvoemiGz.cjs → TimePicker-CJGVGETl.cjs} +2 -2
- package/dist/{TimePicker-DvoemiGz.cjs.map → TimePicker-CJGVGETl.cjs.map} +1 -1
- package/dist/{TimePicker-Bopxx3zU.js → TimePicker-CoIdMv1S.js} +8 -8
- package/dist/{TimePicker-Bopxx3zU.js.map → TimePicker-CoIdMv1S.js.map} +1 -1
- package/dist/Timeline-CKEosWka.cjs +2 -0
- package/dist/{Timeline-ONU_3gi3.cjs.map → Timeline-CKEosWka.cjs.map} +1 -1
- package/dist/Timeline-ufVXmpMY.js +71 -0
- package/dist/{Timeline-D3kzt1dy.js.map → Timeline-ufVXmpMY.js.map} +1 -1
- package/dist/{Toaster-BxIY2H4V.js → Toaster-Dhz2mYq_.js} +2 -2
- package/dist/{Toaster-BxIY2H4V.js.map → Toaster-Dhz2mYq_.js.map} +1 -1
- package/dist/{Toaster-DZSzFse_.cjs → Toaster-lv5cJhib.cjs} +2 -2
- package/dist/{Toaster-DZSzFse_.cjs.map → Toaster-lv5cJhib.cjs.map} +1 -1
- package/dist/{TranslatedFields-BtDLkQy7.cjs → TranslatedFields-BCJ86Tqp.cjs} +2 -2
- package/dist/{TranslatedFields-BtDLkQy7.cjs.map → TranslatedFields-BCJ86Tqp.cjs.map} +1 -1
- package/dist/{TranslatedFields-DmR8LKSG.js → TranslatedFields-BtNUAyrY.js} +5 -5
- package/dist/{TranslatedFields-DmR8LKSG.js.map → TranslatedFields-BtNUAyrY.js.map} +1 -1
- package/dist/Typography-B6ASPrzT.cjs +2 -0
- package/dist/Typography-B6ASPrzT.cjs.map +1 -0
- package/dist/Typography-CJv5AnRP.js +70 -0
- package/dist/Typography-CJv5AnRP.js.map +1 -0
- package/dist/UserCard-B-eNyZuT.js +78 -0
- package/dist/UserCard-B-eNyZuT.js.map +1 -0
- package/dist/UserCard-CiQUrZjb.cjs +2 -0
- package/dist/UserCard-CiQUrZjb.cjs.map +1 -0
- package/dist/app/AdminRoot.d.cts +10 -3
- package/dist/app/AdminRoot.d.ts +10 -3
- package/dist/color-CgR8ybWZ.cjs +2 -0
- package/dist/color-CgR8ybWZ.cjs.map +1 -0
- package/dist/color-EQJ2DrcQ.js +24 -0
- package/dist/color-EQJ2DrcQ.js.map +1 -0
- 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/Avatar.d.cts +7 -1
- package/dist/components/Avatar/Avatar.d.ts +7 -1
- package/dist/components/Avatar/index.cjs +1 -1
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.cjs +1 -1
- package/dist/components/Badge/index.js +1 -1
- 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/Card.d.cts +2 -0
- package/dist/components/Card/Card.d.ts +2 -0
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Checkbox/index.cjs +1 -1
- package/dist/components/Checkbox/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/ColorPicker.d.cts +5 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +5 -0
- package/dist/components/ColorPicker/ColorPickerPanel.d.cts +6 -1
- package/dist/components/ColorPicker/ColorPickerPanel.d.ts +6 -1
- package/dist/components/ColorPicker/colorUtils.d.cts +3 -12
- package/dist/components/ColorPicker/colorUtils.d.ts +3 -12
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/ColorRamp/ColorRamp.d.cts +36 -0
- package/dist/components/ColorRamp/ColorRamp.d.ts +36 -0
- package/dist/components/ColorRamp/index.cjs +2 -0
- package/dist/components/ColorRamp/index.cjs.map +1 -0
- package/dist/components/ColorRamp/index.d.cts +3 -0
- package/dist/components/ColorRamp/index.d.ts +3 -0
- package/dist/components/ColorRamp/index.js +6 -0
- package/dist/components/ColorRamp/index.js.map +1 -0
- 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/DescriptionList.d.cts +76 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +76 -0
- package/dist/components/DescriptionList/index.cjs +2 -0
- package/dist/components/DescriptionList/index.cjs.map +1 -0
- package/dist/components/DescriptionList/index.d.cts +2 -0
- package/dist/components/DescriptionList/index.d.ts +2 -0
- package/dist/components/DescriptionList/index.js +6 -0
- package/dist/components/DescriptionList/index.js.map +1 -0
- package/dist/components/Dropdown/index.cjs +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/EmptyState/EmptyState.d.cts +4 -1
- package/dist/components/EmptyState/EmptyState.d.ts +4 -1
- package/dist/components/EmptyState/index.cjs +1 -1
- package/dist/components/EmptyState/index.js +1 -1
- package/dist/components/ErrorState/ErrorBoundary.d.cts +35 -0
- package/dist/components/ErrorState/ErrorBoundary.d.ts +35 -0
- package/dist/components/ErrorState/ErrorState.d.cts +36 -0
- package/dist/components/ErrorState/ErrorState.d.ts +36 -0
- package/dist/components/ErrorState/QueryError.d.cts +18 -0
- package/dist/components/ErrorState/QueryError.d.ts +18 -0
- package/dist/components/ErrorState/errorMessage.d.cts +14 -0
- package/dist/components/ErrorState/errorMessage.d.ts +14 -0
- package/dist/components/ErrorState/index.cjs +2 -0
- package/dist/components/ErrorState/index.cjs.map +1 -0
- package/dist/components/ErrorState/index.d.cts +7 -0
- package/dist/components/ErrorState/index.d.ts +7 -0
- package/dist/components/ErrorState/index.js +11 -0
- package/dist/components/ErrorState/index.js.map +1 -0
- package/dist/components/FileCard/index.cjs +1 -1
- package/dist/components/FileCard/index.js +1 -1
- 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/FloatingPanel/FloatingPanel.d.cts +4 -0
- package/dist/components/FloatingPanel/FloatingPanel.d.ts +4 -0
- package/dist/components/FullscreenToggle/index.cjs +1 -1
- package/dist/components/FullscreenToggle/index.js +1 -1
- package/dist/components/IconButton/index.cjs +1 -1
- package/dist/components/IconButton/index.js +1 -1
- package/dist/components/List/List.d.cts +13 -3
- package/dist/components/List/List.d.ts +13 -3
- package/dist/components/List/ListItem.d.cts +5 -0
- package/dist/components/List/ListItem.d.ts +5 -0
- package/dist/components/List/index.cjs +1 -1
- package/dist/components/List/index.js +4 -5
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/List/listContext.d.cts +9 -3
- package/dist/components/List/listContext.d.ts +9 -3
- package/dist/components/Loader/index.cjs +1 -1
- package/dist/components/Loader/index.js +1 -1
- package/dist/components/MobileFrame/MobileFrame.d.cts +45 -0
- package/dist/components/MobileFrame/MobileFrame.d.ts +45 -0
- package/dist/components/MobileFrame/frames.d.cts +27 -0
- package/dist/components/MobileFrame/frames.d.ts +27 -0
- package/dist/components/MobileFrame/index.cjs +2 -0
- package/dist/components/MobileFrame/index.cjs.map +1 -0
- package/dist/components/MobileFrame/index.d.cts +4 -0
- package/dist/components/MobileFrame/index.d.ts +4 -0
- package/dist/components/MobileFrame/index.js +8 -0
- package/dist/components/MobileFrame/index.js.map +1 -0
- package/dist/components/Modal/Modal.d.cts +2 -0
- package/dist/components/Modal/Modal.d.ts +2 -0
- 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/MultilineTextField/index.cjs +1 -1
- package/dist/components/MultilineTextField/index.js +1 -1
- package/dist/components/NumberField/index.cjs +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OptionMenu/OptionMenu.d.cts +40 -0
- package/dist/components/OptionMenu/OptionMenu.d.ts +40 -0
- package/dist/components/OptionMenu/useOptionMenu.d.cts +81 -0
- package/dist/components/OptionMenu/useOptionMenu.d.ts +81 -0
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.js +1 -1
- package/dist/components/PageLayout/index.cjs +1 -1
- package/dist/components/PageLayout/index.js +1 -1
- package/dist/components/PageNotFound/PageNotFound.d.cts +1 -1
- package/dist/components/PageNotFound/PageNotFound.d.ts +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/PaletteField.d.cts +30 -0
- package/dist/components/PaletteField/PaletteField.d.ts +30 -0
- package/dist/components/PaletteField/index.cjs +2 -0
- package/dist/components/PaletteField/index.cjs.map +1 -0
- package/dist/components/PaletteField/index.d.cts +2 -0
- package/dist/components/PaletteField/index.d.ts +2 -0
- package/dist/components/PaletteField/index.js +6 -0
- package/dist/components/PaletteField/index.js.map +1 -0
- package/dist/components/PhoneField/PhoneField.d.cts +54 -0
- package/dist/components/PhoneField/PhoneField.d.ts +54 -0
- package/dist/components/PhoneField/index.cjs +2 -0
- package/dist/components/PhoneField/index.cjs.map +1 -0
- package/dist/components/PhoneField/index.d.cts +4 -0
- package/dist/components/PhoneField/index.d.ts +4 -0
- package/dist/components/PhoneField/index.js +7 -0
- package/dist/components/PhoneField/index.js.map +1 -0
- package/dist/components/PhoneField/phone.d.cts +50 -0
- package/dist/components/PhoneField/phone.d.ts +50 -0
- package/dist/components/Popconfirm/Popconfirm.d.cts +53 -0
- package/dist/components/Popconfirm/Popconfirm.d.ts +53 -0
- package/dist/components/Popconfirm/index.cjs +2 -0
- package/dist/components/Popconfirm/index.cjs.map +1 -0
- package/dist/components/Popconfirm/index.d.cts +2 -0
- package/dist/components/Popconfirm/index.d.ts +2 -0
- package/dist/components/Popconfirm/index.js +6 -0
- package/dist/components/Popconfirm/index.js.map +1 -0
- package/dist/components/Popover/index.cjs +1 -1
- package/dist/components/Popover/index.js +1 -1
- package/dist/components/Progress/Progress.d.cts +50 -0
- package/dist/components/Progress/Progress.d.ts +50 -0
- package/dist/components/Progress/index.cjs +2 -0
- package/dist/components/Progress/index.cjs.map +1 -0
- package/dist/components/Progress/index.d.cts +2 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Progress/index.js +6 -0
- package/dist/components/Progress/index.js.map +1 -0
- package/dist/components/QrCode/QrCode.d.cts +3 -0
- package/dist/components/QrCode/QrCode.d.ts +3 -0
- package/dist/components/QrCode/index.cjs +1 -1
- package/dist/components/QrCode/index.js +1 -1
- package/dist/components/Radio/index.cjs +1 -1
- package/dist/components/Radio/index.js +1 -1
- package/dist/components/RemoveDialog/RemoveDialog.d.cts +8 -1
- package/dist/components/RemoveDialog/RemoveDialog.d.ts +8 -1
- package/dist/components/RemoveDialog/index.cjs +1 -1
- package/dist/components/RemoveDialog/index.js +1 -1
- package/dist/components/RichTextEditor/index.cjs +1 -1
- package/dist/components/RichTextEditor/index.js +1 -1
- package/dist/components/RootLayout/index.cjs +1 -1
- package/dist/components/RootLayout/index.js +1 -1
- package/dist/components/Select/Select.d.cts +2 -12
- package/dist/components/Select/Select.d.ts +2 -12
- 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/Skeleton/Skeleton.d.cts +31 -0
- package/dist/components/Skeleton/Skeleton.d.ts +31 -0
- package/dist/components/Skeleton/index.cjs +2 -0
- package/dist/components/Skeleton/index.cjs.map +1 -0
- package/dist/components/Skeleton/index.d.cts +2 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Skeleton/index.js +6 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- 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/Switch/index.cjs +1 -1
- package/dist/components/Switch/index.js +1 -1
- package/dist/components/Table/Table.d.cts +7 -1
- package/dist/components/Table/Table.d.ts +7 -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/index.cjs +1 -1
- package/dist/components/Timeline/index.js +1 -1
- package/dist/components/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/TranslatedFields/index.cjs +1 -1
- package/dist/components/TranslatedFields/index.js +1 -1
- package/dist/components/Typography/Typography.d.cts +10 -3
- package/dist/components/Typography/Typography.d.ts +10 -3
- package/dist/components/Typography/index.cjs +1 -1
- package/dist/components/Typography/index.js +1 -1
- package/dist/components/UserCard/UserCard.d.cts +3 -1
- package/dist/components/UserCard/UserCard.d.ts +3 -1
- package/dist/components/UserCard/index.cjs +1 -1
- package/dist/components/UserCard/index.js +1 -1
- package/dist/components/index.d.cts +9 -0
- package/dist/components/index.d.ts +9 -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 +171 -146
- package/dist/entries/components.js.map +1 -1
- package/dist/entries/helpers.cjs +1 -1
- package/dist/entries/helpers.d.cts +2 -0
- package/dist/entries/helpers.d.ts +2 -0
- package/dist/entries/helpers.js +18 -8
- package/dist/entries/helpers.js.map +1 -1
- package/dist/entries/i18n.cjs +1 -1
- package/dist/entries/i18n.js +2 -2
- package/dist/entries/theme.cjs +1 -1
- package/dist/entries/theme.js +1 -1
- package/dist/helpers/color.d.cts +17 -0
- package/dist/helpers/color.d.ts +17 -0
- package/dist/helpers/palette.d.cts +68 -0
- package/dist/helpers/palette.d.ts +68 -0
- package/dist/hooks/useOptionalPeer.d.cts +21 -0
- package/dist/hooks/useOptionalPeer.d.ts +21 -0
- package/dist/i18n/messages.d.cts +24 -0
- package/dist/i18n/messages.d.ts +24 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +16 -12
- package/dist/index.js +224 -189
- package/dist/index.js.map +1 -1
- package/dist/{messages-ogohLC5P.js → messages-BF2ft7yD.js} +201 -33
- package/dist/messages-BF2ft7yD.js.map +1 -0
- package/dist/messages-ihnE1jVG.cjs +36 -0
- package/dist/messages-ihnE1jVG.cjs.map +1 -0
- package/dist/palette-B031dM4E.js +70 -0
- package/dist/palette-B031dM4E.js.map +1 -0
- package/dist/palette-BycMHbED.cjs +2 -0
- package/dist/palette-BycMHbED.cjs.map +1 -0
- package/dist/theme/ConfigProvider.d.cts +8 -8
- package/dist/theme/ConfigProvider.d.ts +8 -8
- package/dist/useOptionMenu-C0xSaZ4t.cjs +2 -0
- package/dist/useOptionMenu-C0xSaZ4t.cjs.map +1 -0
- package/dist/useOptionMenu-Cq_eHdab.js +286 -0
- package/dist/useOptionMenu-Cq_eHdab.js.map +1 -0
- package/dist/useOptionalPeer-49f3XcO5.js +28 -0
- package/dist/useOptionalPeer-49f3XcO5.js.map +1 -0
- package/dist/useOptionalPeer-9Fkx5Leb.cjs +2 -0
- package/dist/useOptionalPeer-9Fkx5Leb.cjs.map +1 -0
- package/package.json +6 -1
- package/dist/AdminRoot-BkPPRkyQ.cjs +0 -2
- package/dist/AdminRoot-BkPPRkyQ.cjs.map +0 -1
- package/dist/AdminRoot-CgvtgUpW.js +0 -50
- package/dist/AdminRoot-CgvtgUpW.js.map +0 -1
- package/dist/Avatar-Dgf04PBC.cjs +0 -2
- package/dist/Avatar-Dgf04PBC.cjs.map +0 -1
- package/dist/Avatar-Q50J8wdN.js +0 -60
- package/dist/Avatar-Q50J8wdN.js.map +0 -1
- package/dist/Badge-BQpr2Jee.cjs +0 -2
- package/dist/Badge-DSWigoGC.js +0 -50
- package/dist/Button-CXmDOzPk.cjs +0 -2
- package/dist/Button-DBs8xnA5.js +0 -72
- package/dist/Card-DGF22HbS.cjs +0 -2
- package/dist/Card-DGF22HbS.cjs.map +0 -1
- package/dist/Card-DYKnWt-L.js +0 -118
- package/dist/Card-DYKnWt-L.js.map +0 -1
- package/dist/Checkbox-ZYOSBYRt.js +0 -98
- package/dist/Checkbox-fzJCwe0j.cjs +0 -2
- package/dist/Chip-gUH_7nQc.cjs +0 -2
- package/dist/ChoiceCardGroup-DBohUnRj.js +0 -181
- package/dist/ChoiceCardGroup-d0VVTUi5.cjs +0 -2
- package/dist/ColorPicker-DtzFwNWk.cjs +0 -2
- package/dist/ColorPicker-DtzFwNWk.cjs.map +0 -1
- package/dist/ColorPicker-Dw6Qk0iy.js.map +0 -1
- package/dist/ColorPickerPanel--wBX-m7J.cjs +0 -2
- package/dist/ColorPickerPanel--wBX-m7J.cjs.map +0 -1
- package/dist/ColorPickerPanel-Dp7bnnVf.js +0 -336
- package/dist/ColorPickerPanel-Dp7bnnVf.js.map +0 -1
- package/dist/ConfigProvider-Bszl3Wr3.cjs.map +0 -1
- package/dist/ConfigProvider-DR9YMy9U.js.map +0 -1
- package/dist/CopyButton-Ct-8AmmX.cjs +0 -2
- package/dist/CopyButton-DJ1PSJZU.js +0 -31
- package/dist/DashedButton-3C4IZuo4.cjs +0 -2
- package/dist/DashedButton-BXZAyMtw.js +0 -59
- package/dist/DatePicker.module-BZDftL4g.js +0 -138
- package/dist/DatePicker.module-tE-tGNBd.cjs +0 -2
- package/dist/EmptyState-BTd7aVgu.js +0 -38
- package/dist/EmptyState-BTd7aVgu.js.map +0 -1
- package/dist/EmptyState-Bv4XXnD1.cjs +0 -2
- package/dist/EmptyState-Bv4XXnD1.cjs.map +0 -1
- package/dist/FileCard-DW5Ur8Aj.cjs +0 -2
- package/dist/FileCard-DW5Ur8Aj.cjs.map +0 -1
- package/dist/FileCard-DY8N9Lzz.js +0 -148
- package/dist/FileCard-DY8N9Lzz.js.map +0 -1
- package/dist/FileUploader-B7VfhcR7.cjs +0 -2
- package/dist/FileUploader-B7VfhcR7.cjs.map +0 -1
- package/dist/FileUploader-BYF5FvUc.js +0 -684
- package/dist/FileUploader-BYF5FvUc.js.map +0 -1
- package/dist/FloatingPanel-BG9Uag__.js +0 -131
- package/dist/FloatingPanel-BG9Uag__.js.map +0 -1
- package/dist/FloatingPanel-U6sGYiSK.cjs +0 -2
- package/dist/FloatingPanel-U6sGYiSK.cjs.map +0 -1
- package/dist/IconButton-BEGWfcVc.js +0 -68
- package/dist/IconButton-BN-bZxEi.cjs +0 -2
- package/dist/List-ChXO0Hz-.cjs +0 -2
- package/dist/List-ChXO0Hz-.cjs.map +0 -1
- package/dist/List-LqbfF6gU.js +0 -26
- package/dist/List-LqbfF6gU.js.map +0 -1
- package/dist/ListItem-Cn15lJBr.js +0 -74
- package/dist/ListItem-Cn15lJBr.js.map +0 -1
- package/dist/ListItem-yXXjtepZ.cjs +0 -2
- package/dist/ListItem-yXXjtepZ.cjs.map +0 -1
- package/dist/Loader-B5YqzEYy.cjs +0 -2
- package/dist/Loader-BZIa8hwv.js +0 -29
- package/dist/Modal-0V-REVV-.cjs +0 -2
- package/dist/Modal-0V-REVV-.cjs.map +0 -1
- package/dist/Modal-B7yoFC3o.js +0 -195
- package/dist/Modal-B7yoFC3o.js.map +0 -1
- package/dist/MultiSelect-C8xuXaoR.js +0 -350
- package/dist/MultiSelect-C8xuXaoR.js.map +0 -1
- package/dist/MultiSelect-gj9Ymeh2.cjs +0 -2
- package/dist/MultiSelect-gj9Ymeh2.cjs.map +0 -1
- package/dist/PageNotFound-B8_eIT8p.cjs +0 -2
- package/dist/PageNotFound-B8_eIT8p.cjs.map +0 -1
- package/dist/PageNotFound-CCFfPHgA.js.map +0 -1
- package/dist/Pagination-BdVebW2L.cjs +0 -2
- package/dist/Pagination-CmskZjcz.js +0 -139
- package/dist/QrCode-Bcj9_Emc.js +0 -70
- package/dist/QrCode-Bcj9_Emc.js.map +0 -1
- package/dist/QrCode-DfDfGhG-.cjs +0 -2
- package/dist/QrCode-DfDfGhG-.cjs.map +0 -1
- package/dist/RadioGroup-C8u7eNBS.cjs +0 -2
- package/dist/RadioGroup-DbodUJW8.js +0 -141
- package/dist/RemoveDialog-CV75B0aN.js +0 -47
- package/dist/RemoveDialog-CV75B0aN.js.map +0 -1
- package/dist/RemoveDialog-DmOk0ezc.cjs +0 -2
- package/dist/RemoveDialog-DmOk0ezc.cjs.map +0 -1
- package/dist/RichTextEditor-Bm8FFbcR.js.map +0 -1
- package/dist/RichTextEditor-uXddgtlk.cjs +0 -2
- package/dist/RichTextEditor-uXddgtlk.cjs.map +0 -1
- package/dist/RootLayout-Cf7Rr9Iz.js +0 -515
- package/dist/RootLayout-kssj9exn.cjs +0 -2
- package/dist/Select-7vEGJCvA.cjs +0 -2
- package/dist/Select-7vEGJCvA.cjs.map +0 -1
- package/dist/Select-CdX3Ks7y.js +0 -338
- package/dist/Select-CdX3Ks7y.js.map +0 -1
- package/dist/Sidebar-DcKIEfhy.cjs +0 -2
- package/dist/Sidebar-DcKIEfhy.cjs.map +0 -1
- package/dist/Sidebar-YH-DoNG9.js.map +0 -1
- package/dist/Slider-dxYVXRev.cjs +0 -2
- package/dist/Slider-oGXd5e9X.js +0 -184
- package/dist/Stepper-B1z_u650.cjs +0 -2
- package/dist/Switch-DMPJ0fhB.js +0 -85
- package/dist/Switch-DRkZ6kHJ.cjs +0 -2
- package/dist/Table-BPit83Pn.cjs +0 -2
- package/dist/Table-BPit83Pn.cjs.map +0 -1
- package/dist/Table-Drdhfm99.js +0 -1090
- package/dist/Table-Drdhfm99.js.map +0 -1
- package/dist/Tabs-BiKDy_fv.cjs +0 -2
- package/dist/Tabs-ytbBzAxG.js +0 -190
- package/dist/TextField.module-QePvGeJ3.js +0 -27
- package/dist/TextField.module-QePvGeJ3.js.map +0 -1
- package/dist/TextField.module-m-UllwzG.cjs +0 -2
- package/dist/TextField.module-m-UllwzG.cjs.map +0 -1
- package/dist/Timeline-D3kzt1dy.js +0 -71
- package/dist/Timeline-ONU_3gi3.cjs +0 -2
- package/dist/Typography-BFatE1_A.cjs +0 -2
- package/dist/Typography-BFatE1_A.cjs.map +0 -1
- package/dist/Typography-Cta6Rg4L.js +0 -51
- package/dist/Typography-Cta6Rg4L.js.map +0 -1
- package/dist/UserCard-C1yFvVIc.cjs +0 -2
- package/dist/UserCard-C1yFvVIc.cjs.map +0 -1
- package/dist/UserCard-J8Bpbh3x.js +0 -74
- package/dist/UserCard-J8Bpbh3x.js.map +0 -1
- package/dist/messages-DKT0SRM0.cjs +0 -36
- package/dist/messages-DKT0SRM0.cjs.map +0 -1
- package/dist/messages-ogohLC5P.js.map +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx as i, jsxs as u } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as x, Component as R } from "react";
|
|
3
|
+
import { clsx as j } from "clsx";
|
|
4
|
+
import { B as C } from "./Button-BLW9yV8W.js";
|
|
5
|
+
import { E as I } from "./EmptyState-BtwuzX9Z.js";
|
|
6
|
+
import { I as B } from "./Icon-DaTvzLBu.js";
|
|
7
|
+
import { a as h } from "./ConfigProvider-B_RSn9bb.js";
|
|
8
|
+
function F(t, r = (e) => `Request failed (${e})`) {
|
|
9
|
+
var a, m, c;
|
|
10
|
+
if (t == null || t === !1) return;
|
|
11
|
+
if (typeof t == "string") return t.trim() || void 0;
|
|
12
|
+
if (typeof t != "object") return String(t);
|
|
13
|
+
const e = t, s = (m = (a = e.response) == null ? void 0 : a.data) == null ? void 0 : m.message;
|
|
14
|
+
if (typeof s == "string" && s.trim()) return s.trim();
|
|
15
|
+
if (typeof e.message == "string" && e.message.trim()) return e.message.trim();
|
|
16
|
+
const n = typeof e.status == "number" ? e.status : (c = e.response) == null ? void 0 : c.status;
|
|
17
|
+
if (typeof n == "number") return r(n);
|
|
18
|
+
}
|
|
19
|
+
function O(t) {
|
|
20
|
+
if (t != null) {
|
|
21
|
+
if (t instanceof Error) return t.stack || `${t.name}: ${t.message}`;
|
|
22
|
+
if (typeof t == "string") return t;
|
|
23
|
+
try {
|
|
24
|
+
return JSON.stringify(t, null, 2);
|
|
25
|
+
} catch {
|
|
26
|
+
return String(t);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const $ = "_errorState_aiagy_4", q = "_actions_aiagy_9", z = "_compact_aiagy_18", K = "_details_aiagy_23", M = "_summary_aiagy_29", V = "_pre_aiagy_36", o = {
|
|
31
|
+
errorState: $,
|
|
32
|
+
actions: q,
|
|
33
|
+
compact: z,
|
|
34
|
+
details: K,
|
|
35
|
+
summary: M,
|
|
36
|
+
pre: V
|
|
37
|
+
}, w = typeof process < "u" && process.env.NODE_ENV !== "production", J = x(function({
|
|
38
|
+
error: r,
|
|
39
|
+
title: e,
|
|
40
|
+
description: s,
|
|
41
|
+
icon: n = "Danger",
|
|
42
|
+
onRetry: a,
|
|
43
|
+
retryLabel: m,
|
|
44
|
+
showDetails: c = "dev",
|
|
45
|
+
compact: p = !1,
|
|
46
|
+
size: S,
|
|
47
|
+
pattern: _,
|
|
48
|
+
action: f,
|
|
49
|
+
className: E,
|
|
50
|
+
children: v,
|
|
51
|
+
...N
|
|
52
|
+
}, D) {
|
|
53
|
+
const l = h(), b = F(r, (k) => l("errorState.requestFailed", { status: k })), d = (c === "dev" ? w : c) ? O(r) : void 0, g = a != null ? /* @__PURE__ */ i(
|
|
54
|
+
C,
|
|
55
|
+
{
|
|
56
|
+
size: "sm",
|
|
57
|
+
variant: "outlined",
|
|
58
|
+
color: "primary",
|
|
59
|
+
startIcon: /* @__PURE__ */ i(B, { name: "RefreshRight" }),
|
|
60
|
+
onClick: a,
|
|
61
|
+
children: m ?? l("errorState.retry")
|
|
62
|
+
}
|
|
63
|
+
) : null;
|
|
64
|
+
return /* @__PURE__ */ u(
|
|
65
|
+
I,
|
|
66
|
+
{
|
|
67
|
+
ref: D,
|
|
68
|
+
role: "alert",
|
|
69
|
+
"aria-live": "polite",
|
|
70
|
+
color: "error",
|
|
71
|
+
icon: n,
|
|
72
|
+
title: e ?? l("errorState.title"),
|
|
73
|
+
description: s ?? b ?? l("errorState.description"),
|
|
74
|
+
size: S ?? (p ? "sm" : "md"),
|
|
75
|
+
pattern: _ ?? !p,
|
|
76
|
+
action: g || f ? /* @__PURE__ */ u("span", { className: o.actions, children: [
|
|
77
|
+
g,
|
|
78
|
+
f
|
|
79
|
+
] }) : void 0,
|
|
80
|
+
className: j(o.errorState, p && o.compact, E),
|
|
81
|
+
...N,
|
|
82
|
+
children: [
|
|
83
|
+
d != null && /* @__PURE__ */ u("details", { className: o.details, children: [
|
|
84
|
+
/* @__PURE__ */ i("summary", { className: o.summary, children: l("errorState.details") }),
|
|
85
|
+
/* @__PURE__ */ i("pre", { className: o.pre, children: d })
|
|
86
|
+
] }),
|
|
87
|
+
v
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
}), T = (t = [], r = []) => t.length !== r.length || t.some((e, s) => !Object.is(e, r[s])), y = (t) => t instanceof Error ? t : new Error(String(t));
|
|
92
|
+
function U({ error: t, reset: r }) {
|
|
93
|
+
const e = h();
|
|
94
|
+
return /* @__PURE__ */ i(J, { error: t, description: e("errorState.description"), onRetry: r });
|
|
95
|
+
}
|
|
96
|
+
class X extends R {
|
|
97
|
+
constructor() {
|
|
98
|
+
super(...arguments), this.state = { error: null }, this.reset = () => {
|
|
99
|
+
var r, e;
|
|
100
|
+
this.setState({ error: null }), (e = (r = this.props).onReset) == null || e.call(r);
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
static getDerivedStateFromError(r) {
|
|
104
|
+
return { error: y(r) };
|
|
105
|
+
}
|
|
106
|
+
componentDidCatch(r, e) {
|
|
107
|
+
var s, n;
|
|
108
|
+
(n = (s = this.props).onError) == null || n.call(s, y(r), e);
|
|
109
|
+
}
|
|
110
|
+
componentDidUpdate(r, e) {
|
|
111
|
+
this.state.error && e.error && T(r.resetKeys, this.props.resetKeys) && this.reset();
|
|
112
|
+
}
|
|
113
|
+
render() {
|
|
114
|
+
const { error: r } = this.state;
|
|
115
|
+
if (!r) return this.props.children;
|
|
116
|
+
const { fallback: e } = this.props;
|
|
117
|
+
return typeof e == "function" ? e(r, this.reset) : e !== void 0 ? e : /* @__PURE__ */ i(U, { error: r, reset: this.reset });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
X as E,
|
|
122
|
+
J as a,
|
|
123
|
+
F as b,
|
|
124
|
+
O as g
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=ErrorBoundary-DJ6R1M9k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary-DJ6R1M9k.js","sources":["../src/components/ErrorState/errorMessage.ts","../src/components/ErrorState/ErrorState.tsx","../src/components/ErrorState/ErrorBoundary.tsx"],"sourcesContent":["/**\n * Pull a human-readable message out of whatever was thrown / returned — the shapes admin apps actually see:\n *\n * 1. an axios-style error with a server body — `error.response.data.message` (the backend's own sentence)\n * 2. an `Error` (or anything with a string `message`) — `error.message`\n * 3. a raw HTTP response / status object — `{ status: 404, statusText }` → `\"Request failed (404)\"`\n * 4. a plain string\n *\n * Returns `undefined` when nothing usable is found (the caller shows its generic fallback). Pure — pass\n * `requestFailed` to localize case 3 (`{status}` is interpolated).\n */\nexport function getErrorMessage(\n error: unknown,\n requestFailed: (status: number) => string = (status) => `Request failed (${status})`,\n): string | undefined {\n if (error == null || error === false) return undefined\n if (typeof error === 'string') return error.trim() || undefined\n if (typeof error !== 'object') return String(error)\n\n const e = error as {\n message?: unknown\n status?: unknown\n response?: { data?: { message?: unknown }; status?: unknown }\n }\n const serverMessage = e.response?.data?.message\n if (typeof serverMessage === 'string' && serverMessage.trim()) return serverMessage.trim()\n if (typeof e.message === 'string' && e.message.trim()) return e.message.trim()\n const status = typeof e.status === 'number' ? e.status : e.response?.status\n if (typeof status === 'number') return requestFailed(status)\n return undefined\n}\n\n/** A stack / detail dump for the developer-facing details panel (Error → `name: message` + stack). */\nexport function getErrorDetails(error: unknown): string | undefined {\n if (error == null) return undefined\n if (error instanceof Error) return error.stack || `${error.name}: ${error.message}`\n if (typeof error === 'string') return error\n try {\n return JSON.stringify(error, null, 2)\n } catch {\n return String(error)\n }\n}\n","import { forwardRef, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { Button } from '../Button'\nimport { EmptyState, type EmptyStateProps } from '../EmptyState'\nimport { Icon } from '../Icon'\nimport type { IconName } from '../../icons/names'\nimport { getErrorDetails, getErrorMessage } from './errorMessage'\nimport styles from './ErrorState.module.css'\n\n// `process.env.NODE_ENV` is inlined by every consumer bundler (React's own convention); declared locally\n// since the library ships without `@types/node`.\ndeclare const process: { env: { NODE_ENV?: string } } | undefined\nconst IS_DEV = typeof process !== 'undefined' && process.env.NODE_ENV !== 'production'\n\nexport interface ErrorStateProps extends Omit<EmptyStateProps, 'icon' | 'title' | 'color'> {\n /**\n * What failed — an `Error`, a string, an axios-style error, a `{ message }` or a raw `{ status }`\n * response. Its message becomes the description (unless `description` is given) and its stack feeds\n * the details panel.\n */\n error?: unknown\n /** Heading. Defaults to the localized \"Something went wrong\". */\n title?: ReactNode\n /** Leading icon — a known `IconName`, any node, or `false`. Defaults to `Danger`, tinted `error`. */\n icon?: IconName | ReactNode | false\n /** Adds a \"Try again\" button that calls this (e.g. a query's `refetch`). */\n onRetry?: () => void\n /** Retry button label. Defaults to the localized \"Try again\". */\n retryLabel?: ReactNode\n /**\n * Show a collapsible technical details panel (stack / raw error). `'dev'` (default) shows it only in\n * development builds; `true` always; `false` never.\n */\n showDetails?: boolean | 'dev'\n /** The inline variant — small, no hero pattern — for inside a table, card or panel. Defaults to `false`. */\n compact?: boolean\n}\n\n/**\n * The \"loading failed\" counterpart of `EmptyState` — a semantic preset over it: an `error`-tinted\n * `Danger` puck, a localized \"Something went wrong\" title, the failure's own message as the description\n * (extracted from an `Error`, a string, an axios-style `response.data.message`, a `{ message }`, or a raw\n * `{ status }` response → \"Request failed (404)\"), an optional **Try again** button (`onRetry`), and a\n * developer-only details panel with the stack (`showDetails`, default `'dev'`). `compact` is the inline\n * variant for a table / card. Announced to assistive tech (`role=\"alert\"`, `aria-live=\"polite\"`).\n * `forwardRef` to the root; any other `EmptyState` prop (`size`, `pattern`, `action`, …) passes through.\n */\nexport const ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(function ErrorState(\n {\n error,\n title,\n description,\n icon = 'Danger',\n onRetry,\n retryLabel,\n showDetails = 'dev',\n compact = false,\n size,\n pattern,\n action,\n className,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const message = getErrorMessage(error, (status) => t('errorState.requestFailed', { status }))\n const details = (showDetails === 'dev' ? IS_DEV : showDetails)\n ? getErrorDetails(error)\n : undefined\n\n const retry =\n onRetry != null ? (\n <Button\n size=\"sm\"\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<Icon name=\"RefreshRight\" />}\n onClick={onRetry}\n >\n {retryLabel ?? t('errorState.retry')}\n </Button>\n ) : null\n\n return (\n <EmptyState\n ref={ref}\n role=\"alert\"\n aria-live=\"polite\"\n color=\"error\"\n icon={icon}\n title={title ?? t('errorState.title')}\n description={description ?? message ?? t('errorState.description')}\n size={size ?? (compact ? 'sm' : 'md')}\n pattern={pattern ?? !compact}\n action={\n retry || action ? (\n <span className={styles.actions}>\n {retry}\n {action}\n </span>\n ) : undefined\n }\n className={clsx(styles.errorState, compact && styles.compact, className)}\n {...props}\n >\n {details != null && (\n <details className={styles.details}>\n <summary className={styles.summary}>{t('errorState.details')}</summary>\n <pre className={styles.pre}>{details}</pre>\n </details>\n )}\n {children}\n </EmptyState>\n )\n})\n","import { Component, type ErrorInfo, type ReactNode } from 'react'\nimport { useT } from '../../theme'\nimport { ErrorState } from './ErrorState'\n\nexport interface ErrorBoundaryProps {\n /**\n * What to render after a crash — a node, or `(error, reset) => node`. Defaults to an `ErrorState` with\n * a friendly description, a **Try again** button (`reset`) and the stack in dev.\n */\n fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode)\n /** Report the crash (e.g. `Sentry.captureException`). */\n onError?: (error: Error, info: ErrorInfo) => void\n /** Called after the boundary resets (Try again, or a `resetKeys` change). */\n onReset?: () => void\n /** Reset automatically when any of these change (shallow) — e.g. `[location.pathname]` clears on navigation. */\n resetKeys?: unknown[]\n children?: ReactNode\n}\n\ninterface ErrorBoundaryState {\n error: Error | null\n}\n\nconst keysChanged = (a: unknown[] = [], b: unknown[] = []) =>\n a.length !== b.length || a.some((v, i) => !Object.is(v, b[i]))\n\nconst toError = (value: unknown) => (value instanceof Error ? value : new Error(String(value)))\n\n/** The default crash screen — a function component so it can read the localized strings. */\nfunction DefaultFallback({ error, reset }: { error: Error; reset: () => void }) {\n const t = useT()\n // a render crash message (\"Cannot read properties of undefined\") is for developers, not users —\n // the description stays friendly and the raw error lives in the dev-only details panel\n return <ErrorState error={error} description={t('errorState.description')} onRetry={reset} />\n}\n\n/**\n * Catches render errors in its subtree and shows a fallback instead of unmounting the whole app (a\n * white screen). The one class component in the library — React only offers error boundaries as\n * classes. `fallback` is a node or `(error, reset) => node` (default: an `ErrorState` with Try again);\n * `onError` reports the crash (Sentry); `resetKeys` resets it when they change (e.g. the route path, so\n * navigating away recovers); `onReset` runs after any reset. `AdminRoot` mounts one around the page\n * content automatically, so a crashing page keeps the sidebar + header.\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null }\n\n static getDerivedStateFromError(error: unknown): ErrorBoundaryState {\n return { error: toError(error) }\n }\n\n componentDidCatch(error: unknown, info: ErrorInfo) {\n this.props.onError?.(toError(error), info)\n }\n\n componentDidUpdate(prev: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n // reset only an error that was ALREADY showing before the keys changed — if the key change itself is\n // what crashed the subtree (same render), resetting would just re-render it into a second throw\n if (this.state.error && prevState.error && keysChanged(prev.resetKeys, this.props.resetKeys)) {\n this.reset()\n }\n }\n\n reset = () => {\n this.setState({ error: null })\n this.props.onReset?.()\n }\n\n render() {\n const { error } = this.state\n if (!error) return this.props.children\n const { fallback } = this.props\n if (typeof fallback === 'function') return fallback(error, this.reset)\n if (fallback !== undefined) return fallback\n return <DefaultFallback error={error} reset={this.reset} />\n }\n}\n"],"names":["getErrorMessage","error","requestFailed","status","serverMessage","_b","_a","_c","getErrorDetails","IS_DEV","ErrorState","forwardRef","title","description","icon","onRetry","retryLabel","showDetails","compact","size","pattern","action","className","children","props","ref","t","useT","message","details","retry","jsx","Button","Icon","jsxs","EmptyState","styles","clsx","keysChanged","a","b","v","i","toError","value","DefaultFallback","reset","ErrorBoundary","Component","info","prev","prevState","fallback"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),y=require("react"),k=require("clsx"),C=require("./Button-KRGjJdMV.cjs"),B=require("./EmptyState-CO_NRZ6w.cjs"),I=require("./Icon-BVULqOJD.cjs"),h=require("./ConfigProvider-BElY0HuV.cjs");function S(t,r=e=>`Request failed (${e})`){var a,l,c;if(t==null||t===!1)return;if(typeof t=="string")return t.trim()||void 0;if(typeof t!="object")return String(t);const e=t,s=(l=(a=e.response)==null?void 0:a.data)==null?void 0:l.message;if(typeof s=="string"&&s.trim())return s.trim();if(typeof e.message=="string"&&e.message.trim())return e.message.trim();const o=typeof e.status=="number"?e.status:(c=e.response)==null?void 0:c.status;if(typeof o=="number")return r(o)}function E(t){if(t!=null){if(t instanceof Error)return t.stack||`${t.name}: ${t.message}`;if(typeof t=="string")return t;try{return JSON.stringify(t,null,2)}catch{return String(t)}}}const F="_errorState_aiagy_4",M="_actions_aiagy_9",O="_compact_aiagy_18",$="_details_aiagy_23",z="_summary_aiagy_29",K="_pre_aiagy_36",i={errorState:F,actions:M,compact:O,details:$,summary:z,pre:K},T=typeof process<"u"&&process.env.NODE_ENV!=="production",_=y.forwardRef(function({error:r,title:e,description:s,icon:o="Danger",onRetry:a,retryLabel:l,showDetails:c="dev",compact:d=!1,size:v,pattern:x,action:p,className:j,children:q,...D},N){const u=h.useT(),R=S(r,b=>u("errorState.requestFailed",{status:b})),m=(c==="dev"?T:c)?E(r):void 0,f=a!=null?n.jsx(C.Button,{size:"sm",variant:"outlined",color:"primary",startIcon:n.jsx(I.Icon,{name:"RefreshRight"}),onClick:a,children:l??u("errorState.retry")}):null;return n.jsxs(B.EmptyState,{ref:N,role:"alert","aria-live":"polite",color:"error",icon:o,title:e??u("errorState.title"),description:s??R??u("errorState.description"),size:v??(d?"sm":"md"),pattern:x??!d,action:f||p?n.jsxs("span",{className:i.actions,children:[f,p]}):void 0,className:k.clsx(i.errorState,d&&i.compact,j),...D,children:[m!=null&&n.jsxs("details",{className:i.details,children:[n.jsx("summary",{className:i.summary,children:u("errorState.details")}),n.jsx("pre",{className:i.pre,children:m})]}),q]})}),V=(t=[],r=[])=>t.length!==r.length||t.some((e,s)=>!Object.is(e,r[s])),g=t=>t instanceof Error?t:new Error(String(t));function w({error:t,reset:r}){const e=h.useT();return n.jsx(_,{error:t,description:e("errorState.description"),onRetry:r})}class J extends y.Component{constructor(){super(...arguments),this.state={error:null},this.reset=()=>{var r,e;this.setState({error:null}),(e=(r=this.props).onReset)==null||e.call(r)}}static getDerivedStateFromError(r){return{error:g(r)}}componentDidCatch(r,e){var s,o;(o=(s=this.props).onError)==null||o.call(s,g(r),e)}componentDidUpdate(r,e){this.state.error&&e.error&&V(r.resetKeys,this.props.resetKeys)&&this.reset()}render(){const{error:r}=this.state;if(!r)return this.props.children;const{fallback:e}=this.props;return typeof e=="function"?e(r,this.reset):e!==void 0?e:n.jsx(w,{error:r,reset:this.reset})}}exports.ErrorBoundary=J;exports.ErrorState=_;exports.getErrorDetails=E;exports.getErrorMessage=S;
|
|
2
|
+
//# sourceMappingURL=ErrorBoundary-unvC1vZQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary-unvC1vZQ.cjs","sources":["../src/components/ErrorState/errorMessage.ts","../src/components/ErrorState/ErrorState.tsx","../src/components/ErrorState/ErrorBoundary.tsx"],"sourcesContent":["/**\n * Pull a human-readable message out of whatever was thrown / returned — the shapes admin apps actually see:\n *\n * 1. an axios-style error with a server body — `error.response.data.message` (the backend's own sentence)\n * 2. an `Error` (or anything with a string `message`) — `error.message`\n * 3. a raw HTTP response / status object — `{ status: 404, statusText }` → `\"Request failed (404)\"`\n * 4. a plain string\n *\n * Returns `undefined` when nothing usable is found (the caller shows its generic fallback). Pure — pass\n * `requestFailed` to localize case 3 (`{status}` is interpolated).\n */\nexport function getErrorMessage(\n error: unknown,\n requestFailed: (status: number) => string = (status) => `Request failed (${status})`,\n): string | undefined {\n if (error == null || error === false) return undefined\n if (typeof error === 'string') return error.trim() || undefined\n if (typeof error !== 'object') return String(error)\n\n const e = error as {\n message?: unknown\n status?: unknown\n response?: { data?: { message?: unknown }; status?: unknown }\n }\n const serverMessage = e.response?.data?.message\n if (typeof serverMessage === 'string' && serverMessage.trim()) return serverMessage.trim()\n if (typeof e.message === 'string' && e.message.trim()) return e.message.trim()\n const status = typeof e.status === 'number' ? e.status : e.response?.status\n if (typeof status === 'number') return requestFailed(status)\n return undefined\n}\n\n/** A stack / detail dump for the developer-facing details panel (Error → `name: message` + stack). */\nexport function getErrorDetails(error: unknown): string | undefined {\n if (error == null) return undefined\n if (error instanceof Error) return error.stack || `${error.name}: ${error.message}`\n if (typeof error === 'string') return error\n try {\n return JSON.stringify(error, null, 2)\n } catch {\n return String(error)\n }\n}\n","import { forwardRef, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { Button } from '../Button'\nimport { EmptyState, type EmptyStateProps } from '../EmptyState'\nimport { Icon } from '../Icon'\nimport type { IconName } from '../../icons/names'\nimport { getErrorDetails, getErrorMessage } from './errorMessage'\nimport styles from './ErrorState.module.css'\n\n// `process.env.NODE_ENV` is inlined by every consumer bundler (React's own convention); declared locally\n// since the library ships without `@types/node`.\ndeclare const process: { env: { NODE_ENV?: string } } | undefined\nconst IS_DEV = typeof process !== 'undefined' && process.env.NODE_ENV !== 'production'\n\nexport interface ErrorStateProps extends Omit<EmptyStateProps, 'icon' | 'title' | 'color'> {\n /**\n * What failed — an `Error`, a string, an axios-style error, a `{ message }` or a raw `{ status }`\n * response. Its message becomes the description (unless `description` is given) and its stack feeds\n * the details panel.\n */\n error?: unknown\n /** Heading. Defaults to the localized \"Something went wrong\". */\n title?: ReactNode\n /** Leading icon — a known `IconName`, any node, or `false`. Defaults to `Danger`, tinted `error`. */\n icon?: IconName | ReactNode | false\n /** Adds a \"Try again\" button that calls this (e.g. a query's `refetch`). */\n onRetry?: () => void\n /** Retry button label. Defaults to the localized \"Try again\". */\n retryLabel?: ReactNode\n /**\n * Show a collapsible technical details panel (stack / raw error). `'dev'` (default) shows it only in\n * development builds; `true` always; `false` never.\n */\n showDetails?: boolean | 'dev'\n /** The inline variant — small, no hero pattern — for inside a table, card or panel. Defaults to `false`. */\n compact?: boolean\n}\n\n/**\n * The \"loading failed\" counterpart of `EmptyState` — a semantic preset over it: an `error`-tinted\n * `Danger` puck, a localized \"Something went wrong\" title, the failure's own message as the description\n * (extracted from an `Error`, a string, an axios-style `response.data.message`, a `{ message }`, or a raw\n * `{ status }` response → \"Request failed (404)\"), an optional **Try again** button (`onRetry`), and a\n * developer-only details panel with the stack (`showDetails`, default `'dev'`). `compact` is the inline\n * variant for a table / card. Announced to assistive tech (`role=\"alert\"`, `aria-live=\"polite\"`).\n * `forwardRef` to the root; any other `EmptyState` prop (`size`, `pattern`, `action`, …) passes through.\n */\nexport const ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(function ErrorState(\n {\n error,\n title,\n description,\n icon = 'Danger',\n onRetry,\n retryLabel,\n showDetails = 'dev',\n compact = false,\n size,\n pattern,\n action,\n className,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const message = getErrorMessage(error, (status) => t('errorState.requestFailed', { status }))\n const details = (showDetails === 'dev' ? IS_DEV : showDetails)\n ? getErrorDetails(error)\n : undefined\n\n const retry =\n onRetry != null ? (\n <Button\n size=\"sm\"\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<Icon name=\"RefreshRight\" />}\n onClick={onRetry}\n >\n {retryLabel ?? t('errorState.retry')}\n </Button>\n ) : null\n\n return (\n <EmptyState\n ref={ref}\n role=\"alert\"\n aria-live=\"polite\"\n color=\"error\"\n icon={icon}\n title={title ?? t('errorState.title')}\n description={description ?? message ?? t('errorState.description')}\n size={size ?? (compact ? 'sm' : 'md')}\n pattern={pattern ?? !compact}\n action={\n retry || action ? (\n <span className={styles.actions}>\n {retry}\n {action}\n </span>\n ) : undefined\n }\n className={clsx(styles.errorState, compact && styles.compact, className)}\n {...props}\n >\n {details != null && (\n <details className={styles.details}>\n <summary className={styles.summary}>{t('errorState.details')}</summary>\n <pre className={styles.pre}>{details}</pre>\n </details>\n )}\n {children}\n </EmptyState>\n )\n})\n","import { Component, type ErrorInfo, type ReactNode } from 'react'\nimport { useT } from '../../theme'\nimport { ErrorState } from './ErrorState'\n\nexport interface ErrorBoundaryProps {\n /**\n * What to render after a crash — a node, or `(error, reset) => node`. Defaults to an `ErrorState` with\n * a friendly description, a **Try again** button (`reset`) and the stack in dev.\n */\n fallback?: ReactNode | ((error: Error, reset: () => void) => ReactNode)\n /** Report the crash (e.g. `Sentry.captureException`). */\n onError?: (error: Error, info: ErrorInfo) => void\n /** Called after the boundary resets (Try again, or a `resetKeys` change). */\n onReset?: () => void\n /** Reset automatically when any of these change (shallow) — e.g. `[location.pathname]` clears on navigation. */\n resetKeys?: unknown[]\n children?: ReactNode\n}\n\ninterface ErrorBoundaryState {\n error: Error | null\n}\n\nconst keysChanged = (a: unknown[] = [], b: unknown[] = []) =>\n a.length !== b.length || a.some((v, i) => !Object.is(v, b[i]))\n\nconst toError = (value: unknown) => (value instanceof Error ? value : new Error(String(value)))\n\n/** The default crash screen — a function component so it can read the localized strings. */\nfunction DefaultFallback({ error, reset }: { error: Error; reset: () => void }) {\n const t = useT()\n // a render crash message (\"Cannot read properties of undefined\") is for developers, not users —\n // the description stays friendly and the raw error lives in the dev-only details panel\n return <ErrorState error={error} description={t('errorState.description')} onRetry={reset} />\n}\n\n/**\n * Catches render errors in its subtree and shows a fallback instead of unmounting the whole app (a\n * white screen). The one class component in the library — React only offers error boundaries as\n * classes. `fallback` is a node or `(error, reset) => node` (default: an `ErrorState` with Try again);\n * `onError` reports the crash (Sentry); `resetKeys` resets it when they change (e.g. the route path, so\n * navigating away recovers); `onReset` runs after any reset. `AdminRoot` mounts one around the page\n * content automatically, so a crashing page keeps the sidebar + header.\n */\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null }\n\n static getDerivedStateFromError(error: unknown): ErrorBoundaryState {\n return { error: toError(error) }\n }\n\n componentDidCatch(error: unknown, info: ErrorInfo) {\n this.props.onError?.(toError(error), info)\n }\n\n componentDidUpdate(prev: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n // reset only an error that was ALREADY showing before the keys changed — if the key change itself is\n // what crashed the subtree (same render), resetting would just re-render it into a second throw\n if (this.state.error && prevState.error && keysChanged(prev.resetKeys, this.props.resetKeys)) {\n this.reset()\n }\n }\n\n reset = () => {\n this.setState({ error: null })\n this.props.onReset?.()\n }\n\n render() {\n const { error } = this.state\n if (!error) return this.props.children\n const { fallback } = this.props\n if (typeof fallback === 'function') return fallback(error, this.reset)\n if (fallback !== undefined) return fallback\n return <DefaultFallback error={error} reset={this.reset} />\n }\n}\n"],"names":["getErrorMessage","error","requestFailed","status","serverMessage","_b","_a","_c","getErrorDetails","IS_DEV","ErrorState","forwardRef","title","description","icon","onRetry","retryLabel","showDetails","compact","size","pattern","action","className","children","props","ref","t","useT","message","details","retry","jsx","Button","Icon","jsxs","EmptyState","styles","clsx","keysChanged","a","b","v","i","toError","value","DefaultFallback","reset","ErrorBoundary","Component","info","prev","prevState","fallback"],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { jsxs as m, jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as S, useState as A, useEffect as O } from "react";
|
|
3
|
+
import { clsx as y } from "clsx";
|
|
4
|
+
import { A as L } from "./Avatar-DXNPg23a.js";
|
|
5
|
+
import { I as $ } from "./IconButton-Dq17Fekm.js";
|
|
6
|
+
import { I as V } from "./Icon-DaTvzLBu.js";
|
|
7
|
+
import { T as G } from "./Typography-CJv5AnRP.js";
|
|
8
|
+
import { a as H } from "./ConfigProvider-B_RSn9bb.js";
|
|
9
|
+
const K = "_fileCard_kpeb5_3", R = "_avatar_kpeb5_24", U = "_body_kpeb5_29", W = "_name_kpeb5_38", X = "_nameBase_kpeb5_45", z = "_nameExt_kpeb5_51", J = "_type_kpeb5_57", P = "_download_kpeb5_61", Q = "_sm_kpeb5_66", Y = "_md_kpeb5_77", Z = "_lg_kpeb5_81", o = {
|
|
10
|
+
fileCard: K,
|
|
11
|
+
avatar: R,
|
|
12
|
+
body: U,
|
|
13
|
+
name: W,
|
|
14
|
+
nameBase: X,
|
|
15
|
+
nameExt: z,
|
|
16
|
+
type: J,
|
|
17
|
+
download: P,
|
|
18
|
+
sm: Q,
|
|
19
|
+
md: Y,
|
|
20
|
+
lg: Z
|
|
21
|
+
}, ee = /* @__PURE__ */ new Set([
|
|
22
|
+
"png",
|
|
23
|
+
"jpg",
|
|
24
|
+
"jpeg",
|
|
25
|
+
"webp",
|
|
26
|
+
"svg",
|
|
27
|
+
"gif",
|
|
28
|
+
"avif",
|
|
29
|
+
"bmp",
|
|
30
|
+
"ico",
|
|
31
|
+
"heic"
|
|
32
|
+
]), te = {
|
|
33
|
+
pdf: "DocumentText",
|
|
34
|
+
doc: "DocumentText",
|
|
35
|
+
docx: "DocumentText",
|
|
36
|
+
txt: "DocumentText",
|
|
37
|
+
rtf: "DocumentText",
|
|
38
|
+
md: "DocumentText",
|
|
39
|
+
csv: "DocumentText",
|
|
40
|
+
xls: "DocumentText",
|
|
41
|
+
xlsx: "DocumentText",
|
|
42
|
+
json: "DocumentCode",
|
|
43
|
+
xml: "DocumentCode",
|
|
44
|
+
zip: "Folder",
|
|
45
|
+
rar: "Folder",
|
|
46
|
+
"7z": "Folder",
|
|
47
|
+
mp4: "VideoSquare",
|
|
48
|
+
mov: "VideoSquare",
|
|
49
|
+
webm: "VideoSquare",
|
|
50
|
+
mp3: "MusicSquare",
|
|
51
|
+
wav: "MusicSquare"
|
|
52
|
+
};
|
|
53
|
+
function ne(n, e) {
|
|
54
|
+
const t = n.lastIndexOf(".");
|
|
55
|
+
return t > 0 && n.length - t <= 7 ? n.slice(t + 1).toLowerCase() : e && e.includes("/") ? e.slice(e.indexOf("/") + 1).toLowerCase() : "";
|
|
56
|
+
}
|
|
57
|
+
function oe(n) {
|
|
58
|
+
const e = n.lastIndexOf(".");
|
|
59
|
+
return e > 0 && n.length - e <= 7 ? { base: n.slice(0, e), ext: n.slice(e) } : { base: n, ext: "" };
|
|
60
|
+
}
|
|
61
|
+
function g(n) {
|
|
62
|
+
if (!Number.isFinite(n) || n < 0) return "";
|
|
63
|
+
if (n < 1024) return `${n} B`;
|
|
64
|
+
const e = ["KB", "MB", "GB", "TB"];
|
|
65
|
+
let t = n / 1024, a = 0;
|
|
66
|
+
for (; t >= 1024 && a < e.length - 1; )
|
|
67
|
+
t /= 1024, a += 1;
|
|
68
|
+
return `${t < 10 ? t.toFixed(1) : Math.round(t)} ${e[a]}`;
|
|
69
|
+
}
|
|
70
|
+
const ue = S(function({
|
|
71
|
+
name: e,
|
|
72
|
+
src: t,
|
|
73
|
+
type: a,
|
|
74
|
+
image: v,
|
|
75
|
+
fileSize: r,
|
|
76
|
+
fetchSize: u = !1,
|
|
77
|
+
meta: T,
|
|
78
|
+
color: f = "accent",
|
|
79
|
+
size: d = "md",
|
|
80
|
+
downloadable: w = !0,
|
|
81
|
+
onDownload: i,
|
|
82
|
+
className: C,
|
|
83
|
+
style: k,
|
|
84
|
+
...B
|
|
85
|
+
}, D) {
|
|
86
|
+
const N = H(), l = ne(e, a), p = v ?? ((a == null ? void 0 : a.startsWith("image/")) || ee.has(l)), { base: E, ext: _ } = oe(e), [x, I] = A(null);
|
|
87
|
+
O(() => {
|
|
88
|
+
if (!u || r != null || !t || typeof fetch > "u") return;
|
|
89
|
+
let s = !1;
|
|
90
|
+
return fetch(t, { method: "HEAD" }).then((M) => {
|
|
91
|
+
const b = M.headers.get("content-length");
|
|
92
|
+
!s && b && I(Number(b));
|
|
93
|
+
}).catch(() => {
|
|
94
|
+
}), () => {
|
|
95
|
+
s = !0;
|
|
96
|
+
};
|
|
97
|
+
}, [u, r, t]);
|
|
98
|
+
const F = r != null ? typeof r == "number" ? g(r) : r : x != null ? g(x) : "", j = [l ? l.toUpperCase() : "", F].filter(Boolean).join(" · "), h = T ?? (j || null), q = () => {
|
|
99
|
+
if (i) return i();
|
|
100
|
+
if (!t) return;
|
|
101
|
+
const s = document.createElement("a");
|
|
102
|
+
s.href = t, s.download = e, s.rel = "noopener", s.click();
|
|
103
|
+
};
|
|
104
|
+
return /* @__PURE__ */ m(
|
|
105
|
+
"div",
|
|
106
|
+
{
|
|
107
|
+
ref: D,
|
|
108
|
+
className: y(o.fileCard, o[d], C),
|
|
109
|
+
style: { "--tz-btn-rgb": `var(--tz-color-${f}-rgb)`, ...k },
|
|
110
|
+
...B,
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ c(
|
|
113
|
+
L,
|
|
114
|
+
{
|
|
115
|
+
className: o.avatar,
|
|
116
|
+
src: p ? t : void 0,
|
|
117
|
+
icon: p ? void 0 : te[l] ?? "Document",
|
|
118
|
+
name: e,
|
|
119
|
+
shape: "square",
|
|
120
|
+
size: d,
|
|
121
|
+
color: f
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
/* @__PURE__ */ m("div", { className: o.body, children: [
|
|
125
|
+
/* @__PURE__ */ m("span", { className: o.name, title: e, children: [
|
|
126
|
+
/* @__PURE__ */ c("span", { className: o.nameBase, children: E }),
|
|
127
|
+
_ && /* @__PURE__ */ c("span", { className: o.nameExt, children: _ })
|
|
128
|
+
] }),
|
|
129
|
+
h != null && /* @__PURE__ */ c(G, { as: "span", variant: "bodySmall", color: "muted", uppercase: !0, className: o.type, children: h })
|
|
130
|
+
] }),
|
|
131
|
+
w && (t || i) && /* @__PURE__ */ c(
|
|
132
|
+
$,
|
|
133
|
+
{
|
|
134
|
+
variant: "filled",
|
|
135
|
+
size: d === "lg" ? "md" : "sm",
|
|
136
|
+
className: o.download,
|
|
137
|
+
"aria-label": N("fileCard.download", { name: e }),
|
|
138
|
+
onClick: q,
|
|
139
|
+
children: /* @__PURE__ */ c(V, { name: "ImportArrow" })
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
});
|
|
146
|
+
export {
|
|
147
|
+
ue as F
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=FileCard-C3a2yDhK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileCard-C3a2yDhK.js","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /** File type — an extension (`'pdf'`) or MIME (`'image/png'`). Derived from `name` when omitted. */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` / `src` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const o=require("react/jsx-runtime"),u=require("react"),M=require("clsx"),S=require("./Avatar-DrV_F7Ex.cjs"),A=require("./IconButton-A2B0bqC-.cjs"),O=require("./Icon-BVULqOJD.cjs"),L=require("./Typography-B6ASPrzT.cjs"),$=require("./ConfigProvider-BElY0HuV.cjs"),V="_fileCard_kpeb5_3",G="_avatar_kpeb5_24",R="_body_kpeb5_29",H="_name_kpeb5_38",K="_nameBase_kpeb5_45",P="_nameExt_kpeb5_51",U="_type_kpeb5_57",W="_download_kpeb5_61",X="_sm_kpeb5_66",z="_md_kpeb5_77",J="_lg_kpeb5_81",s={fileCard:V,avatar:G,body:R,name:H,nameBase:K,nameExt:P,type:U,download:W,sm:X,md:z,lg:J},Q=new Set(["png","jpg","jpeg","webp","svg","gif","avif","bmp","ico","heic"]),Y={pdf:"DocumentText",doc:"DocumentText",docx:"DocumentText",txt:"DocumentText",rtf:"DocumentText",md:"DocumentText",csv:"DocumentText",xls:"DocumentText",xlsx:"DocumentText",json:"DocumentCode",xml:"DocumentCode",zip:"Folder",rar:"Folder","7z":"Folder",mp4:"VideoSquare",mov:"VideoSquare",webm:"VideoSquare",mp3:"MusicSquare",wav:"MusicSquare"};function Z(n,e){const t=n.lastIndexOf(".");return t>0&&n.length-t<=7?n.slice(t+1).toLowerCase():e&&e.includes("/")?e.slice(e.indexOf("/")+1).toLowerCase():""}function ee(n){const e=n.lastIndexOf(".");return e>0&&n.length-e<=7?{base:n.slice(0,e),ext:n.slice(e)}:{base:n,ext:""}}function g(n){if(!Number.isFinite(n)||n<0)return"";if(n<1024)return`${n} B`;const e=["KB","MB","GB","TB"];let t=n/1024,a=0;for(;t>=1024&&a<e.length-1;)t/=1024,a+=1;return`${t<10?t.toFixed(1):Math.round(t)} ${e[a]}`}const te=u.forwardRef(function({name:e,src:t,type:a,image:v,fileSize:c,fetchSize:m=!1,meta:C,color:x="accent",size:d="md",downloadable:T=!0,onDownload:i,className:j,style:q,...w},k){const B=$.useT(),l=Z(e,a),f=v??((a==null?void 0:a.startsWith("image/"))||Q.has(l)),{base:D,ext:_}=ee(e),[p,N]=u.useState(null);u.useEffect(()=>{if(!m||c!=null||!t||typeof fetch>"u")return;let r=!1;return fetch(t,{method:"HEAD"}).then(y=>{const b=y.headers.get("content-length");!r&&b&&N(Number(b))}).catch(()=>{}),()=>{r=!0}},[m,c,t]);const E=c!=null?typeof c=="number"?g(c):c:p!=null?g(p):"",I=[l?l.toUpperCase():"",E].filter(Boolean).join(" · "),h=C??(I||null),F=()=>{if(i)return i();if(!t)return;const r=document.createElement("a");r.href=t,r.download=e,r.rel="noopener",r.click()};return o.jsxs("div",{ref:k,className:M.clsx(s.fileCard,s[d],j),style:{"--tz-btn-rgb":`var(--tz-color-${x}-rgb)`,...q},...w,children:[o.jsx(S.Avatar,{className:s.avatar,src:f?t:void 0,icon:f?void 0:Y[l]??"Document",name:e,shape:"square",size:d,color:x}),o.jsxs("div",{className:s.body,children:[o.jsxs("span",{className:s.name,title:e,children:[o.jsx("span",{className:s.nameBase,children:D}),_&&o.jsx("span",{className:s.nameExt,children:_})]}),h!=null&&o.jsx(L.Typography,{as:"span",variant:"bodySmall",color:"muted",uppercase:!0,className:s.type,children:h})]}),T&&(t||i)&&o.jsx(A.IconButton,{variant:"filled",size:d==="lg"?"md":"sm",className:s.download,"aria-label":B("fileCard.download",{name:e}),onClick:F,children:o.jsx(O.Icon,{name:"ImportArrow"})})]})});exports.FileCard=te;
|
|
2
|
+
//# sourceMappingURL=FileCard-DKjDQRzZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileCard-DKjDQRzZ.cjs","sources":["../src/components/FileCard/FileCard.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Avatar, type AvatarSize } from '../Avatar'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './FileCard.module.css'\n\nexport type FileCardSize = AvatarSize\n\nconst IMAGE_EXTS = new Set([\n 'png',\n 'jpg',\n 'jpeg',\n 'webp',\n 'svg',\n 'gif',\n 'avif',\n 'bmp',\n 'ico',\n 'heic',\n])\n\n// a leading icon per file family (non-image); everything else gets the generic document icon\nconst FILE_ICONS: Record<string, IconName> = {\n pdf: 'DocumentText',\n doc: 'DocumentText',\n docx: 'DocumentText',\n txt: 'DocumentText',\n rtf: 'DocumentText',\n md: 'DocumentText',\n csv: 'DocumentText',\n xls: 'DocumentText',\n xlsx: 'DocumentText',\n json: 'DocumentCode',\n xml: 'DocumentCode',\n zip: 'Folder',\n rar: 'Folder',\n '7z': 'Folder',\n mp4: 'VideoSquare',\n mov: 'VideoSquare',\n webm: 'VideoSquare',\n mp3: 'MusicSquare',\n wav: 'MusicSquare',\n}\n\n/** The lowercased extension from a file name, else the subtype from a MIME `type` (`image/png` → `png`). */\nfunction extensionOf(name: string, type?: string): string {\n const dot = name.lastIndexOf('.')\n if (dot > 0 && name.length - dot <= 7) return name.slice(dot + 1).toLowerCase()\n if (type && type.includes('/')) return type.slice(type.indexOf('/') + 1).toLowerCase()\n return ''\n}\n\n/** Split `report.pdf` into `{ base: 'report', ext: '.pdf' }` so the base can ellipsize and the type stays. */\nfunction splitName(name: string): { base: string; ext: string } {\n const dot = name.lastIndexOf('.')\n return dot > 0 && name.length - dot <= 7\n ? { base: name.slice(0, dot), ext: name.slice(dot) }\n : { base: name, ext: '' }\n}\n\n/** Human-readable byte size — `2411724` → `\"2.3 MB\"`. */\nfunction formatBytes(bytes: number): string {\n if (!Number.isFinite(bytes) || bytes < 0) return ''\n if (bytes < 1024) return `${bytes} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let value = bytes / 1024\n let i = 0\n while (value >= 1024 && i < units.length - 1) {\n value /= 1024\n i += 1\n }\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[i]}`\n}\n\nexport interface FileCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** File name — shown middle-truncated (`test-file-na….pdf`) so the extension always stays visible. */\n name: string\n /** File URL — the download target and, for an image, the thumbnail `src`. */\n src?: string\n /** File type — an extension (`'pdf'`) or MIME (`'image/png'`). Derived from `name` when omitted. */\n type?: string\n /** Force image vs. file rendering. Inferred from `type` / `name` / `src` when omitted. */\n image?: boolean\n /** File size — a **bytes** number (auto-formatted to `\"2.3 MB\"`) or a preformatted string. Shown after the type. */\n fileSize?: number | string\n /**\n * When no `fileSize` is given, fetch it from `src` via a `HEAD` request (reads `Content-Length`). Off\n * by default — it's a network call and needs CORS to expose the header; prefer passing `fileSize` from\n * the backend. Fails silently (no size shown) when unavailable.\n */\n fetchSize?: boolean\n /** Meta line under the name — overrides the derived `TYPE · size`. */\n meta?: ReactNode\n /** Theme token tinting the avatar / file-icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Size — scales the avatar, text and padding. Defaults to `md`. */\n size?: FileCardSize\n /** Show the download control (only when there's a `src` or `onDownload`). Defaults to `true`. */\n downloadable?: boolean\n /** Custom download handler — replaces the default (a download of `src`). */\n onDownload?: () => void\n}\n\n/**\n * A compact, read-only **file card** for displaying a file that already exists (e.g. from the backend) —\n * an image or a document (`pdf` / `docx` / `csv` / `svg` / …). Shows a leading **`Avatar`** (the image\n * thumbnail via `src`, or a type-based file icon in a tinted square), the **name** middle-truncated so\n * the extension is never lost, the **type** underneath, and a **download** control. Simple to drop in —\n * pass `name` (+ `src` for the thumbnail/download). Not to be confused with `FileUploader` (which\n * *collects* files to upload); this only *displays* one. Token-only styling.\n *\n * @example\n * <FileCard name=\"annual-report.pdf\" src=\"/files/annual-report.pdf\" />\n * <FileCard name=\"avatar.png\" src={url} meta=\"240 KB\" />\n */\nexport const FileCard = forwardRef<HTMLDivElement, FileCardProps>(function FileCard(\n {\n name,\n src,\n type,\n image,\n fileSize,\n fetchSize = false,\n meta,\n color = 'accent',\n size = 'md',\n downloadable = true,\n onDownload,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const ext = extensionOf(name, type)\n const isImage = image ?? (type?.startsWith('image/') || IMAGE_EXTS.has(ext))\n const { base, ext: nameExt } = splitName(name)\n\n // optional auto size via a HEAD request (only when opted in and no explicit fileSize)\n const [fetchedSize, setFetchedSize] = useState<number | null>(null)\n useEffect(() => {\n if (!fetchSize || fileSize != null || !src || typeof fetch === 'undefined') return\n let cancelled = false\n fetch(src, { method: 'HEAD' })\n .then((res) => {\n const len = res.headers.get('content-length')\n if (!cancelled && len) setFetchedSize(Number(len))\n })\n .catch(() => {})\n return () => {\n cancelled = true\n }\n }, [fetchSize, fileSize, src])\n\n const sizeText =\n fileSize != null\n ? typeof fileSize === 'number'\n ? formatBytes(fileSize)\n : fileSize\n : fetchedSize != null\n ? formatBytes(fetchedSize)\n : ''\n // \"TYPE · 2.3 MB\" (either part optional) — overridden wholesale by `meta`\n const derivedMeta = [ext ? ext.toUpperCase() : '', sizeText].filter(Boolean).join(' · ')\n const metaLine = meta ?? (derivedMeta || null)\n\n const handleDownload = () => {\n if (onDownload) return onDownload()\n if (!src) return\n const a = document.createElement('a')\n a.href = src\n a.download = name\n a.rel = 'noopener'\n a.click()\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.fileCard, styles[size], className)}\n style={{ '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`, ...style } as CSSProperties}\n {...props}\n >\n <Avatar\n className={styles.avatar}\n src={isImage ? src : undefined}\n icon={isImage ? undefined : (FILE_ICONS[ext] ?? 'Document')}\n name={name}\n shape=\"square\"\n size={size}\n color={color}\n />\n <div className={styles.body}>\n <span className={styles.name} title={name}>\n <span className={styles.nameBase}>{base}</span>\n {nameExt && <span className={styles.nameExt}>{nameExt}</span>}\n </span>\n {metaLine != null && (\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\" uppercase className={styles.type}>\n {metaLine}\n </Typography>\n )}\n </div>\n {downloadable && (src || onDownload) && (\n <IconButton\n variant=\"filled\"\n size={size === 'lg' ? 'md' : 'sm'}\n className={styles.download}\n aria-label={t('fileCard.download', { name })}\n onClick={handleDownload}\n >\n <Icon name=\"ImportArrow\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["IMAGE_EXTS","FILE_ICONS","extensionOf","name","type","dot","splitName","formatBytes","bytes","units","value","i","FileCard","forwardRef","src","image","fileSize","fetchSize","meta","color","size","downloadable","onDownload","className","style","props","ref","t","useT","ext","isImage","base","nameExt","fetchedSize","setFetchedSize","useState","useEffect","cancelled","res","len","sizeText","derivedMeta","metaLine","handleDownload","a","jsxs","clsx","styles","jsx","Avatar","Typography","IconButton","Icon"],"mappings":"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"}
|