@techzyapp/ui-library 1.0.25 → 1.0.27
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-CgvtgUpW.js → AdminRoot-C4OyuOIr.js} +4 -4
- package/dist/{AdminRoot-CgvtgUpW.js.map → AdminRoot-C4OyuOIr.js.map} +1 -1
- package/dist/{AdminRoot-BkPPRkyQ.cjs → AdminRoot-bHywlbML.cjs} +2 -2
- package/dist/{AdminRoot-BkPPRkyQ.cjs.map → AdminRoot-bHywlbML.cjs.map} +1 -1
- package/dist/{Alert-udX1ybuC.cjs → Alert-DeGgilkH.cjs} +2 -2
- package/dist/{Alert-udX1ybuC.cjs.map → Alert-DeGgilkH.cjs.map} +1 -1
- package/dist/{Alert-DXmzM_rh.js → Alert-rNjfqj2Z.js} +3 -3
- package/dist/{Alert-DXmzM_rh.js.map → Alert-rNjfqj2Z.js.map} +1 -1
- package/dist/{AuthLayout-BRUxDgzs.cjs → AuthLayout-ChILVWZ-.cjs} +2 -2
- package/dist/{AuthLayout-BRUxDgzs.cjs.map → AuthLayout-ChILVWZ-.cjs.map} +1 -1
- package/dist/{AuthLayout-CP9qu6Bv.js → AuthLayout-zAS3jlYc.js} +2 -2
- package/dist/{AuthLayout-CP9qu6Bv.js.map → AuthLayout-zAS3jlYc.js.map} +1 -1
- package/dist/{Avatar-Q50J8wdN.js → Avatar-BGPGxry2.js} +25 -25
- package/dist/{Avatar-Q50J8wdN.js.map → Avatar-BGPGxry2.js.map} +1 -1
- package/dist/Avatar-D_YivyqV.cjs +2 -0
- package/dist/{Avatar-Dgf04PBC.cjs.map → Avatar-D_YivyqV.cjs.map} +1 -1
- package/dist/{AvatarGroup-uW0SD5P4.cjs → AvatarGroup-Bnf_RSc9.cjs} +2 -2
- package/dist/{AvatarGroup-uW0SD5P4.cjs.map → AvatarGroup-Bnf_RSc9.cjs.map} +1 -1
- package/dist/{AvatarGroup-YaNasLMS.js → AvatarGroup-Difz4lLR.js} +2 -2
- package/dist/{AvatarGroup-YaNasLMS.js.map → AvatarGroup-Difz4lLR.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-DQHHeLId.js → Breadcrumbs-BJHKk0Sn.js} +3 -3
- package/dist/{Breadcrumbs-DQHHeLId.js.map → Breadcrumbs-BJHKk0Sn.js.map} +1 -1
- package/dist/{Breadcrumbs-CsYTiX2h.cjs → Breadcrumbs-CGcpMlxm.cjs} +2 -2
- package/dist/{Breadcrumbs-CsYTiX2h.cjs.map → Breadcrumbs-CGcpMlxm.cjs.map} +1 -1
- package/dist/Button-BZ_o-akc.cjs +2 -0
- package/dist/{Button-CXmDOzPk.cjs.map → Button-BZ_o-akc.cjs.map} +1 -1
- package/dist/Button-obe6rono.js +72 -0
- package/dist/{Button-DBs8xnA5.js.map → Button-obe6rono.js.map} +1 -1
- package/dist/{Calendar-CtteUt82.js → Calendar-SCih0NtS.js} +4 -4
- package/dist/{Calendar-CtteUt82.js.map → Calendar-SCih0NtS.js.map} +1 -1
- package/dist/{Calendar-B2nMXk4C.cjs → Calendar-lfpNwivC.cjs} +2 -2
- package/dist/{Calendar-B2nMXk4C.cjs.map → Calendar-lfpNwivC.cjs.map} +1 -1
- package/dist/{Card-DYKnWt-L.js → Card-BRJV2JZE.js} +2 -2
- package/dist/{Card-DYKnWt-L.js.map → Card-BRJV2JZE.js.map} +1 -1
- package/dist/{Card-DGF22HbS.cjs → Card-KvvNlchc.cjs} +2 -2
- package/dist/{Card-DGF22HbS.cjs.map → Card-KvvNlchc.cjs.map} +1 -1
- package/dist/{Chip-DdKhcstm.js → Chip-CQ4cYVl_.js} +31 -31
- package/dist/{Chip-DdKhcstm.js.map → Chip-CQ4cYVl_.js.map} +1 -1
- package/dist/Chip-CYz4vxHm.cjs +2 -0
- package/dist/{Chip-gUH_7nQc.cjs.map → Chip-CYz4vxHm.cjs.map} +1 -1
- package/dist/ChoiceCardGroup-D3HL7dHj.js +181 -0
- package/dist/{ChoiceCardGroup-DBohUnRj.js.map → ChoiceCardGroup-D3HL7dHj.js.map} +1 -1
- package/dist/ChoiceCardGroup-pIOKIUI0.cjs +2 -0
- package/dist/{ChoiceCardGroup-d0VVTUi5.cjs.map → ChoiceCardGroup-pIOKIUI0.cjs.map} +1 -1
- package/dist/{CodeBlock-DD_d3-sM.js → CodeBlock-DddGTLu1.js} +3 -3
- package/dist/{CodeBlock-DD_d3-sM.js.map → CodeBlock-DddGTLu1.js.map} +1 -1
- package/dist/{CodeBlock-C6tQtbHU.cjs → CodeBlock-H75dbOvg.cjs} +2 -2
- package/dist/{CodeBlock-C6tQtbHU.cjs.map → CodeBlock-H75dbOvg.cjs.map} +1 -1
- package/dist/ColorPicker-CKc8k-Dp.cjs +2 -0
- package/dist/ColorPicker-CKc8k-Dp.cjs.map +1 -0
- package/dist/{ColorPicker-Dw6Qk0iy.js → ColorPicker-Cw-2X6u9.js} +35 -26
- package/dist/ColorPicker-Cw-2X6u9.js.map +1 -0
- package/dist/ColorPickerPanel-DQ4CFnGa.cjs +2 -0
- package/dist/ColorPickerPanel-DQ4CFnGa.cjs.map +1 -0
- package/dist/ColorPickerPanel-PYaF5wPL.js +322 -0
- package/dist/ColorPickerPanel-PYaF5wPL.js.map +1 -0
- package/dist/ColorRamp-AkY9gq6Y.cjs +2 -0
- package/dist/ColorRamp-AkY9gq6Y.cjs.map +1 -0
- package/dist/ColorRamp-DnlJNKfy.js +126 -0
- package/dist/ColorRamp-DnlJNKfy.js.map +1 -0
- package/dist/{ConfigProvider-Bszl3Wr3.cjs → ConfigProvider-BicoaBLj.cjs} +2 -2
- package/dist/ConfigProvider-BicoaBLj.cjs.map +1 -0
- package/dist/{ConfigProvider-DR9YMy9U.js → ConfigProvider-DL9fylMo.js} +2 -2
- package/dist/ConfigProvider-DL9fylMo.js.map +1 -0
- package/dist/CopyButton-BqFGC-Ca.cjs +2 -0
- package/dist/{CopyButton-Ct-8AmmX.cjs.map → CopyButton-BqFGC-Ca.cjs.map} +1 -1
- package/dist/CopyButton-D6-kcVCA.js +43 -0
- package/dist/{CopyButton-DJ1PSJZU.js.map → CopyButton-D6-kcVCA.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-BvGFP2AL.cjs} +2 -2
- package/dist/{DatePicker-BxEydgfu.cjs.map → DatePicker-BvGFP2AL.cjs.map} +1 -1
- package/dist/{DatePicker-CJioG5M7.js → DatePicker-DP7yASzq.js} +5 -5
- package/dist/{DatePicker-CJioG5M7.js.map → DatePicker-DP7yASzq.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-e2zj2bhS.js → DateTimePicker-CzRduOFz.js} +8 -8
- package/dist/{DateTimePicker-e2zj2bhS.js.map → DateTimePicker-CzRduOFz.js.map} +1 -1
- package/dist/{DateTimePicker-COEj2Z0F.cjs → DateTimePicker-DOzft9kg.cjs} +2 -2
- package/dist/{DateTimePicker-COEj2Z0F.cjs.map → DateTimePicker-DOzft9kg.cjs.map} +1 -1
- package/dist/EmptyState-A5nPGnHA.js +38 -0
- package/dist/{EmptyState-BTd7aVgu.js.map → EmptyState-A5nPGnHA.js.map} +1 -1
- package/dist/EmptyState-CTTOy9aY.cjs +2 -0
- package/dist/{EmptyState-Bv4XXnD1.cjs.map → EmptyState-CTTOy9aY.cjs.map} +1 -1
- package/dist/{FileCard-DY8N9Lzz.js → FileCard-BmPEEcue.js} +4 -4
- package/dist/{FileCard-DY8N9Lzz.js.map → FileCard-BmPEEcue.js.map} +1 -1
- package/dist/{FileCard-DW5Ur8Aj.cjs → FileCard-C4BkGMtK.cjs} +2 -2
- package/dist/{FileCard-DW5Ur8Aj.cjs.map → FileCard-C4BkGMtK.cjs.map} +1 -1
- package/dist/FileUploader-D_F64mob.cjs +2 -0
- package/dist/FileUploader-D_F64mob.cjs.map +1 -0
- package/dist/{FileUploader-BYF5FvUc.js → FileUploader-Dv_3bjZA.js} +217 -217
- package/dist/FileUploader-Dv_3bjZA.js.map +1 -0
- package/dist/{Flag-CB4YyPj3.cjs → Flag-BM_2VJ1v.cjs} +2 -2
- package/dist/{Flag-CB4YyPj3.cjs.map → Flag-BM_2VJ1v.cjs.map} +1 -1
- package/dist/{Flag-yA1y5XzR.js → Flag-CzCEpB8E.js} +2 -2
- package/dist/{Flag-yA1y5XzR.js.map → Flag-CzCEpB8E.js.map} +1 -1
- package/dist/{FullscreenToggle-0lskYnpx.cjs → FullscreenToggle-BL0nBrsL.cjs} +2 -2
- package/dist/{FullscreenToggle-0lskYnpx.cjs.map → FullscreenToggle-BL0nBrsL.cjs.map} +1 -1
- package/dist/{FullscreenToggle-jSLruiKt.js → FullscreenToggle-HZQOIa21.js} +3 -3
- package/dist/{FullscreenToggle-jSLruiKt.js.map → FullscreenToggle-HZQOIa21.js.map} +1 -1
- package/dist/IconButton-B87ipBK3.cjs +2 -0
- package/dist/{IconButton-BN-bZxEi.cjs.map → IconButton-B87ipBK3.cjs.map} +1 -1
- package/dist/IconButton-CBp8QuTO.js +68 -0
- package/dist/{IconButton-BEGWfcVc.js.map → IconButton-CBp8QuTO.js.map} +1 -1
- package/dist/Loader-0Imnbael.cjs +2 -0
- package/dist/{Loader-B5YqzEYy.cjs.map → Loader-0Imnbael.cjs.map} +1 -1
- package/dist/Loader-fffFnQqS.js +28 -0
- package/dist/{Loader-BZIa8hwv.js.map → Loader-fffFnQqS.js.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-0V-REVV-.cjs → Modal--e2qGisF.cjs} +2 -2
- package/dist/{Modal-0V-REVV-.cjs.map → Modal--e2qGisF.cjs.map} +1 -1
- package/dist/{Modal-B7yoFC3o.js → Modal-DJljaPqV.js} +3 -3
- package/dist/{Modal-B7yoFC3o.js.map → Modal-DJljaPqV.js.map} +1 -1
- package/dist/{MultiSelect-gj9Ymeh2.cjs → MultiSelect-CvecZeMU.cjs} +2 -2
- package/dist/{MultiSelect-gj9Ymeh2.cjs.map → MultiSelect-CvecZeMU.cjs.map} +1 -1
- package/dist/{MultiSelect-C8xuXaoR.js → MultiSelect-DLoS04lZ.js} +4 -4
- package/dist/{MultiSelect-C8xuXaoR.js.map → MultiSelect-DLoS04lZ.js.map} +1 -1
- package/dist/{NumberField-CEt95jcC.cjs → NumberField-C_HZXBuw.cjs} +2 -2
- package/dist/{NumberField-CEt95jcC.cjs.map → NumberField-C_HZXBuw.cjs.map} +1 -1
- package/dist/{NumberField-2yM0mmyj.js → NumberField-DYGVQdL5.js} +4 -4
- package/dist/{NumberField-2yM0mmyj.js.map → NumberField-DYGVQdL5.js.map} +1 -1
- package/dist/{OtpField-CkliY82J.js → OtpField-CpQr_ZqL.js} +3 -3
- package/dist/{OtpField-CkliY82J.js.map → OtpField-CpQr_ZqL.js.map} +1 -1
- package/dist/{OtpField-on-K0_fM.cjs → OtpField-DKbUP0F6.cjs} +2 -2
- package/dist/{OtpField-on-K0_fM.cjs.map → OtpField-DKbUP0F6.cjs.map} +1 -1
- package/dist/{PageLayout-DzPh_G6H.js → PageLayout-CCcPCfJF.js} +2 -2
- package/dist/{PageLayout-DzPh_G6H.js.map → PageLayout-CCcPCfJF.js.map} +1 -1
- package/dist/{PageLayout-DGHu7Vm3.cjs → PageLayout-CuWXukUv.cjs} +2 -2
- package/dist/{PageLayout-DGHu7Vm3.cjs.map → PageLayout-CuWXukUv.cjs.map} +1 -1
- package/dist/PageNotFound-JKOnpyHD.cjs +2 -0
- package/dist/{PageNotFound-B8_eIT8p.cjs.map → PageNotFound-JKOnpyHD.cjs.map} +1 -1
- package/dist/{PageNotFound-CCFfPHgA.js → PageNotFound-LWH2tU5E.js} +9 -9
- package/dist/{PageNotFound-CCFfPHgA.js.map → PageNotFound-LWH2tU5E.js.map} +1 -1
- package/dist/Pagination-BwtbmITJ.js +139 -0
- package/dist/{Pagination-CmskZjcz.js.map → Pagination-BwtbmITJ.js.map} +1 -1
- package/dist/Pagination-M7njqOUt.cjs +2 -0
- package/dist/{Pagination-BdVebW2L.cjs.map → Pagination-M7njqOUt.cjs.map} +1 -1
- package/dist/PaletteField-CUyzLrny.js +54 -0
- package/dist/PaletteField-CUyzLrny.js.map +1 -0
- package/dist/PaletteField-iBIvOvNi.cjs +2 -0
- package/dist/PaletteField-iBIvOvNi.cjs.map +1 -0
- package/dist/RadioGroup-Byy-eSY3.cjs +2 -0
- package/dist/{RadioGroup-C8u7eNBS.cjs.map → RadioGroup-Byy-eSY3.cjs.map} +1 -1
- package/dist/RadioGroup-D_1_Heta.js +141 -0
- package/dist/{RadioGroup-DbodUJW8.js.map → RadioGroup-D_1_Heta.js.map} +1 -1
- package/dist/RemoveDialog-DUrD2Em8.js +47 -0
- package/dist/{RemoveDialog-CV75B0aN.js.map → RemoveDialog-DUrD2Em8.js.map} +1 -1
- package/dist/RemoveDialog-FZWYAxRy.cjs +2 -0
- package/dist/{RemoveDialog-DmOk0ezc.cjs.map → RemoveDialog-FZWYAxRy.cjs.map} +1 -1
- package/dist/{RichTextEditor-Bm8FFbcR.js → RichTextEditor-CG6LoNiw.js} +9 -9
- package/dist/RichTextEditor-CG6LoNiw.js.map +1 -0
- package/dist/{RichTextEditor-uXddgtlk.cjs → RichTextEditor-mpMCG8jX.cjs} +2 -2
- package/dist/RichTextEditor-mpMCG8jX.cjs.map +1 -0
- package/dist/RootLayout-CPxDqfGb.cjs +2 -0
- package/dist/{RootLayout-kssj9exn.cjs.map → RootLayout-CPxDqfGb.cjs.map} +1 -1
- package/dist/RootLayout-D3K-pAMO.js +515 -0
- package/dist/{RootLayout-Cf7Rr9Iz.js.map → RootLayout-D3K-pAMO.js.map} +1 -1
- package/dist/{Select-CdX3Ks7y.js → Select-BB9oOoWZ.js} +3 -3
- package/dist/{Select-CdX3Ks7y.js.map → Select-BB9oOoWZ.js.map} +1 -1
- package/dist/{Select-7vEGJCvA.cjs → Select-iP2p5jad.cjs} +2 -2
- package/dist/{Select-7vEGJCvA.cjs.map → Select-iP2p5jad.cjs.map} +1 -1
- package/dist/{Sidebar-DcKIEfhy.cjs → Sidebar-Boi7UgHV.cjs} +2 -2
- package/dist/{Sidebar-DcKIEfhy.cjs.map → Sidebar-Boi7UgHV.cjs.map} +1 -1
- package/dist/{Sidebar-YH-DoNG9.js → Sidebar-CsPnv4mu.js} +60 -60
- package/dist/{Sidebar-YH-DoNG9.js.map → Sidebar-CsPnv4mu.js.map} +1 -1
- package/dist/Slider-D3dbEOQY.cjs +2 -0
- package/dist/{Slider-dxYVXRev.cjs.map → Slider-D3dbEOQY.cjs.map} +1 -1
- package/dist/Slider-D7SvowmM.js +184 -0
- package/dist/{Slider-oGXd5e9X.js.map → Slider-D7SvowmM.js.map} +1 -1
- package/dist/{SpeedDial-DWNuC6f8.js → SpeedDial-B8XMUATN.js} +2 -2
- package/dist/{SpeedDial-DWNuC6f8.js.map → SpeedDial-B8XMUATN.js.map} +1 -1
- package/dist/{SpeedDial-9_Yk8AGx.cjs → SpeedDial-CZ22T8GL.cjs} +2 -2
- package/dist/{SpeedDial-9_Yk8AGx.cjs.map → SpeedDial-CZ22T8GL.cjs.map} +1 -1
- package/dist/{Stepper-CuqFpamY.js → Stepper-B_e_PGZE.js} +70 -70
- package/dist/{Stepper-CuqFpamY.js.map → Stepper-B_e_PGZE.js.map} +1 -1
- package/dist/Stepper-BjkkWawQ.cjs +2 -0
- package/dist/{Stepper-B1z_u650.cjs.map → Stepper-BjkkWawQ.cjs.map} +1 -1
- package/dist/{SwatchPicker-CCJltwHI.cjs → SwatchPicker-C8amdDnA.cjs} +2 -2
- package/dist/{SwatchPicker-CCJltwHI.cjs.map → SwatchPicker-C8amdDnA.cjs.map} +1 -1
- package/dist/{SwatchPicker-CqyWngFJ.js → SwatchPicker-DXEE9xqY.js} +2 -2
- package/dist/{SwatchPicker-CqyWngFJ.js.map → SwatchPicker-DXEE9xqY.js.map} +1 -1
- package/dist/Switch-CodRZD3y.cjs +2 -0
- package/dist/{Switch-DRkZ6kHJ.cjs.map → Switch-CodRZD3y.cjs.map} +1 -1
- package/dist/Switch-ESrhkpJC.js +85 -0
- package/dist/{Switch-DMPJ0fhB.js.map → Switch-ESrhkpJC.js.map} +1 -1
- package/dist/Table-Cr1zUtNQ.cjs +2 -0
- package/dist/Table-Cr1zUtNQ.cjs.map +1 -0
- package/dist/{Table-Drdhfm99.js → Table-DdoUcZoN.js} +60 -51
- package/dist/Table-DdoUcZoN.js.map +1 -0
- package/dist/Tabs-CZDX7BN-.cjs +2 -0
- package/dist/{Tabs-BiKDy_fv.cjs.map → Tabs-CZDX7BN-.cjs.map} +1 -1
- package/dist/Tabs-v1GEGUDQ.js +190 -0
- package/dist/{Tabs-ytbBzAxG.js.map → Tabs-v1GEGUDQ.js.map} +1 -1
- package/dist/{TagsField-CEt_PC5y.js → TagsField-B389eDp4.js} +4 -4
- package/dist/{TagsField-CEt_PC5y.js.map → TagsField-B389eDp4.js.map} +1 -1
- package/dist/{TagsField-DpDbf0ru.cjs → TagsField-OfrpyHZO.cjs} +2 -2
- package/dist/{TagsField-DpDbf0ru.cjs.map → TagsField-OfrpyHZO.cjs.map} +1 -1
- package/dist/{TextField-BWdmF-HE.js → TextField-7MobCad5.js} +4 -4
- package/dist/{TextField-BWdmF-HE.js.map → TextField-7MobCad5.js.map} +1 -1
- package/dist/{TextField-Df_kGy2l.cjs → TextField-B785pRgK.cjs} +2 -2
- package/dist/{TextField-Df_kGy2l.cjs.map → TextField-B785pRgK.cjs.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-BGdvqXad.js} +3 -3
- package/dist/{ThemeToggle-CgxF6oUu.js.map → ThemeToggle-BGdvqXad.js.map} +1 -1
- package/dist/{ThemeToggle-BJdXhmfc.cjs → ThemeToggle-BkmZ7s_u.cjs} +2 -2
- package/dist/{ThemeToggle-BJdXhmfc.cjs.map → ThemeToggle-BkmZ7s_u.cjs.map} +1 -1
- package/dist/{TimeColumns-DxVN0V8l.cjs → TimeColumns-B-xm1DGM.cjs} +2 -2
- package/dist/{TimeColumns-DxVN0V8l.cjs.map → TimeColumns-B-xm1DGM.cjs.map} +1 -1
- package/dist/{TimeColumns-n-fz50mr.js → TimeColumns-BRlDKx_i.js} +3 -3
- package/dist/{TimeColumns-n-fz50mr.js.map → TimeColumns-BRlDKx_i.js.map} +1 -1
- package/dist/{TimePicker-Bopxx3zU.js → TimePicker-B_3Ubip0.js} +6 -6
- package/dist/{TimePicker-Bopxx3zU.js.map → TimePicker-B_3Ubip0.js.map} +1 -1
- package/dist/{TimePicker-DvoemiGz.cjs → TimePicker-DvEIdE4v.cjs} +2 -2
- package/dist/{TimePicker-DvoemiGz.cjs.map → TimePicker-DvEIdE4v.cjs.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-DZSzFse_.cjs → Toaster-BIFRuqbC.cjs} +2 -2
- package/dist/{Toaster-DZSzFse_.cjs.map → Toaster-BIFRuqbC.cjs.map} +1 -1
- package/dist/{Toaster-BxIY2H4V.js → Toaster-DuzcRbio.js} +2 -2
- package/dist/{Toaster-BxIY2H4V.js.map → Toaster-DuzcRbio.js.map} +1 -1
- package/dist/{TranslatedFields-BtDLkQy7.cjs → TranslatedFields-D_a0NVKI.cjs} +2 -2
- package/dist/{TranslatedFields-BtDLkQy7.cjs.map → TranslatedFields-D_a0NVKI.cjs.map} +1 -1
- package/dist/{TranslatedFields-DmR8LKSG.js → TranslatedFields-HmP0Mg5t.js} +5 -5
- package/dist/{TranslatedFields-DmR8LKSG.js.map → TranslatedFields-HmP0Mg5t.js.map} +1 -1
- package/dist/{UserCard-J8Bpbh3x.js → UserCard-B1phOVKj.js} +4 -4
- package/dist/{UserCard-J8Bpbh3x.js.map → UserCard-B1phOVKj.js.map} +1 -1
- package/dist/{UserCard-C1yFvVIc.cjs → UserCard-BvOcDm5W.cjs} +2 -2
- package/dist/{UserCard-C1yFvVIc.cjs.map → UserCard-BvOcDm5W.cjs.map} +1 -1
- 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/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/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ChoiceCard/index.cjs +1 -1
- package/dist/components/ChoiceCard/index.js +1 -1
- package/dist/components/CodeBlock/index.cjs +1 -1
- package/dist/components/CodeBlock/index.js +1 -1
- package/dist/components/ColorPicker/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/EmptyState/index.cjs +1 -1
- package/dist/components/EmptyState/index.js +1 -1
- 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/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/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/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/MultiSelect/index.cjs +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/NumberField/index.cjs +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.js +1 -1
- package/dist/components/PageLayout/index.cjs +1 -1
- package/dist/components/PageLayout/index.js +1 -1
- package/dist/components/PageNotFound/index.cjs +1 -1
- package/dist/components/PageNotFound/index.js +1 -1
- package/dist/components/Pagination/index.cjs +1 -1
- package/dist/components/Pagination/index.js +1 -1
- package/dist/components/PaletteField/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/Radio/index.cjs +1 -1
- package/dist/components/Radio/index.js +1 -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/index.cjs +1 -1
- package/dist/components/Select/index.js +1 -1
- package/dist/components/Sidebar/index.cjs +1 -1
- package/dist/components/Sidebar/index.js +1 -1
- package/dist/components/Slider/index.cjs +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/SpeedDial/index.cjs +1 -1
- package/dist/components/SpeedDial/index.js +1 -1
- package/dist/components/Stepper/index.cjs +1 -1
- package/dist/components/Stepper/index.js +1 -1
- package/dist/components/SwatchPicker/index.cjs +1 -1
- package/dist/components/SwatchPicker/index.js +1 -1
- package/dist/components/Switch/index.cjs +1 -1
- package/dist/components/Switch/index.js +1 -1
- package/dist/components/Table/index.cjs +1 -1
- package/dist/components/Table/index.js +1 -1
- package/dist/components/Tabs/index.cjs +1 -1
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/TagsField/index.cjs +1 -1
- package/dist/components/TagsField/index.js +1 -1
- package/dist/components/TextField/index.cjs +1 -1
- package/dist/components/TextField/index.js +1 -1
- package/dist/components/ThemeToggle/index.cjs +1 -1
- package/dist/components/ThemeToggle/index.js +1 -1
- package/dist/components/TimePicker/index.cjs +1 -1
- package/dist/components/TimePicker/index.js +1 -1
- package/dist/components/Timeline/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/UserCard/index.cjs +1 -1
- package/dist/components/UserCard/index.js +1 -1
- package/dist/components/index.d.cts +3 -0
- package/dist/components/index.d.ts +3 -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 +149 -141
- 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/i18n/messages.d.cts +11 -0
- package/dist/i18n/messages.d.ts +11 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +16 -12
- package/dist/index.js +211 -193
- package/dist/index.js.map +1 -1
- package/dist/{messages-ogohLC5P.js → messages-B06Kl5rI.js} +100 -23
- package/dist/messages-B06Kl5rI.js.map +1 -0
- package/dist/{messages-DKT0SRM0.cjs → messages-CJqxqL3t.cjs} +9 -9
- package/dist/messages-CJqxqL3t.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/package.json +1 -1
- package/dist/Avatar-Dgf04PBC.cjs +0 -2
- 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/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-Bv4XXnD1.cjs +0 -2
- package/dist/FileUploader-B7VfhcR7.cjs +0 -2
- package/dist/FileUploader-B7VfhcR7.cjs.map +0 -1
- package/dist/FileUploader-BYF5FvUc.js.map +0 -1
- package/dist/IconButton-BEGWfcVc.js +0 -68
- package/dist/IconButton-BN-bZxEi.cjs +0 -2
- package/dist/Loader-B5YqzEYy.cjs +0 -2
- package/dist/Loader-BZIa8hwv.js +0 -29
- package/dist/PageNotFound-B8_eIT8p.cjs +0 -2
- package/dist/Pagination-BdVebW2L.cjs +0 -2
- package/dist/Pagination-CmskZjcz.js +0 -139
- package/dist/RadioGroup-C8u7eNBS.cjs +0 -2
- package/dist/RadioGroup-DbodUJW8.js +0 -141
- package/dist/RemoveDialog-CV75B0aN.js +0 -47
- package/dist/RemoveDialog-DmOk0ezc.cjs +0 -2
- package/dist/RichTextEditor-Bm8FFbcR.js.map +0 -1
- package/dist/RichTextEditor-uXddgtlk.cjs.map +0 -1
- package/dist/RootLayout-Cf7Rr9Iz.js +0 -515
- package/dist/RootLayout-kssj9exn.cjs +0 -2
- 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.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/messages-DKT0SRM0.cjs.map +0 -1
- package/dist/messages-ogohLC5P.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as o, jsxs as p, Fragment as g } from "react/jsx-runtime";
|
|
2
2
|
import { useNavigate as A, useRouterState as R, Outlet as r } from "@tanstack/react-router";
|
|
3
3
|
import { A as L } from "./AuthGuard-CVklwDbj.js";
|
|
4
|
-
import { R as x } from "./RootLayout-
|
|
5
|
-
import { U as T } from "./UserCard-
|
|
6
|
-
import { T as j } from "./Toaster-
|
|
4
|
+
import { R as x } from "./RootLayout-D3K-pAMO.js";
|
|
5
|
+
import { U as T } from "./UserCard-B1phOVKj.js";
|
|
6
|
+
import { T as j } from "./Toaster-DuzcRbio.js";
|
|
7
7
|
const I = ({
|
|
8
8
|
logo: s,
|
|
9
9
|
getUser: i,
|
|
@@ -47,4 +47,4 @@ const I = ({
|
|
|
47
47
|
export {
|
|
48
48
|
I as A
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=AdminRoot-
|
|
50
|
+
//# sourceMappingURL=AdminRoot-C4OyuOIr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminRoot-
|
|
1
|
+
{"version":3,"file":"AdminRoot-C4OyuOIr.js","sources":["../src/app/AdminRoot.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Outlet, useNavigate, useRouterState, type LinkProps } from '@tanstack/react-router'\nimport { RootLayout, UserCard, Toaster, type RootLayoutHeader } from '../components'\nimport { AuthGuard } from '../auth/AuthGuard'\n\n/** The minimal user shape `AdminRoot` reads — apps pass their own richer type via the generic. */\nexport interface AdminUser {\n name?: string\n email?: string\n avatar?: string\n}\n\nexport interface AdminRootProps<U extends AdminUser = AdminUser> {\n /** Brand mark for the sidebar top. */\n logo?: ReactNode\n /** Current user, or `null` when signed out. */\n getUser: () => U | null\n /** Clears the session; `AdminRoot` navigates to `loginPath` afterwards. */\n onLogout: () => void\n /** Route-id prefix for standalone public pages (rendered outside the shell). Default `'/_auth'`. */\n authRouteId?: string\n /** Guard target for signed-out visitors + post-logout redirect. Default `'/login'`. */\n loginPath?: string\n /** Show a `UserCard` in the sidebar footer. Default `true`. */\n showUserCard?: boolean\n /**\n * Extra `RootLayout` header config, merged **over** the defaults (the app's fields win). Flows through\n * unchanged — e.g. **`header.menu`** (`HeaderMenuItem[]`) adds items to the account menu above Sign out.\n */\n header?: RootLayoutHeader\n}\n\n/**\n * Root-route component for admin apps — it wires up the whole shell orchestration so an app only has to\n * supply `logo` + `getUser` + `onLogout`. Public pages (route id under `authRouteId`) render standalone;\n * everything else renders inside the guarded admin shell (`RootLayout` + a sidebar `UserCard`), gated by\n * `AuthGuard` (signed-out visitors bounce to `loginPath`). Logout clears the session and navigates to\n * `loginPath`. Mounts exactly one app-wide `<Toaster/>` (the inner `RootLayout` gets `toaster={false}`).\n *\n * `loginPath` is a plain string, cast loosely to the router's `to` type (the library can't know the\n * app's typed route tree). The generic `<U>` preserves the app's own user type through `getUser`.\n *\n * @example\n * // routes/__root.tsx\n * export const Route = createRootRoute({\n * component: () => <AdminRoot<AuthUser> logo={<Logo />} getUser={getUser} onLogout={logout} />,\n * })\n */\nexport const AdminRoot = <U extends AdminUser = AdminUser>({\n logo,\n getUser,\n onLogout,\n authRouteId = '/_auth',\n loginPath = '/login',\n showUserCard = true,\n header,\n}: AdminRootProps<U>) => {\n const navigate = useNavigate()\n const isAuthRoute = useRouterState({\n select: (s) => s.matches.some((m) => m.routeId.startsWith(authRouteId)),\n })\n const user = getUser()\n const handleLogout = () => {\n onLogout()\n navigate({ to: loginPath as LinkProps['to'] })\n }\n const content = isAuthRoute ? (\n <Outlet />\n ) : (\n <AuthGuard isAuthenticated={user != null} redirectTo={loginPath}>\n <RootLayout\n logo={logo}\n toaster={false}\n header={{\n user: user ? { name: user.name, email: user.email, avatar: user.avatar } : undefined,\n onLogout: handleLogout,\n ...header,\n }}\n sidebarFooter={\n showUserCard && user ? (\n <UserCard\n name={user.name}\n email={user.email}\n avatar={user.avatar}\n onLogout={handleLogout}\n />\n ) : undefined\n }\n >\n <Outlet />\n </RootLayout>\n </AuthGuard>\n )\n return (\n <>\n {content}\n <Toaster />\n </>\n )\n}\n"],"names":["AdminRoot","logo","getUser","onLogout","authRouteId","loginPath","showUserCard","header","navigate","useNavigate","isAuthRoute","useRouterState","s","m","user","handleLogout","content","jsx","Outlet","AuthGuard","RootLayout","UserCard","jsxs","Fragment","Toaster"],"mappings":";;;;;;AAgDO,MAAMA,IAAY,CAAkC;AAAA,EACzD,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,cAAAC,IAAe;AAAA,EACf,QAAAC;AACF,MAAyB;AACvB,QAAMC,IAAWC,EAAA,GACXC,IAAcC,EAAe;AAAA,IACjC,QAAQ,CAACC,MAAMA,EAAE,QAAQ,KAAK,CAACC,MAAMA,EAAE,QAAQ,WAAWT,CAAW,CAAC;AAAA,EAAA,CACvE,GACKU,IAAOZ,EAAA,GACPa,IAAe,MAAM;AACzB,IAAAZ,EAAA,GACAK,EAAS,EAAE,IAAIH,GAA8B;AAAA,EAC/C,GACMW,IAAUN,IACd,gBAAAO,EAACC,GAAA,CAAA,CAAO,IAER,gBAAAD,EAACE,GAAA,EAAU,iBAAiBL,KAAQ,MAAM,YAAYT,GACpD,UAAA,gBAAAY;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,MAAAnB;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,QACN,MAAMa,IAAO,EAAE,MAAMA,EAAK,MAAM,OAAOA,EAAK,OAAO,QAAQA,EAAK,OAAA,IAAW;AAAA,QAC3E,UAAUC;AAAA,QACV,GAAGR;AAAA,MAAA;AAAA,MAEL,eACED,KAAgBQ,IACd,gBAAAG;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAMP,EAAK;AAAA,UACX,OAAOA,EAAK;AAAA,UACZ,QAAQA,EAAK;AAAA,UACb,UAAUC;AAAA,QAAA;AAAA,MAAA,IAEV;AAAA,MAGN,4BAACG,GAAA,CAAA,CAAO;AAAA,IAAA;AAAA,EAAA,GAEZ;AAEF,SACE,gBAAAI,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAP;AAAA,sBACAQ,GAAA,CAAA,CAAQ;AAAA,EAAA,GACX;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),o=require("@tanstack/react-router"),x=require("./AuthGuard-kfOZviar.cjs"),R=require("./RootLayout-
|
|
2
|
-
//# sourceMappingURL=AdminRoot-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),o=require("@tanstack/react-router"),x=require("./AuthGuard-kfOZviar.cjs"),R=require("./RootLayout-CPxDqfGb.cjs"),g=require("./UserCard-BvOcDm5W.cjs"),q=require("./Toaster-BIFRuqbC.cjs"),A=({logo:s,getUser:u,onLogout:n,authRouteId:i="/_auth",loginPath:r="/login",showUserCard:c=!0,header:d})=>{const l=o.useNavigate(),m=o.useRouterState({select:j=>j.matches.some(v=>v.routeId.startsWith(i))}),t=u(),a=()=>{n(),l({to:r})},h=m?e.jsx(o.Outlet,{}):e.jsx(x.AuthGuard,{isAuthenticated:t!=null,redirectTo:r,children:e.jsx(R.RootLayout,{logo:s,toaster:!1,header:{user:t?{name:t.name,email:t.email,avatar:t.avatar}:void 0,onLogout:a,...d},sidebarFooter:c&&t?e.jsx(g.UserCard,{name:t.name,email:t.email,avatar:t.avatar,onLogout:a}):void 0,children:e.jsx(o.Outlet,{})})});return e.jsxs(e.Fragment,{children:[h,e.jsx(q.Toaster,{})]})};exports.AdminRoot=A;
|
|
2
|
+
//# sourceMappingURL=AdminRoot-bHywlbML.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminRoot-
|
|
1
|
+
{"version":3,"file":"AdminRoot-bHywlbML.cjs","sources":["../src/app/AdminRoot.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Outlet, useNavigate, useRouterState, type LinkProps } from '@tanstack/react-router'\nimport { RootLayout, UserCard, Toaster, type RootLayoutHeader } from '../components'\nimport { AuthGuard } from '../auth/AuthGuard'\n\n/** The minimal user shape `AdminRoot` reads — apps pass their own richer type via the generic. */\nexport interface AdminUser {\n name?: string\n email?: string\n avatar?: string\n}\n\nexport interface AdminRootProps<U extends AdminUser = AdminUser> {\n /** Brand mark for the sidebar top. */\n logo?: ReactNode\n /** Current user, or `null` when signed out. */\n getUser: () => U | null\n /** Clears the session; `AdminRoot` navigates to `loginPath` afterwards. */\n onLogout: () => void\n /** Route-id prefix for standalone public pages (rendered outside the shell). Default `'/_auth'`. */\n authRouteId?: string\n /** Guard target for signed-out visitors + post-logout redirect. Default `'/login'`. */\n loginPath?: string\n /** Show a `UserCard` in the sidebar footer. Default `true`. */\n showUserCard?: boolean\n /**\n * Extra `RootLayout` header config, merged **over** the defaults (the app's fields win). Flows through\n * unchanged — e.g. **`header.menu`** (`HeaderMenuItem[]`) adds items to the account menu above Sign out.\n */\n header?: RootLayoutHeader\n}\n\n/**\n * Root-route component for admin apps — it wires up the whole shell orchestration so an app only has to\n * supply `logo` + `getUser` + `onLogout`. Public pages (route id under `authRouteId`) render standalone;\n * everything else renders inside the guarded admin shell (`RootLayout` + a sidebar `UserCard`), gated by\n * `AuthGuard` (signed-out visitors bounce to `loginPath`). Logout clears the session and navigates to\n * `loginPath`. Mounts exactly one app-wide `<Toaster/>` (the inner `RootLayout` gets `toaster={false}`).\n *\n * `loginPath` is a plain string, cast loosely to the router's `to` type (the library can't know the\n * app's typed route tree). The generic `<U>` preserves the app's own user type through `getUser`.\n *\n * @example\n * // routes/__root.tsx\n * export const Route = createRootRoute({\n * component: () => <AdminRoot<AuthUser> logo={<Logo />} getUser={getUser} onLogout={logout} />,\n * })\n */\nexport const AdminRoot = <U extends AdminUser = AdminUser>({\n logo,\n getUser,\n onLogout,\n authRouteId = '/_auth',\n loginPath = '/login',\n showUserCard = true,\n header,\n}: AdminRootProps<U>) => {\n const navigate = useNavigate()\n const isAuthRoute = useRouterState({\n select: (s) => s.matches.some((m) => m.routeId.startsWith(authRouteId)),\n })\n const user = getUser()\n const handleLogout = () => {\n onLogout()\n navigate({ to: loginPath as LinkProps['to'] })\n }\n const content = isAuthRoute ? (\n <Outlet />\n ) : (\n <AuthGuard isAuthenticated={user != null} redirectTo={loginPath}>\n <RootLayout\n logo={logo}\n toaster={false}\n header={{\n user: user ? { name: user.name, email: user.email, avatar: user.avatar } : undefined,\n onLogout: handleLogout,\n ...header,\n }}\n sidebarFooter={\n showUserCard && user ? (\n <UserCard\n name={user.name}\n email={user.email}\n avatar={user.avatar}\n onLogout={handleLogout}\n />\n ) : undefined\n }\n >\n <Outlet />\n </RootLayout>\n </AuthGuard>\n )\n return (\n <>\n {content}\n <Toaster />\n </>\n )\n}\n"],"names":["AdminRoot","logo","getUser","onLogout","authRouteId","loginPath","showUserCard","header","navigate","useNavigate","isAuthRoute","useRouterState","s","m","user","handleLogout","content","jsx","Outlet","AuthGuard","RootLayout","UserCard","jsxs","Fragment","Toaster"],"mappings":"4OAgDaA,EAAY,CAAkC,CACzD,KAAAC,EACA,QAAAC,EACA,SAAAC,EACA,YAAAC,EAAc,SACd,UAAAC,EAAY,SACZ,aAAAC,EAAe,GACf,OAAAC,CACF,IAAyB,CACvB,MAAMC,EAAWC,EAAAA,YAAA,EACXC,EAAcC,EAAAA,eAAe,CACjC,OAASC,GAAMA,EAAE,QAAQ,KAAMC,GAAMA,EAAE,QAAQ,WAAWT,CAAW,CAAC,CAAA,CACvE,EACKU,EAAOZ,EAAA,EACPa,EAAe,IAAM,CACzBZ,EAAA,EACAK,EAAS,CAAE,GAAIH,EAA8B,CAC/C,EACMW,EAAUN,EACdO,EAAAA,IAACC,EAAAA,OAAA,CAAA,CAAO,EAERD,EAAAA,IAACE,EAAAA,UAAA,CAAU,gBAAiBL,GAAQ,KAAM,WAAYT,EACpD,SAAAY,EAAAA,IAACG,EAAAA,WAAA,CACC,KAAAnB,EACA,QAAS,GACT,OAAQ,CACN,KAAMa,EAAO,CAAE,KAAMA,EAAK,KAAM,MAAOA,EAAK,MAAO,OAAQA,EAAK,MAAA,EAAW,OAC3E,SAAUC,EACV,GAAGR,CAAA,EAEL,cACED,GAAgBQ,EACdG,EAAAA,IAACI,EAAAA,SAAA,CACC,KAAMP,EAAK,KACX,MAAOA,EAAK,MACZ,OAAQA,EAAK,OACb,SAAUC,CAAA,CAAA,EAEV,OAGN,eAACG,EAAAA,OAAA,CAAA,CAAO,CAAA,CAAA,EAEZ,EAEF,OACEI,EAAAA,KAAAC,WAAA,CACG,SAAA,CAAAP,QACAQ,EAAAA,QAAA,CAAA,CAAQ,CAAA,EACX,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),x=require("react"),I=require("clsx"),l=require("./Icon-BVULqOJD.cjs"),g=require("./names-BJnFU_5m.cjs"),C=require("./IconButton-
|
|
2
|
-
//# sourceMappingURL=Alert-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),x=require("react"),I=require("clsx"),l=require("./Icon-BVULqOJD.cjs"),g=require("./names-BJnFU_5m.cjs"),C=require("./IconButton-B87ipBK3.cjs"),N=require("./ConfigProvider-BicoaBLj.cjs"),j="_alert_13lvf_3",q="_filled_13lvf_19",h="_contained_13lvf_22",A="_outlined_13lvf_26",b="_text_13lvf_30",z="_icon_13lvf_35",E="_message_13lvf_44",T="_action_13lvf_50",w="_close_13lvf_57",s={alert:j,filled:q,contained:h,outlined:A,text:b,icon:z,message:E,action:T,close:w},y=new Set(g.ICON_NAMES),O={success:"TickCircle",error:"CloseCircle",warning:"Warning",info:"InfoCircle"},S=x.forwardRef(function({variant:i="filled",color:t="info",icon:n,action:c,onClose:o,closeLabel:a,className:_,style:f,children:d,...u},m){const v=N.useT(),r=n===!1?null:n==null?e.jsx(l.Icon,{name:O[t]??"InfoCircle"}):typeof n=="string"&&y.has(n)?e.jsx(l.Icon,{name:n}):n;return e.jsxs("div",{ref:m,role:"alert",className:I.clsx(s.alert,s[i],_),style:{"--tz-btn-rgb":`var(--tz-color-${t}-rgb)`,"--tz-btn-on":`var(--tz-color-${t}-contrast, #fff)`,...f},...u,children:[r!=null&&e.jsx("span",{className:s.icon,"aria-hidden":!0,children:r}),e.jsx("div",{className:s.message,children:d}),c!=null&&e.jsx("div",{className:s.action,children:c}),o&&e.jsx(C.IconButton,{variant:"text",color:t,size:"sm",className:s.close,"aria-label":a??v("common.close"),onClick:o,children:e.jsx(l.Icon,{name:"Close"})})]})});exports.Alert=S;
|
|
2
|
+
//# sourceMappingURL=Alert-DeGgilkH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert-
|
|
1
|
+
{"version":3,"file":"Alert-DeGgilkH.cjs","sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Alert.module.css'\n\nexport type AlertVariant = 'contained' | 'filled' | 'outlined' | 'text'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** Default leading icon per semantic color (other colors fall back to `InfoCircle`). */\nconst DEFAULT_ICON: Partial<Record<ThemeColor, IconName>> = {\n success: 'TickCircle',\n error: 'CloseCircle',\n warning: 'Warning',\n info: 'InfoCircle',\n}\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'title'> {\n /** Tint style. Defaults to `filled` (the soft tint). */\n variant?: AlertVariant\n /** Brand / semantic palette token that tints the alert. Defaults to `info`. */\n color?: ThemeColor\n /**\n * Leading icon — a known `IconName`, any node, or `false` to hide it. Defaults to the semantic icon\n * for `color` (success → `TickCircle`, error → `CloseCircle`, warning → `Warning`, info → `InfoCircle`).\n */\n icon?: IconName | ReactNode | false\n /** Trailing action (e.g. an `UNDO` button), placed before the close button. */\n action?: ReactNode\n /** When provided, a trailing × close button appears that calls this. */\n onClose?: () => void\n /** Accessible label for the close button. Defaults to `\"Close\"`. */\n closeLabel?: string\n /** Alert message. */\n children?: ReactNode\n}\n\n/**\n * A message banner — the library's inline feedback surface (info, success, warning, error). Tinted by\n * `color` via the shared `--tz-btn-rgb` pattern across the 4 standard `variant`s; a semantic leading\n * `icon` is auto-picked per color (override with `icon`, or `icon={false}` to drop it). An optional\n * `action` slot (e.g. an `UNDO` button) and an `onClose` × button trail the message. `role=\"alert\"`.\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n variant = 'filled',\n color = 'info',\n icon,\n action,\n onClose,\n closeLabel,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const renderedIcon =\n icon === false ? null : icon == null ? (\n <Icon name={DEFAULT_ICON[color] ?? 'InfoCircle'} />\n ) : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={clsx(styles.alert, styles[variant], className)}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {renderedIcon != null && (\n <span className={styles.icon} aria-hidden>\n {renderedIcon}\n </span>\n )}\n <div className={styles.message}>{children}</div>\n {action != null && <div className={styles.action}>{action}</div>}\n {onClose && (\n <IconButton\n variant=\"text\"\n color={color}\n size=\"sm\"\n className={styles.close}\n aria-label={closeLabel ?? t('common.close')}\n onClick={onClose}\n >\n <Icon name=\"Close\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","DEFAULT_ICON","Alert","forwardRef","variant","color","icon","action","onClose","closeLabel","className","style","children","props","ref","t","useT","renderedIcon","jsx","Icon","jsxs","clsx","styles","IconButton"],"mappings":"6fAUMA,EAAgB,IAAI,IAAYC,YAAU,EAG1CC,EAAsD,CAC1D,QAAS,aACT,MAAO,cACP,QAAS,UACT,KAAM,YACR,EA4BaC,EAAQC,EAAAA,WAAuC,SAC1D,CACE,QAAAC,EAAU,SACV,MAAAC,EAAQ,OACR,KAAAC,EACA,OAAAC,EACA,QAAAC,EACA,WAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACJC,EACJX,IAAS,GAAQ,KAAOA,GAAQ,KAC9BY,EAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMlB,EAAaI,CAAK,GAAK,aAAc,EAC/C,OAAOC,GAAS,UAAYP,EAAc,IAAIO,CAAI,EACpDY,EAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMb,CAAA,CAAkB,EAE9BA,EAGJ,OACEc,EAAAA,KAAC,MAAA,CACC,IAAAN,EACA,KAAK,QACL,UAAWO,EAAAA,KAAKC,EAAO,MAAOA,EAAOlB,CAAO,EAAGM,CAAS,EACxD,MACE,CACE,eAAgB,kBAAkBL,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGM,CAAA,EAGN,GAAGE,EAEH,SAAA,CAAAI,GAAgB,YACd,OAAA,CAAK,UAAWK,EAAO,KAAM,cAAW,GACtC,SAAAL,CAAA,CACH,EAEFC,EAAAA,IAAC,MAAA,CAAI,UAAWI,EAAO,QAAU,SAAAV,EAAS,EACzCL,GAAU,MAAQW,EAAAA,IAAC,OAAI,UAAWI,EAAO,OAAS,SAAAf,EAAO,EACzDC,GACCU,EAAAA,IAACK,EAAAA,WAAA,CACC,QAAQ,OACR,MAAAlB,EACA,KAAK,KACL,UAAWiB,EAAO,MAClB,aAAYb,GAAcM,EAAE,cAAc,EAC1C,QAASP,EAET,SAAAU,EAAAA,IAACC,EAAAA,KAAA,CAAK,KAAK,OAAA,CAAQ,CAAA,CAAA,CACrB,CAAA,CAAA,CAIR,CAAC"}
|
|
@@ -3,8 +3,8 @@ import { forwardRef as I } from "react";
|
|
|
3
3
|
import { clsx as N } from "clsx";
|
|
4
4
|
import { I as l } from "./Icon-DaTvzLBu.js";
|
|
5
5
|
import { a as g } from "./names-r21QPjcU.js";
|
|
6
|
-
import { I as C } from "./IconButton-
|
|
7
|
-
import { a as x } from "./ConfigProvider-
|
|
6
|
+
import { I as C } from "./IconButton-CBp8QuTO.js";
|
|
7
|
+
import { a as x } from "./ConfigProvider-DL9fylMo.js";
|
|
8
8
|
const h = "_alert_13lvf_3", A = "_filled_13lvf_19", b = "_contained_13lvf_22", z = "_outlined_13lvf_26", E = "_text_13lvf_30", T = "_icon_13lvf_35", w = "_message_13lvf_44", y = "_action_13lvf_50", O = "_close_13lvf_57", n = {
|
|
9
9
|
alert: h,
|
|
10
10
|
filled: A,
|
|
@@ -68,4 +68,4 @@ const h = "_alert_13lvf_3", A = "_filled_13lvf_19", b = "_contained_13lvf_22", z
|
|
|
68
68
|
export {
|
|
69
69
|
U as A
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=Alert-
|
|
71
|
+
//# sourceMappingURL=Alert-rNjfqj2Z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert-
|
|
1
|
+
{"version":3,"file":"Alert-rNjfqj2Z.js","sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Alert.module.css'\n\nexport type AlertVariant = 'contained' | 'filled' | 'outlined' | 'text'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** Default leading icon per semantic color (other colors fall back to `InfoCircle`). */\nconst DEFAULT_ICON: Partial<Record<ThemeColor, IconName>> = {\n success: 'TickCircle',\n error: 'CloseCircle',\n warning: 'Warning',\n info: 'InfoCircle',\n}\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'title'> {\n /** Tint style. Defaults to `filled` (the soft tint). */\n variant?: AlertVariant\n /** Brand / semantic palette token that tints the alert. Defaults to `info`. */\n color?: ThemeColor\n /**\n * Leading icon — a known `IconName`, any node, or `false` to hide it. Defaults to the semantic icon\n * for `color` (success → `TickCircle`, error → `CloseCircle`, warning → `Warning`, info → `InfoCircle`).\n */\n icon?: IconName | ReactNode | false\n /** Trailing action (e.g. an `UNDO` button), placed before the close button. */\n action?: ReactNode\n /** When provided, a trailing × close button appears that calls this. */\n onClose?: () => void\n /** Accessible label for the close button. Defaults to `\"Close\"`. */\n closeLabel?: string\n /** Alert message. */\n children?: ReactNode\n}\n\n/**\n * A message banner — the library's inline feedback surface (info, success, warning, error). Tinted by\n * `color` via the shared `--tz-btn-rgb` pattern across the 4 standard `variant`s; a semantic leading\n * `icon` is auto-picked per color (override with `icon`, or `icon={false}` to drop it). An optional\n * `action` slot (e.g. an `UNDO` button) and an `onClose` × button trail the message. `role=\"alert\"`.\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n variant = 'filled',\n color = 'info',\n icon,\n action,\n onClose,\n closeLabel,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const renderedIcon =\n icon === false ? null : icon == null ? (\n <Icon name={DEFAULT_ICON[color] ?? 'InfoCircle'} />\n ) : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={clsx(styles.alert, styles[variant], className)}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {renderedIcon != null && (\n <span className={styles.icon} aria-hidden>\n {renderedIcon}\n </span>\n )}\n <div className={styles.message}>{children}</div>\n {action != null && <div className={styles.action}>{action}</div>}\n {onClose && (\n <IconButton\n variant=\"text\"\n color={color}\n size=\"sm\"\n className={styles.close}\n aria-label={closeLabel ?? t('common.close')}\n onClick={onClose}\n >\n <Icon name=\"Close\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","DEFAULT_ICON","Alert","forwardRef","variant","color","icon","action","onClose","closeLabel","className","style","children","props","ref","t","useT","renderedIcon","jsx","Icon","jsxs","clsx","styles","IconButton"],"mappings":";;;;;;;;;;;;;;;;;GAUMA,IAAgB,IAAI,IAAYC,CAAU,GAG1CC,IAAsD;AAAA,EAC1D,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AACR,GA4BaC,IAAQC,EAAuC,SAC1D;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAIC,EAAA,GACJC,IACJX,MAAS,KAAQ,OAAOA,KAAQ,OAC9B,gBAAAY,EAACC,GAAA,EAAK,MAAMlB,EAAaI,CAAK,KAAK,cAAc,IAC/C,OAAOC,KAAS,YAAYP,EAAc,IAAIO,CAAI,IACpD,gBAAAY,EAACC,GAAA,EAAK,MAAMb,EAAA,CAAkB,IAE9BA;AAGJ,SACE,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAK;AAAA,MACL,WAAWO,EAAKC,EAAO,OAAOA,EAAOlB,CAAO,GAAGM,CAAS;AAAA,MACxD,OACE;AAAA,QACE,gBAAgB,kBAAkBL,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGM;AAAA,MAAA;AAAA,MAGN,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAI,KAAgB,0BACd,QAAA,EAAK,WAAWK,EAAO,MAAM,eAAW,IACtC,UAAAL,EAAA,CACH;AAAA,QAEF,gBAAAC,EAAC,OAAA,EAAI,WAAWI,EAAO,SAAU,UAAAV,GAAS;AAAA,QACzCL,KAAU,QAAQ,gBAAAW,EAAC,SAAI,WAAWI,EAAO,QAAS,UAAAf,GAAO;AAAA,QACzDC,KACC,gBAAAU;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAAlB;AAAA,YACA,MAAK;AAAA,YACL,WAAWiB,EAAO;AAAA,YAClB,cAAYb,KAAcM,EAAE,cAAc;AAAA,YAC1C,SAASP;AAAA,YAET,UAAA,gBAAAU,EAACC,GAAA,EAAK,MAAK,QAAA,CAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACrB;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const a=require("react/jsx-runtime"),g=require("react"),m=require("clsx"),v=require("./Avatar-
|
|
2
|
-
//# sourceMappingURL=AuthLayout-
|
|
1
|
+
"use strict";const a=require("react/jsx-runtime"),g=require("react"),m=require("clsx"),v=require("./Avatar-D_YivyqV.cjs"),u=require("./Typography-BFatE1_A.cjs"),x="_authLayout_1vumg_3",j="_logo_1vumg_20",L="_card_1vumg_36",N="_icon_1vumg_50",f="_header_1vumg_55",p="_body_1vumg_62",q="_footer_1vumg_68",o={authLayout:x,logo:j,card:L,icon:N,header:f,body:p,footer:q},A=g.forwardRef(function({title:s,subtitle:e,logo:c,icon:r,footer:n,color:l="accent",maxWidth:d=400,className:i,style:h,children:t,..._},y){return a.jsxs("div",{ref:y,className:m.clsx(o.authLayout,i),style:h,..._,children:[c!=null&&a.jsx("div",{className:o.logo,children:c}),a.jsxs("div",{className:o.card,style:{maxWidth:d},children:[r!=null&&a.jsx(v.Avatar,{className:o.icon,icon:r,color:l,size:"lg","aria-hidden":!0}),(s!=null||e!=null)&&a.jsxs("div",{className:o.header,children:[s!=null&&a.jsx(u.Typography,{variant:"h2",align:"center",children:s}),e!=null&&a.jsx(u.Typography,{color:"muted",align:"center",children:e})]}),t!=null&&a.jsx("div",{className:o.body,children:t}),n!=null&&a.jsx("div",{className:o.footer,children:n})]})]})});exports.AuthLayout=A;
|
|
2
|
+
//# sourceMappingURL=AuthLayout-ChILVWZ-.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout-
|
|
1
|
+
{"version":3,"file":"AuthLayout-ChILVWZ-.cjs","sources":["../src/components/AuthLayout/AuthLayout.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar } from '../Avatar'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './AuthLayout.module.css'\n\nexport interface AuthLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Heading — the page name (e.g. `\"Login\"`, `\"Forgot Password\"`, `\"Verify Code\"`). */\n title?: ReactNode\n /** Muted line under the title (e.g. `\"Enter your email to receive a reset link\"`). */\n subtitle?: ReactNode\n /**\n * Brand slot centered on the canvas, above the card (a logo `<img>` / `<svg>` / any node). The slot\n * is the constraint box (capped width + height) — an `<img>`/`<svg>` inside fills it 100% (aspect\n * kept), so you can pass an unsized logo and it's sized/centered for you.\n */\n logo?: ReactNode\n /** Optional glyph in a soft tinted circle above the title — an `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Bottom slot under the form — e.g. a \"Back to login\" / \"Sign up\" link row. */\n footer?: ReactNode\n /** Theme token that tints the `icon` circle. Defaults to `accent`. */\n color?: ThemeColor\n /** Max width of the centered card in px. Defaults to `400`. */\n maxWidth?: number\n /** The auth form (fields + submit) — usually a `<Form>`. */\n children?: ReactNode\n}\n\n/**\n * A ready-made, centered page frame for **authentication pages** (login, forgot-password,\n * reset-password, OTP, …) — so each page just supplies its `title` + form instead of hand-building the\n * layout. Fills the viewport (`100dvh`) with the app `background` canvas and vertically centers a\n * `logo` (on the canvas, above the card) + an elevated `surface` card, as a group. The card stacks: an\n * optional `icon` (in a soft tinted `Avatar` circle), the `title` + `subtitle` (centered), the\n * `children` (your form), and an optional `footer` (link row). Token-only styling; responsive.\n *\n * @example\n * <AuthLayout title=\"Login\" subtitle=\"Welcome back\" logo={<Logo />}>\n * <Form form={form}>…</Form>\n * </AuthLayout>\n */\nexport const AuthLayout = forwardRef<HTMLDivElement, AuthLayoutProps>(function AuthLayout(\n {\n title,\n subtitle,\n logo,\n icon,\n footer,\n color = 'accent',\n maxWidth = 400,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n return (\n <div ref={ref} className={clsx(styles.authLayout, className)} style={style} {...props}>\n {logo != null && <div className={styles.logo}>{logo}</div>}\n <div className={styles.card} style={{ maxWidth } as CSSProperties}>\n {icon != null && (\n <Avatar className={styles.icon} icon={icon} color={color} size=\"lg\" aria-hidden />\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.header}>\n {title != null && (\n <Typography variant=\"h2\" align=\"center\">\n {title}\n </Typography>\n )}\n {subtitle != null && (\n <Typography color=\"muted\" align=\"center\">\n {subtitle}\n </Typography>\n )}\n </div>\n )}\n {children != null && <div className={styles.body}>{children}</div>}\n {footer != null && <div className={styles.footer}>{footer}</div>}\n </div>\n </div>\n )\n})\n"],"names":["AuthLayout","forwardRef","title","subtitle","logo","icon","footer","color","maxWidth","className","style","children","props","ref","jsxs","clsx","styles","jsx","Avatar","Typography"],"mappings":"8WA4CaA,EAAaC,EAAAA,WAA4C,SACpE,CACE,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,KAAAC,EACA,OAAAC,EACA,MAAAC,EAAQ,SACR,SAAAC,EAAW,IACX,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,OACEC,EAAAA,KAAC,MAAA,CAAI,IAAAD,EAAU,UAAWE,EAAAA,KAAKC,EAAO,WAAYP,CAAS,EAAG,MAAAC,EAAe,GAAGE,EAC7E,SAAA,CAAAR,GAAQ,MAAQa,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAO,KAAO,SAAAZ,EAAK,EACpDU,OAAC,OAAI,UAAWE,EAAO,KAAM,MAAO,CAAE,SAAAR,GACnC,SAAA,CAAAH,GAAQ,MACPY,EAAAA,IAACC,EAAAA,OAAA,CAAO,UAAWF,EAAO,KAAM,KAAAX,EAAY,MAAAE,EAAc,KAAK,KAAK,cAAW,EAAA,CAAC,GAEhFL,GAAS,MAAQC,GAAY,cAC5B,MAAA,CAAI,UAAWa,EAAO,OACpB,SAAA,CAAAd,GAAS,MACRe,MAACE,EAAAA,WAAA,CAAW,QAAQ,KAAK,MAAM,SAC5B,SAAAjB,CAAA,CACH,EAEDC,GAAY,MACXc,MAACE,EAAAA,WAAA,CAAW,MAAM,QAAQ,MAAM,SAC7B,SAAAhB,CAAA,CACH,CAAA,EAEJ,EAEDQ,GAAY,MAAQM,EAAAA,IAAC,OAAI,UAAWD,EAAO,KAAO,SAAAL,EAAS,EAC3DL,GAAU,MAAQW,EAAAA,IAAC,OAAI,UAAWD,EAAO,OAAS,SAAAV,CAAA,CAAO,CAAA,CAAA,CAC5D,CAAA,EACF,CAEJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as n, jsx as a } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as g } from "react";
|
|
3
3
|
import { clsx as y } from "clsx";
|
|
4
|
-
import { A as f } from "./Avatar-
|
|
4
|
+
import { A as f } from "./Avatar-BGPGxry2.js";
|
|
5
5
|
import { T as u } from "./Typography-Cta6Rg4L.js";
|
|
6
6
|
const p = "_authLayout_1vumg_3", N = "_logo_1vumg_20", L = "_card_1vumg_36", A = "_icon_1vumg_50", x = "_header_1vumg_55", b = "_body_1vumg_62", j = "_footer_1vumg_68", o = {
|
|
7
7
|
authLayout: p,
|
|
@@ -40,4 +40,4 @@ const p = "_authLayout_1vumg_3", N = "_logo_1vumg_20", L = "_card_1vumg_36", A =
|
|
|
40
40
|
export {
|
|
41
41
|
B as A
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=AuthLayout-
|
|
43
|
+
//# sourceMappingURL=AuthLayout-zAS3jlYc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout-
|
|
1
|
+
{"version":3,"file":"AuthLayout-zAS3jlYc.js","sources":["../src/components/AuthLayout/AuthLayout.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar } from '../Avatar'\nimport { Typography } from '../Typography'\nimport type { IconName } from '../../icons/names'\nimport styles from './AuthLayout.module.css'\n\nexport interface AuthLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Heading — the page name (e.g. `\"Login\"`, `\"Forgot Password\"`, `\"Verify Code\"`). */\n title?: ReactNode\n /** Muted line under the title (e.g. `\"Enter your email to receive a reset link\"`). */\n subtitle?: ReactNode\n /**\n * Brand slot centered on the canvas, above the card (a logo `<img>` / `<svg>` / any node). The slot\n * is the constraint box (capped width + height) — an `<img>`/`<svg>` inside fills it 100% (aspect\n * kept), so you can pass an unsized logo and it's sized/centered for you.\n */\n logo?: ReactNode\n /** Optional glyph in a soft tinted circle above the title — an `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Bottom slot under the form — e.g. a \"Back to login\" / \"Sign up\" link row. */\n footer?: ReactNode\n /** Theme token that tints the `icon` circle. Defaults to `accent`. */\n color?: ThemeColor\n /** Max width of the centered card in px. Defaults to `400`. */\n maxWidth?: number\n /** The auth form (fields + submit) — usually a `<Form>`. */\n children?: ReactNode\n}\n\n/**\n * A ready-made, centered page frame for **authentication pages** (login, forgot-password,\n * reset-password, OTP, …) — so each page just supplies its `title` + form instead of hand-building the\n * layout. Fills the viewport (`100dvh`) with the app `background` canvas and vertically centers a\n * `logo` (on the canvas, above the card) + an elevated `surface` card, as a group. The card stacks: an\n * optional `icon` (in a soft tinted `Avatar` circle), the `title` + `subtitle` (centered), the\n * `children` (your form), and an optional `footer` (link row). Token-only styling; responsive.\n *\n * @example\n * <AuthLayout title=\"Login\" subtitle=\"Welcome back\" logo={<Logo />}>\n * <Form form={form}>…</Form>\n * </AuthLayout>\n */\nexport const AuthLayout = forwardRef<HTMLDivElement, AuthLayoutProps>(function AuthLayout(\n {\n title,\n subtitle,\n logo,\n icon,\n footer,\n color = 'accent',\n maxWidth = 400,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n return (\n <div ref={ref} className={clsx(styles.authLayout, className)} style={style} {...props}>\n {logo != null && <div className={styles.logo}>{logo}</div>}\n <div className={styles.card} style={{ maxWidth } as CSSProperties}>\n {icon != null && (\n <Avatar className={styles.icon} icon={icon} color={color} size=\"lg\" aria-hidden />\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.header}>\n {title != null && (\n <Typography variant=\"h2\" align=\"center\">\n {title}\n </Typography>\n )}\n {subtitle != null && (\n <Typography color=\"muted\" align=\"center\">\n {subtitle}\n </Typography>\n )}\n </div>\n )}\n {children != null && <div className={styles.body}>{children}</div>}\n {footer != null && <div className={styles.footer}>{footer}</div>}\n </div>\n </div>\n )\n})\n"],"names":["AuthLayout","forwardRef","title","subtitle","logo","icon","footer","color","maxWidth","className","style","children","props","ref","jsxs","clsx","styles","jsx","Avatar","Typography"],"mappings":";;;;;;;;;;;;;GA4CaA,IAAaC,EAA4C,SACpE;AAAA,EACE,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,SACE,gBAAAC,EAAC,OAAA,EAAI,KAAAD,GAAU,WAAWE,EAAKC,EAAO,YAAYP,CAAS,GAAG,OAAAC,GAAe,GAAGE,GAC7E,UAAA;AAAA,IAAAR,KAAQ,QAAQ,gBAAAa,EAAC,OAAA,EAAI,WAAWD,EAAO,MAAO,UAAAZ,GAAK;AAAA,IACpD,gBAAAU,EAAC,SAAI,WAAWE,EAAO,MAAM,OAAO,EAAE,UAAAR,KACnC,UAAA;AAAA,MAAAH,KAAQ,QACP,gBAAAY,EAACC,GAAA,EAAO,WAAWF,EAAO,MAAM,MAAAX,GAAY,OAAAE,GAAc,MAAK,MAAK,eAAW,GAAA,CAAC;AAAA,OAEhFL,KAAS,QAAQC,KAAY,2BAC5B,OAAA,EAAI,WAAWa,EAAO,QACpB,UAAA;AAAA,QAAAd,KAAS,QACR,gBAAAe,EAACE,GAAA,EAAW,SAAQ,MAAK,OAAM,UAC5B,UAAAjB,EAAA,CACH;AAAA,QAEDC,KAAY,QACX,gBAAAc,EAACE,GAAA,EAAW,OAAM,SAAQ,OAAM,UAC7B,UAAAhB,EAAA,CACH;AAAA,MAAA,GAEJ;AAAA,MAEDQ,KAAY,QAAQ,gBAAAM,EAAC,SAAI,WAAWD,EAAO,MAAO,UAAAL,GAAS;AAAA,MAC3DL,KAAU,QAAQ,gBAAAW,EAAC,SAAI,WAAWD,EAAO,QAAS,UAAAV,EAAA,CAAO;AAAA,IAAA,EAAA,CAC5D;AAAA,EAAA,GACF;AAEJ,CAAC;"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as E, useState as I, useRef as
|
|
3
|
-
import { clsx as
|
|
4
|
-
import { I as
|
|
5
|
-
import { a as
|
|
6
|
-
const
|
|
7
|
-
avatar:
|
|
8
|
-
circle:
|
|
9
|
-
square:
|
|
10
|
-
img:
|
|
11
|
-
fallback:
|
|
12
|
-
sm:
|
|
13
|
-
md:
|
|
14
|
-
lg:
|
|
15
|
-
group:
|
|
16
|
-
item:
|
|
17
|
-
},
|
|
18
|
-
function
|
|
2
|
+
import { forwardRef as E, useState as I, useRef as A } from "react";
|
|
3
|
+
import { clsx as S } from "clsx";
|
|
4
|
+
import { I as g } from "./Icon-DaTvzLBu.js";
|
|
5
|
+
import { a as C } from "./names-r21QPjcU.js";
|
|
6
|
+
const q = "_avatar_1kd46_3", w = "_circle_1kd46_16", x = "_square_1kd46_20", y = "_img_1kd46_24", U = "_fallback_1kd46_31", z = "_sm_1kd46_37", B = "_md_1kd46_43", M = "_lg_1kd46_49", O = "_group_1kd46_57", R = "_item_1kd46_62", o = {
|
|
7
|
+
avatar: q,
|
|
8
|
+
circle: w,
|
|
9
|
+
square: x,
|
|
10
|
+
img: y,
|
|
11
|
+
fallback: U,
|
|
12
|
+
sm: z,
|
|
13
|
+
md: B,
|
|
14
|
+
lg: M,
|
|
15
|
+
group: O,
|
|
16
|
+
item: R
|
|
17
|
+
}, $ = new Set(C);
|
|
18
|
+
function j(m) {
|
|
19
19
|
const t = m.trim().split(/\s+/).filter(Boolean);
|
|
20
20
|
return t.length === 0 ? "" : t.length === 1 ? t[0].slice(0, 2).toUpperCase() : (t[0][0] + t[t.length - 1][0]).toUpperCase();
|
|
21
21
|
}
|
|
@@ -27,24 +27,24 @@ const J = E(function({
|
|
|
27
27
|
size: n = "md",
|
|
28
28
|
shape: p = "circle",
|
|
29
29
|
color: _ = "accent",
|
|
30
|
-
className:
|
|
31
|
-
style:
|
|
30
|
+
className: k,
|
|
31
|
+
style: v,
|
|
32
32
|
children: c,
|
|
33
33
|
...b
|
|
34
34
|
}, N) {
|
|
35
|
-
const [h, f] = I(!1),
|
|
36
|
-
|
|
35
|
+
const [h, f] = I(!1), d = A(t);
|
|
36
|
+
d.current !== t && (d.current = t, f(!1));
|
|
37
37
|
const i = !!t && !h, r = u ?? l;
|
|
38
38
|
let e;
|
|
39
|
-
return a !== void 0 ? e = typeof a == "string" &&
|
|
39
|
+
return a !== void 0 ? e = typeof a == "string" && $.has(a) ? /* @__PURE__ */ s(g, { name: a, size: n }) : a : c != null && c !== "" ? e = c : l ? e = j(l) : e = /* @__PURE__ */ s(g, { name: "User", size: n }), /* @__PURE__ */ s(
|
|
40
40
|
"div",
|
|
41
41
|
{
|
|
42
42
|
ref: N,
|
|
43
|
-
className:
|
|
43
|
+
className: S(o.avatar, o[n], o[p], k),
|
|
44
44
|
style: {
|
|
45
45
|
"--tz-btn-rgb": `var(--tz-color-${_}-rgb)`,
|
|
46
46
|
"--tz-btn-on": `var(--tz-color-${_}-contrast, #fff)`,
|
|
47
|
-
...
|
|
47
|
+
...v
|
|
48
48
|
},
|
|
49
49
|
role: !i && r ? "img" : void 0,
|
|
50
50
|
"aria-label": !i && r ? r : void 0,
|
|
@@ -57,4 +57,4 @@ export {
|
|
|
57
57
|
J as A,
|
|
58
58
|
o as s
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=Avatar-
|
|
60
|
+
//# sourceMappingURL=Avatar-BGPGxry2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar-
|
|
1
|
+
{"version":3,"file":"Avatar-BGPGxry2.js","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import {\n forwardRef,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Avatar.module.css'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\nexport type AvatarShape = 'circle' | 'square'\n\nexport interface AvatarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Image URL. When set (and it loads), the avatar shows the photo; on error it falls back. */\n src?: string\n /** Alt text for the image / accessible name for an icon-or-initials avatar (falls back to `name`). */\n alt?: string\n /** An icon to show when there's no image — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Full name — used to derive initials (e.g. \"David Savaneli\" → \"DS\") and as the accessible name. */\n name?: string\n /** Preset size: `sm` 32 · `md` 40 · `lg` 48 px. Defaults to `md`. */\n size?: AvatarSize\n /** `circle` (default) or `square` (rounded rectangle). */\n shape?: AvatarShape\n /** Theme palette token for the icon/initials background. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** First letters of the first and last word, uppercased — e.g. \"David Savaneli\" → \"DS\". */\nfunction initialsFromName(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return ''\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase()\n}\n\n/**\n * A user avatar that shows — in priority order — an image (`src`), an `icon`, explicit `children`\n * (e.g. initials `\"D.S.\"`), initials derived from `name`, or a default user icon. If the image fails\n * to load it falls back automatically. The icon/initials background is tinted by `color` via the\n * shared `--tz-btn-rgb` / `--tz-btn-on` pattern. Token-only styling; pairs with `AvatarGroup`.\n */\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n src,\n alt,\n icon,\n name,\n size = 'md',\n shape = 'circle',\n color = 'accent',\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const [imgError, setImgError] = useState(false)\n // reset the error when `src` changes, so a new/valid image isn't stuck on the fallback forever\n // (React-blessed \"adjust state on prop change\" — restarts the render, no fallback flash)\n const lastSrc = useRef(src)\n if (lastSrc.current !== src) {\n lastSrc.current = src\n setImgError(false)\n }\n const showImage = Boolean(src) && !imgError\n const label = alt ?? name\n\n let fallback: ReactNode\n if (icon !== undefined) {\n fallback =\n typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={size} />\n ) : (\n icon\n )\n } else if (children != null && children !== '') {\n fallback = children\n } else if (name) {\n fallback = initialsFromName(name)\n } else {\n fallback = <Icon name=\"User\" size={size} />\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.avatar, styles[size], styles[shape], className)}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={!showImage && label ? 'img' : undefined}\n aria-label={!showImage && label ? label : undefined}\n {...props}\n >\n {showImage ? (\n <img src={src} alt={label ?? ''} className={styles.img} onError={() => setImgError(true)} />\n ) : (\n <span className={styles.fallback} aria-hidden={label ? true : undefined}>\n {fallback}\n </span>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","initialsFromName","name","parts","Avatar","forwardRef","src","alt","icon","size","shape","color","className","style","children","props","ref","imgError","setImgError","useState","lastSrc","useRef","showImage","label","fallback","jsx","Icon","clsx","styles"],"mappings":";;;;;;;;;;;;;;;;GAkCMA,IAAgB,IAAI,IAAYC,CAAU;AAGhD,SAASC,EAAiBC,GAAsB;AAC9C,QAAMC,IAAQD,EAAK,KAAA,EAAO,MAAM,KAAK,EAAE,OAAO,OAAO;AACrD,SAAIC,EAAM,WAAW,IAAU,KAC3BA,EAAM,WAAW,IAAUA,EAAM,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,YAAA,KAC5CA,EAAM,CAAC,EAAE,CAAC,IAAIA,EAAMA,EAAM,SAAS,CAAC,EAAE,CAAC,GAAG,YAAA;AACpD;AAQO,MAAMC,IAASC,EAAwC,SAC5D;AAAA,EACE,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAN;AAAA,EACA,MAAAO,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GAGxCC,IAAUC,EAAOf,CAAG;AAC1B,EAAIc,EAAQ,YAAYd,MACtBc,EAAQ,UAAUd,GAClBY,EAAY,EAAK;AAEnB,QAAMI,IAAY,EAAQhB,KAAQ,CAACW,GAC7BM,IAAQhB,KAAOL;AAErB,MAAIsB;AACJ,SAAIhB,MAAS,SACXgB,IACE,OAAOhB,KAAS,YAAYT,EAAc,IAAIS,CAAI,IAChD,gBAAAiB,EAACC,GAAA,EAAK,MAAMlB,GAAkB,MAAAC,EAAA,CAAY,IAE1CD,IAEKM,KAAY,QAAQA,MAAa,KAC1CU,IAAWV,IACFZ,IACTsB,IAAWvB,EAAiBC,CAAI,IAEhCsB,IAAW,gBAAAC,EAACC,GAAA,EAAK,MAAK,QAAO,MAAAjB,GAAY,GAIzC,gBAAAgB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAT;AAAA,MACA,WAAWW,EAAKC,EAAO,QAAQA,EAAOnB,CAAI,GAAGmB,EAAOlB,CAAK,GAAGE,CAAS;AAAA,MACrE,OACE;AAAA,QACE,gBAAgB,kBAAkBD,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGE;AAAA,MAAA;AAAA,MAGP,MAAM,CAACS,KAAaC,IAAQ,QAAQ;AAAA,MACpC,cAAY,CAACD,KAAaC,IAAQA,IAAQ;AAAA,MACzC,GAAGR;AAAA,MAEH,UAAAO,IACC,gBAAAG,EAAC,OAAA,EAAI,KAAAnB,GAAU,KAAKiB,KAAS,IAAI,WAAWK,EAAO,KAAK,SAAS,MAAMV,EAAY,EAAI,EAAA,CAAG,IAE1F,gBAAAO,EAAC,QAAA,EAAK,WAAWG,EAAO,UAAU,eAAaL,IAAQ,KAAO,QAC3D,UAAAC,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const n=require("react/jsx-runtime"),_=require("react"),I=require("clsx"),g=require("./Icon-BVULqOJD.cjs"),h=require("./names-BJnFU_5m.cjs"),j="_avatar_1kd46_3",E="_circle_1kd46_16",A="_square_1kd46_20",S="_img_1kd46_24",y="_fallback_1kd46_31",C="_sm_1kd46_37",w="_md_1kd46_43",R="_lg_1kd46_49",U="_group_1kd46_57",z="_item_1kd46_62",e={avatar:j,circle:E,square:A,img:S,fallback:y,sm:C,md:w,lg:R,group:U,item:z},B=new Set(h.ICON_NAMES);function M(m){const t=m.trim().split(/\s+/).filter(Boolean);return t.length===0?"":t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}const O=_.forwardRef(function({src:t,alt:k,icon:r,name:l,size:o="md",shape:v="circle",color:u="accent",className:b,style:p,children:c,...q},x){const[N,f]=_.useState(!1),d=_.useRef(t);d.current!==t&&(d.current=t,f(!1));const i=!!t&&!N,s=k??l;let a;return r!==void 0?a=typeof r=="string"&&B.has(r)?n.jsx(g.Icon,{name:r,size:o}):r:c!=null&&c!==""?a=c:l?a=M(l):a=n.jsx(g.Icon,{name:"User",size:o}),n.jsx("div",{ref:x,className:I.clsx(e.avatar,e[o],e[v],b),style:{"--tz-btn-rgb":`var(--tz-color-${u}-rgb)`,"--tz-btn-on":`var(--tz-color-${u}-contrast, #fff)`,...p},role:!i&&s?"img":void 0,"aria-label":!i&&s?s:void 0,...q,children:i?n.jsx("img",{src:t,alt:s??"",className:e.img,onError:()=>f(!0)}):n.jsx("span",{className:e.fallback,"aria-hidden":s?!0:void 0,children:a})})});exports.Avatar=O;exports.styles=e;
|
|
2
|
+
//# sourceMappingURL=Avatar-D_YivyqV.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar-
|
|
1
|
+
{"version":3,"file":"Avatar-D_YivyqV.cjs","sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import {\n forwardRef,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Avatar.module.css'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg'\nexport type AvatarShape = 'circle' | 'square'\n\nexport interface AvatarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Image URL. When set (and it loads), the avatar shows the photo; on error it falls back. */\n src?: string\n /** Alt text for the image / accessible name for an icon-or-initials avatar (falls back to `name`). */\n alt?: string\n /** An icon to show when there's no image — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Full name — used to derive initials (e.g. \"David Savaneli\" → \"DS\") and as the accessible name. */\n name?: string\n /** Preset size: `sm` 32 · `md` 40 · `lg` 48 px. Defaults to `md`. */\n size?: AvatarSize\n /** `circle` (default) or `square` (rounded rectangle). */\n shape?: AvatarShape\n /** Theme palette token for the icon/initials background. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** First letters of the first and last word, uppercased — e.g. \"David Savaneli\" → \"DS\". */\nfunction initialsFromName(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return ''\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase()\n}\n\n/**\n * A user avatar that shows — in priority order — an image (`src`), an `icon`, explicit `children`\n * (e.g. initials `\"D.S.\"`), initials derived from `name`, or a default user icon. If the image fails\n * to load it falls back automatically. The icon/initials background is tinted by `color` via the\n * shared `--tz-btn-rgb` / `--tz-btn-on` pattern. Token-only styling; pairs with `AvatarGroup`.\n */\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n src,\n alt,\n icon,\n name,\n size = 'md',\n shape = 'circle',\n color = 'accent',\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const [imgError, setImgError] = useState(false)\n // reset the error when `src` changes, so a new/valid image isn't stuck on the fallback forever\n // (React-blessed \"adjust state on prop change\" — restarts the render, no fallback flash)\n const lastSrc = useRef(src)\n if (lastSrc.current !== src) {\n lastSrc.current = src\n setImgError(false)\n }\n const showImage = Boolean(src) && !imgError\n const label = alt ?? name\n\n let fallback: ReactNode\n if (icon !== undefined) {\n fallback =\n typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={size} />\n ) : (\n icon\n )\n } else if (children != null && children !== '') {\n fallback = children\n } else if (name) {\n fallback = initialsFromName(name)\n } else {\n fallback = <Icon name=\"User\" size={size} />\n }\n\n return (\n <div\n ref={ref}\n className={clsx(styles.avatar, styles[size], styles[shape], className)}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={!showImage && label ? 'img' : undefined}\n aria-label={!showImage && label ? label : undefined}\n {...props}\n >\n {showImage ? (\n <img src={src} alt={label ?? ''} className={styles.img} onError={() => setImgError(true)} />\n ) : (\n <span className={styles.fallback} aria-hidden={label ? true : undefined}>\n {fallback}\n </span>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","initialsFromName","name","parts","Avatar","forwardRef","src","alt","icon","size","shape","color","className","style","children","props","ref","imgError","setImgError","useState","lastSrc","useRef","showImage","label","fallback","jsx","Icon","clsx","styles"],"mappings":"yaAkCMA,EAAgB,IAAI,IAAYC,YAAU,EAGhD,SAASC,EAAiBC,EAAsB,CAC9C,MAAMC,EAAQD,EAAK,KAAA,EAAO,MAAM,KAAK,EAAE,OAAO,OAAO,EACrD,OAAIC,EAAM,SAAW,EAAU,GAC3BA,EAAM,SAAW,EAAUA,EAAM,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,YAAA,GAC5CA,EAAM,CAAC,EAAE,CAAC,EAAIA,EAAMA,EAAM,OAAS,CAAC,EAAE,CAAC,GAAG,YAAA,CACpD,CAQO,MAAMC,EAASC,EAAAA,WAAwC,SAC5D,CACE,IAAAC,EACA,IAAAC,EACA,KAAAC,EACA,KAAAN,EACA,KAAAO,EAAO,KACP,MAAAC,EAAQ,SACR,MAAAC,EAAQ,SACR,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EAGxCC,EAAUC,EAAAA,OAAOf,CAAG,EACtBc,EAAQ,UAAYd,IACtBc,EAAQ,QAAUd,EAClBY,EAAY,EAAK,GAEnB,MAAMI,EAAY,EAAQhB,GAAQ,CAACW,EAC7BM,EAAQhB,GAAOL,EAErB,IAAIsB,EACJ,OAAIhB,IAAS,OACXgB,EACE,OAAOhB,GAAS,UAAYT,EAAc,IAAIS,CAAI,EAChDiB,EAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMlB,EAAkB,KAAAC,CAAA,CAAY,EAE1CD,EAEKM,GAAY,MAAQA,IAAa,GAC1CU,EAAWV,EACFZ,EACTsB,EAAWvB,EAAiBC,CAAI,EAEhCsB,EAAWC,EAAAA,IAACC,EAAAA,KAAA,CAAK,KAAK,OAAO,KAAAjB,EAAY,EAIzCgB,EAAAA,IAAC,MAAA,CACC,IAAAT,EACA,UAAWW,EAAAA,KAAKC,EAAO,OAAQA,EAAOnB,CAAI,EAAGmB,EAAOlB,CAAK,EAAGE,CAAS,EACrE,MACE,CACE,eAAgB,kBAAkBD,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGE,CAAA,EAGP,KAAM,CAACS,GAAaC,EAAQ,MAAQ,OACpC,aAAY,CAACD,GAAaC,EAAQA,EAAQ,OACzC,GAAGR,EAEH,SAAAO,EACCG,EAAAA,IAAC,MAAA,CAAI,IAAAnB,EAAU,IAAKiB,GAAS,GAAI,UAAWK,EAAO,IAAK,QAAS,IAAMV,EAAY,EAAI,CAAA,CAAG,EAE1FO,EAAAA,IAAC,OAAA,CAAK,UAAWG,EAAO,SAAU,cAAaL,EAAQ,GAAO,OAC3D,SAAAC,CAAA,CACH,CAAA,CAAA,CAIR,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const i=require("react/jsx-runtime"),e=require("react"),p=require("clsx"),r=require("./Avatar-
|
|
2
|
-
//# sourceMappingURL=AvatarGroup-
|
|
1
|
+
"use strict";const i=require("react/jsx-runtime"),e=require("react"),p=require("clsx"),r=require("./Avatar-D_YivyqV.cjs"),g={sm:"-6px",md:"-8px",lg:"-10px"},h=e.forwardRef(function({children:u,max:s,size:l="md",color:m="accent",className:d,style:v,...x},y){const a=e.Children.toArray(u).filter(e.isValidElement),t=a.length,A=s&&s>0&&t>s?s-1:t,c=a.slice(0,A),o=t-c.length;return i.jsxs("div",{ref:y,className:p.clsx(r.styles.group,d),style:{"--avatar-overlap":g[l],...v},...x,children:[c.map((n,f)=>e.cloneElement(n,{size:l,className:p.clsx(r.styles.item,n.props.className),style:{zIndex:t-f,...n.props.style}})),o>0&&i.jsxs(r.Avatar,{size:l,color:m,className:r.styles.item,style:{zIndex:0},children:["+",o]})]})});exports.AvatarGroup=h;
|
|
2
|
+
//# sourceMappingURL=AvatarGroup-Bnf_RSc9.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup-
|
|
1
|
+
{"version":3,"file":"AvatarGroup-Bnf_RSc9.cjs","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":"0HA0BMA,EAAsC,CAAE,GAAI,OAAQ,GAAI,OAAQ,GAAI,OAAA,EAO7DC,EAAcC,EAAAA,WAA6C,SACtE,CAAE,SAAAC,EAAU,IAAAC,EAAK,KAAAC,EAAO,KAAM,MAAAC,EAAQ,SAAU,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAA,EACrEC,EACA,CACA,MAAMC,EAAQC,EAAAA,SAAS,QAAQT,CAAQ,EAAE,OAAOU,gBAAc,EACxDC,EAAQH,EAAM,OACdI,EAAQX,GAAOA,EAAM,GAAKU,EAAQV,EAAMA,EAAM,EAAIU,EAClDE,EAAQL,EAAM,MAAM,EAAGI,CAAK,EAC5BE,EAAUH,EAAQE,EAAM,OAE9B,OACEE,EAAAA,KAAC,MAAA,CACC,IAAAR,EACA,UAAWS,EAAAA,KAAKC,SAAO,MAAOb,CAAS,EACvC,MAAO,CAAE,mBAAoBP,EAAQK,CAAI,EAAG,GAAGG,CAAA,EAC9C,GAAGC,EAEH,SAAA,CAAAO,EAAM,IAAI,CAACK,EAAOC,IACjBC,EAAAA,aAAaF,EAAO,CAClB,KAAAhB,EACA,UAAWc,EAAAA,KAAKC,EAAAA,OAAO,KAAMC,EAAM,MAAM,SAAS,EAClD,MAAO,CAAE,OAAQP,EAAQQ,EAAO,GAAGD,EAAM,MAAM,KAAA,CAAM,CACtD,CAAA,EAEFJ,EAAU,GACTC,EAAAA,KAACM,EAAAA,OAAA,CAAO,KAAAnB,EAAY,MAAAC,EAAc,UAAWc,EAAAA,OAAO,KAAM,MAAO,CAAE,OAAQ,GAAK,SAAA,CAAA,IAC5EH,CAAA,CAAA,CACJ,CAAA,CAAA,CAAA,CAIR,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as m } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as x, Children as g, isValidElement as h, cloneElement as N } from "react";
|
|
3
3
|
import { clsx as p } from "clsx";
|
|
4
|
-
import { s as o, A as E } from "./Avatar-
|
|
4
|
+
import { s as o, A as E } from "./Avatar-BGPGxry2.js";
|
|
5
5
|
const w = { sm: "-6px", md: "-8px", lg: "-10px" }, C = x(function({ children: c, max: t, size: r = "md", color: i = "accent", className: d, style: f, ...u }, A) {
|
|
6
6
|
const a = g.toArray(c).filter(h), s = a.length, v = t && t > 0 && s > t ? t - 1 : s, l = a.slice(0, v), n = s - l.length;
|
|
7
7
|
return /* @__PURE__ */ m(
|
|
@@ -30,4 +30,4 @@ const w = { sm: "-6px", md: "-8px", lg: "-10px" }, C = x(function({ children: c,
|
|
|
30
30
|
export {
|
|
31
31
|
C as A
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=AvatarGroup-
|
|
33
|
+
//# sourceMappingURL=AvatarGroup-Difz4lLR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup-
|
|
1
|
+
{"version":3,"file":"AvatarGroup-Difz4lLR.js","sources":["../src/components/Avatar/AvatarGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { Avatar, type AvatarProps, type AvatarSize } from './Avatar'\nimport styles from './Avatar.module.css'\n\nexport interface AvatarGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** `Avatar` elements to overlap. */\n children: ReactNode\n /** Show at most this many slots; the rest collapse into a trailing `+N` avatar. */\n max?: number\n /** Size applied to every avatar in the group (incl. the `+N`). Defaults to `md`. */\n size?: AvatarSize\n /** Theme palette token for the `+N` surplus avatar. Defaults to `accent`. */\n color?: ThemeColor\n}\n\nconst OVERLAP: Record<AvatarSize, string> = { sm: '-6px', md: '-8px', lg: '-10px' }\n\n/**\n * Overlaps a row of `Avatar`s with a ring between them, and collapses the overflow past `max` into a\n * trailing `+N` avatar (like a stacked team list). All avatars are normalized to the group's `size`.\n * Token-only styling.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { children, max, size = 'md', color = 'accent', className, style, ...props },\n ref,\n) {\n const items = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[]\n const total = items.length\n const limit = max && max > 0 && total > max ? max - 1 : total\n const shown = items.slice(0, limit)\n const surplus = total - shown.length\n\n return (\n <div\n ref={ref}\n className={clsx(styles.group, className)}\n style={{ '--avatar-overlap': OVERLAP[size], ...style } as CSSProperties}\n {...props}\n >\n {shown.map((child, index) =>\n cloneElement(child, {\n size,\n className: clsx(styles.item, child.props.className),\n style: { zIndex: total - index, ...child.props.style } as CSSProperties,\n }),\n )}\n {surplus > 0 && (\n <Avatar size={size} color={color} className={styles.item} style={{ zIndex: 0 }}>\n +{surplus}\n </Avatar>\n )}\n </div>\n )\n})\n"],"names":["OVERLAP","AvatarGroup","forwardRef","children","max","size","color","className","style","props","ref","items","Children","isValidElement","total","limit","shown","surplus","jsxs","clsx","styles","child","index","cloneElement","Avatar"],"mappings":";;;;AA0BA,MAAMA,IAAsC,EAAE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAA,GAO7DC,IAAcC,EAA6C,SACtE,EAAE,UAAAC,GAAU,KAAAC,GAAK,MAAAC,IAAO,MAAM,OAAAC,IAAQ,UAAU,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GACrEC,GACA;AACA,QAAMC,IAAQC,EAAS,QAAQT,CAAQ,EAAE,OAAOU,CAAc,GACxDC,IAAQH,EAAM,QACdI,IAAQX,KAAOA,IAAM,KAAKU,IAAQV,IAAMA,IAAM,IAAIU,GAClDE,IAAQL,EAAM,MAAM,GAAGI,CAAK,GAC5BE,IAAUH,IAAQE,EAAM;AAE9B,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWS,EAAKC,EAAO,OAAOb,CAAS;AAAA,MACvC,OAAO,EAAE,oBAAoBP,EAAQK,CAAI,GAAG,GAAGG,EAAA;AAAA,MAC9C,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAO,EAAM;AAAA,UAAI,CAACK,GAAOC,MACjBC,EAAaF,GAAO;AAAA,YAClB,MAAAhB;AAAA,YACA,WAAWc,EAAKC,EAAO,MAAMC,EAAM,MAAM,SAAS;AAAA,YAClD,OAAO,EAAE,QAAQP,IAAQQ,GAAO,GAAGD,EAAM,MAAM,MAAA;AAAA,UAAM,CACtD;AAAA,QAAA;AAAA,QAEFJ,IAAU,KACT,gBAAAC,EAACM,GAAA,EAAO,MAAAnB,GAAY,OAAAC,GAAc,WAAWc,EAAO,MAAM,OAAO,EAAE,QAAQ,KAAK,UAAA;AAAA,UAAA;AAAA,UAC5EH;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsxs as v, jsx as L } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as R } from "react";
|
|
3
|
+
import { clsx as i } from "clsx";
|
|
4
|
+
const y = "_root_4ao7f_4", z = "_badge_4ao7f_10", N = "_value_4ao7f_24", x = "_dot_4ao7f_34", B = "_topRight_4ao7f_40", $ = "_topLeft_4ao7f_46", j = "_bottomRight_4ao7f_52", w = "_bottomLeft_4ao7f_58", t = {
|
|
5
|
+
root: y,
|
|
6
|
+
badge: z,
|
|
7
|
+
value: N,
|
|
8
|
+
dot: x,
|
|
9
|
+
topRight: B,
|
|
10
|
+
topLeft: $,
|
|
11
|
+
bottomRight: j,
|
|
12
|
+
bottomLeft: w
|
|
13
|
+
}, C = {
|
|
14
|
+
"top-right": t.topRight,
|
|
15
|
+
"top-left": t.topLeft,
|
|
16
|
+
"bottom-right": t.bottomRight,
|
|
17
|
+
"bottom-left": t.bottomLeft
|
|
18
|
+
}, P = R(function({
|
|
19
|
+
children: n,
|
|
20
|
+
content: o,
|
|
21
|
+
dot: _ = !1,
|
|
22
|
+
color: e = "accent",
|
|
23
|
+
max: r = 99,
|
|
24
|
+
showZero: l = !1,
|
|
25
|
+
placement: b = "top-right",
|
|
26
|
+
className: c,
|
|
27
|
+
style: d,
|
|
28
|
+
...g
|
|
29
|
+
}, m) {
|
|
30
|
+
const f = typeof o == "number", p = f && o === 0 && !l, s = o != null && o !== "" && !p, a = !s && _, h = s || a, u = f && o > r ? `${r}+` : o;
|
|
31
|
+
return /* @__PURE__ */ v("span", { ref: m, className: i(t.root, c), style: d, ...g, children: [
|
|
32
|
+
n,
|
|
33
|
+
h && /* @__PURE__ */ L(
|
|
34
|
+
"span",
|
|
35
|
+
{
|
|
36
|
+
className: i(t.badge, a ? t.dot : t.value, C[b]),
|
|
37
|
+
style: {
|
|
38
|
+
"--tz-btn-rgb": `var(--tz-color-${e}-rgb)`,
|
|
39
|
+
"--tz-btn-on": `var(--tz-color-${e}-contrast, #fff)`
|
|
40
|
+
},
|
|
41
|
+
"aria-hidden": a ? !0 : void 0,
|
|
42
|
+
children: s ? u : null
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
] });
|
|
46
|
+
});
|
|
47
|
+
export {
|
|
48
|
+
P as B
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=Badge-BmFgusOa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge-
|
|
1
|
+
{"version":3,"file":"Badge-BmFgusOa.js","sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport styles from './Badge.module.css'\n\nexport type BadgePlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color' | 'content'> {\n /** The element the badge decorates — e.g. a `Button` or `IconButton`. */\n children: ReactNode\n /** Count/text shown in the badge. A `number` renders as a count (capped by `max`); omit it for a dot. */\n content?: number | string\n /** Render a small dot instead of `content` (a plain notification indicator). */\n dot?: boolean\n /** Theme palette token that tints the badge. Defaults to `accent`. */\n color?: ThemeColor\n /** Cap for numeric `content` — anything above renders as `${max}+`. Defaults to `99`. */\n max?: number\n /** Keep the badge visible when numeric `content` is `0`. Defaults to `false` (hidden). */\n showZero?: boolean\n /** Corner the badge sits in. Defaults to `top-right`. */\n placement?: BadgePlacement\n}\n\nconst PLACEMENT: Record<BadgePlacement, string> = {\n 'top-right': styles.topRight,\n 'top-left': styles.topLeft,\n 'bottom-right': styles.bottomRight,\n 'bottom-left': styles.bottomLeft,\n}\n\n/**\n * Wraps a child (typically a `Button` or `IconButton`) and pins a small badge to one of its corners.\n * Pass a numeric `content` for a count (auto-capped to `${max}+`), or set `dot` for a plain dot.\n * A numeric `0` is hidden unless `showZero`. The fill is tinted by the `color` token via the shared\n * `--tz-btn-rgb` / `--tz-btn-on` pattern; styling is token-only.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n children,\n content,\n dot = false,\n color = 'accent',\n max = 99,\n showZero = false,\n placement = 'top-right',\n className,\n style,\n ...props\n },\n ref,\n) {\n const isNumber = typeof content === 'number'\n const hiddenZero = isNumber && content === 0 && !showZero\n const hasContent = content !== undefined && content !== null && content !== '' && !hiddenZero\n const showDot = !hasContent && dot\n const visible = hasContent || showDot\n const display = isNumber && (content as number) > max ? `${max}+` : content\n\n return (\n <span ref={ref} className={clsx(styles.root, className)} style={style} {...props}>\n {children}\n {visible && (\n <span\n className={clsx(styles.badge, showDot ? styles.dot : styles.value, PLACEMENT[placement])}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n } as CSSProperties\n }\n aria-hidden={showDot ? true : undefined}\n >\n {hasContent ? display : null}\n </span>\n )}\n </span>\n )\n})\n"],"names":["PLACEMENT","styles","Badge","forwardRef","children","content","dot","color","max","showZero","placement","className","style","props","ref","isNumber","hiddenZero","hasContent","showDot","visible","display","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;;;GAwBMA,IAA4C;AAAA,EAChD,aAAaC,EAAO;AAAA,EACpB,YAAYA,EAAO;AAAA,EACnB,gBAAgBA,EAAO;AAAA,EACvB,eAAeA,EAAO;AACxB,GAQaC,IAAQC,EAAwC,SAC3D;AAAA,EACE,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,KAAAC,IAAM;AAAA,EACN,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAW,OAAOV,KAAY,UAC9BW,IAAaD,KAAYV,MAAY,KAAK,CAACI,GAC3CQ,IAAsCZ,KAAY,QAAQA,MAAY,MAAM,CAACW,GAC7EE,IAAU,CAACD,KAAcX,GACzBa,IAAUF,KAAcC,GACxBE,IAAUL,KAAaV,IAAqBG,IAAM,GAAGA,CAAG,MAAMH;AAEpE,SACE,gBAAAgB,EAAC,QAAA,EAAK,KAAAP,GAAU,WAAWQ,EAAKrB,EAAO,MAAMU,CAAS,GAAG,OAAAC,GAAe,GAAGC,GACxE,UAAA;AAAA,IAAAT;AAAA,IACAe,KACC,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAKrB,EAAO,OAAOiB,IAAUjB,EAAO,MAAMA,EAAO,OAAOD,EAAUU,CAAS,CAAC;AAAA,QACvF,OACE;AAAA,UACE,gBAAgB,kBAAkBH,CAAK;AAAA,UACvC,eAAe,kBAAkBA,CAAK;AAAA,QAAA;AAAA,QAG1C,eAAaW,IAAU,KAAO;AAAA,QAE7B,cAAaE,IAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAC1B,GAEJ;AAEJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const i=require("react/jsx-runtime"),v=require("react"),n=require("clsx"),L="_root_4ao7f_4",x="_badge_4ao7f_10",y="_value_4ao7f_24",z="_dot_4ao7f_34",N="_topRight_4ao7f_40",j="_topLeft_4ao7f_46",q="_bottomRight_4ao7f_52",B="_bottomLeft_4ao7f_58",t={root:L,badge:x,value:y,dot:z,topRight:N,topLeft:j,bottomRight:q,bottomLeft:B},$={"top-right":t.topRight,"top-left":t.topLeft,"bottom-right":t.bottomRight,"bottom-left":t.bottomLeft},w=v.forwardRef(function({children:f,content:o,dot:l=!1,color:a="accent",max:r=99,showZero:_=!1,placement:b="top-right",className:d,style:g,...h},u){const c=typeof o=="number",p=c&&o===0&&!_,s=o!=null&&o!==""&&!p,e=!s&&l,m=s||e,R=c&&o>r?`${r}+`:o;return i.jsxs("span",{ref:u,className:n.clsx(t.root,d),style:g,...h,children:[f,m&&i.jsx("span",{className:n.clsx(t.badge,e?t.dot:t.value,$[b]),style:{"--tz-btn-rgb":`var(--tz-color-${a}-rgb)`,"--tz-btn-on":`var(--tz-color-${a}-contrast, #fff)`},"aria-hidden":e?!0:void 0,children:s?R:null})]})});exports.Badge=w;
|
|
2
|
+
//# sourceMappingURL=Badge-DVbe1rAI.cjs.map
|