@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
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { jsx as r, jsxs as O } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as Q, useState as U } from "react";
|
|
3
|
+
import { clsx as d } from "clsx";
|
|
4
|
+
import { I as V } from "./Icon-DaTvzLBu.js";
|
|
5
|
+
import { a as W } from "./ConfigProvider-DL9fylMo.js";
|
|
6
|
+
const v = (s, i) => Array.from({ length: Math.max(i - s + 1, 0) }, (l, a) => s + a);
|
|
7
|
+
function X({
|
|
8
|
+
count: s,
|
|
9
|
+
page: i,
|
|
10
|
+
siblingCount: l = 1,
|
|
11
|
+
boundaryCount: a = 1
|
|
12
|
+
}) {
|
|
13
|
+
if (s <= 0) return [];
|
|
14
|
+
const o = v(1, Math.min(a, s)), g = v(Math.max(s - a + 1, a + 1), s), p = Math.max(
|
|
15
|
+
Math.min(i - l, s - a - l * 2 - 1),
|
|
16
|
+
a + 2
|
|
17
|
+
), _ = Math.min(
|
|
18
|
+
Math.max(i + l, a + l * 2 + 2),
|
|
19
|
+
g.length > 0 ? g[0] - 2 : s - 1
|
|
20
|
+
);
|
|
21
|
+
return [
|
|
22
|
+
...o,
|
|
23
|
+
// A start ellipsis, OR the single page that sits between the start boundary and the siblings.
|
|
24
|
+
...p > a + 2 ? ["start-ellipsis"] : a + 1 < s - a ? [a + 1] : [],
|
|
25
|
+
...v(p, _),
|
|
26
|
+
// An end ellipsis, OR the single page between the siblings and the end boundary.
|
|
27
|
+
..._ < s - a - 1 ? ["end-ellipsis"] : s - a > a ? [s - a] : [],
|
|
28
|
+
...g
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
const Y = "_pagination_5gbvi_3", Z = "_list_5gbvi_8", y = "_item_5gbvi_18", u = "_sm_5gbvi_28", C = "_md_5gbvi_33", aa = "_lg_5gbvi_38", sa = "_page_5gbvi_45", ea = "_selected_5gbvi_64", ia = "_outlined_5gbvi_80", ta = "_rounded_5gbvi_96", la = "_arrow_5gbvi_26", na = "_flip_5gbvi_107", ra = "_ellipsis_5gbvi_112", e = {
|
|
32
|
+
pagination: Y,
|
|
33
|
+
list: Z,
|
|
34
|
+
item: y,
|
|
35
|
+
sm: u,
|
|
36
|
+
md: C,
|
|
37
|
+
lg: aa,
|
|
38
|
+
page: sa,
|
|
39
|
+
selected: ea,
|
|
40
|
+
outlined: ia,
|
|
41
|
+
rounded: ta,
|
|
42
|
+
arrow: la,
|
|
43
|
+
flip: na,
|
|
44
|
+
ellipsis: ra
|
|
45
|
+
}, w = (s, i, l) => Math.min(Math.max(s, i), l), _a = Q(function({
|
|
46
|
+
count: i,
|
|
47
|
+
page: l,
|
|
48
|
+
defaultPage: a = 1,
|
|
49
|
+
onChange: o,
|
|
50
|
+
siblingCount: g = 1,
|
|
51
|
+
boundaryCount: p = 1,
|
|
52
|
+
showFirstButton: _ = !1,
|
|
53
|
+
showLastButton: $ = !1,
|
|
54
|
+
hidePrevButton: z = !1,
|
|
55
|
+
hideNextButton: A = !1,
|
|
56
|
+
variant: I = "outlined",
|
|
57
|
+
size: h = "md",
|
|
58
|
+
color: x = "accent",
|
|
59
|
+
rounded: S = !1,
|
|
60
|
+
disabled: b = !1,
|
|
61
|
+
className: j,
|
|
62
|
+
style: k,
|
|
63
|
+
"aria-label": L = "Pagination",
|
|
64
|
+
...R
|
|
65
|
+
}, E) {
|
|
66
|
+
const M = l !== void 0, [T, q] = U(a), N = Math.max(i, 1), n = w(M ? l : T, 1, N), P = (t) => {
|
|
67
|
+
const c = w(t, 1, N);
|
|
68
|
+
c !== n && (M || q(c), o == null || o(c));
|
|
69
|
+
}, m = W(), B = X({ count: i, page: n, siblingCount: g, boundaryCount: p }), D = {
|
|
70
|
+
"--tz-btn-rgb": `var(--tz-color-${x}-rgb)`,
|
|
71
|
+
"--tz-btn-on": `var(--tz-color-${x}-contrast, #fff)`,
|
|
72
|
+
...k
|
|
73
|
+
}, f = (t, c, F, G, H, J, K = !1) => H ? null : /* @__PURE__ */ r("li", { className: e.item, children: /* @__PURE__ */ r(
|
|
74
|
+
"button",
|
|
75
|
+
{
|
|
76
|
+
type: "button",
|
|
77
|
+
className: d(e.page, e.arrow),
|
|
78
|
+
"aria-label": F,
|
|
79
|
+
disabled: b || J,
|
|
80
|
+
onClick: () => P(G),
|
|
81
|
+
children: /* @__PURE__ */ r(V, { name: c, size: h, className: K ? e.flip : void 0 })
|
|
82
|
+
}
|
|
83
|
+
) }, t);
|
|
84
|
+
return /* @__PURE__ */ r(
|
|
85
|
+
"nav",
|
|
86
|
+
{
|
|
87
|
+
ref: E,
|
|
88
|
+
"aria-label": L,
|
|
89
|
+
className: d(
|
|
90
|
+
e.pagination,
|
|
91
|
+
e[I],
|
|
92
|
+
e[h],
|
|
93
|
+
S && e.rounded,
|
|
94
|
+
j
|
|
95
|
+
),
|
|
96
|
+
style: D,
|
|
97
|
+
...R,
|
|
98
|
+
children: /* @__PURE__ */ O("ul", { className: e.list, children: [
|
|
99
|
+
_ && f("first", "Previous", m("pagination.first"), 1, !1, n <= 1),
|
|
100
|
+
f(
|
|
101
|
+
"prev",
|
|
102
|
+
"ArrowLeft",
|
|
103
|
+
m("pagination.previous"),
|
|
104
|
+
n - 1,
|
|
105
|
+
z,
|
|
106
|
+
n <= 1
|
|
107
|
+
),
|
|
108
|
+
B.map(
|
|
109
|
+
(t, c) => typeof t == "number" ? /* @__PURE__ */ r("li", { className: e.item, children: /* @__PURE__ */ r(
|
|
110
|
+
"button",
|
|
111
|
+
{
|
|
112
|
+
type: "button",
|
|
113
|
+
className: d(e.page, t === n && e.selected),
|
|
114
|
+
"aria-label": m("pagination.page", { page: t }),
|
|
115
|
+
"aria-current": t === n ? "page" : void 0,
|
|
116
|
+
disabled: b,
|
|
117
|
+
onClick: () => P(t),
|
|
118
|
+
children: t
|
|
119
|
+
}
|
|
120
|
+
) }, t) : /* @__PURE__ */ r("li", { className: e.item, "aria-hidden": !0, children: /* @__PURE__ */ r("span", { className: e.ellipsis, children: "…" }) }, `${t}-${c}`)
|
|
121
|
+
),
|
|
122
|
+
f(
|
|
123
|
+
"next",
|
|
124
|
+
"ArrowLeft",
|
|
125
|
+
m("pagination.next"),
|
|
126
|
+
n + 1,
|
|
127
|
+
A,
|
|
128
|
+
n >= i,
|
|
129
|
+
!0
|
|
130
|
+
),
|
|
131
|
+
$ && f("last", "Next", m("pagination.last"), i, !1, n >= i)
|
|
132
|
+
] })
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
});
|
|
136
|
+
export {
|
|
137
|
+
_a as P
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=Pagination-BwtbmITJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination-CmskZjcz.js","sources":["../src/components/Pagination/paginationRange.ts","../src/components/Pagination/Pagination.tsx"],"sourcesContent":["/** A gap placeholder rendered as `…` — at the start (`1 … 4`) or end (`6 … 10`) of the range. */\nexport type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis'\n\n/** One item in a pagination range: a 1-based page number, or an ellipsis placeholder. */\nexport type PaginationItem = number | PaginationEllipsis\n\n/** Inputs for {@link paginationRange}. */\nexport interface PaginationRangeOptions {\n /** Total number of pages. */\n count: number\n /** Current page (1-based). */\n page: number\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n}\n\n/** Inclusive integer range `[start, end]` (empty when `end < start`). */\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i)\n\n/**\n * Build the page-item sequence for a pager — the boundary pages, the current page with its siblings,\n * and `start`/`end` ellipses where pages are skipped (the classic `1 … 4 5 6 … 10`). Pure and\n * framework-free so it can be unit-tested in isolation and reused. Assumes `1 <= page <= count`.\n */\nexport function paginationRange({\n count,\n page,\n siblingCount = 1,\n boundaryCount = 1,\n}: PaginationRangeOptions): PaginationItem[] {\n if (count <= 0) return []\n\n // Pages pinned at each edge.\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n // The window of pages around the current one, clamped so it never overlaps the boundaries.\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n // A start ellipsis, OR the single page that sits between the start boundary and the siblings.\n ...(siblingsStart > boundaryCount + 2\n ? (['start-ellipsis'] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n // An end ellipsis, OR the single page between the siblings and the end boundary.\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['end-ellipsis'] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n}\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon, type IconName } from '../Icon'\nimport { useT, type ThemeColor } from '../../theme'\nimport { paginationRange } from './paginationRange'\nimport styles from './Pagination.module.css'\n\nexport type PaginationVariant = 'outlined' | 'text'\nexport type PaginationSize = 'sm' | 'md' | 'lg'\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'color' | 'onChange'> {\n /** Total number of pages (required). From a row count, pass `Math.ceil(total / pageSize)`. */\n count: number\n /** Controlled current page (1-based). */\n page?: number\n /** Initial page for uncontrolled use (1-based). Defaults to `1`. */\n defaultPage?: number\n /** Fires with the next page (1-based) when a page or arrow is activated. */\n onChange?: (page: number) => void\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n /** Show a jump-to-first-page button before the previous arrow. Defaults to `false`. */\n showFirstButton?: boolean\n /** Show a jump-to-last-page button after the next arrow. Defaults to `false`. */\n showLastButton?: boolean\n /** Hide the previous-page arrow. Defaults to `false`. */\n hidePrevButton?: boolean\n /** Hide the next-page arrow. Defaults to `false`. */\n hideNextButton?: boolean\n /** Item style: `outlined` (bordered boxes, default) or `text` (borderless). */\n variant?: PaginationVariant\n /** Control size — sets the box, font, and icon sizes. Defaults to `md`. */\n size?: PaginationSize\n /** Theme palette token that tints the selected page. Defaults to `accent`. */\n color?: ThemeColor\n /** Render circular page buttons instead of rounded rectangles. Defaults to `false`. */\n rounded?: boolean\n /** Disable the whole control. Defaults to `false`. */\n disabled?: boolean\n}\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(Math.max(n, lo), hi)\n\n/**\n * A page navigator — previous/next arrows around a numbered range with `…` gaps (`1 … 4 5 6 … 10`),\n * the classic pager. Reusable across tables, lists, and galleries: drive it with `count` (total\n * pages) + `page`/`onChange`, computing `count` as `Math.ceil(total / pageSize)`. The selected page\n * is tinted via the shared `--tz-btn-rgb` pattern; unselected items are bordered (`outlined`) or\n * borderless (`text`). Controlled (`page` + `onChange`) or uncontrolled (`defaultPage`).\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstButton = false,\n showLastButton = false,\n hidePrevButton = false,\n hideNextButton = false,\n variant = 'outlined',\n size = 'md',\n color = 'accent',\n rounded = false,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel = 'Pagination',\n ...props\n },\n ref,\n) {\n const isControlled = page !== undefined\n const [internal, setInternal] = useState(defaultPage)\n const lastPage = Math.max(count, 1)\n const current = clamp(isControlled ? page! : internal, 1, lastPage)\n\n const go = (next: number) => {\n const target = clamp(next, 1, lastPage)\n if (target === current) return\n if (!isControlled) setInternal(target)\n onChange?.(target)\n }\n\n const t = useT()\n const items = paginationRange({ count, page: current, siblingCount, boundaryCount })\n\n // The selected fill + its readable text color, derived once via the shared button-tint vars.\n const rootStyle = {\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 // An arrow / jump control. `flip` mirrors the (left-pointing) icon to face right — the icon set has\n // no matching plain right arrow, so the next/last glyphs are the left ones flipped for symmetry.\n const control = (\n key: string,\n icon: IconName,\n label: string,\n target: number,\n hidden: boolean,\n atBound: boolean,\n flip = false,\n ): ReactNode =>\n hidden ? null : (\n <li key={key} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, styles.arrow)}\n aria-label={label}\n disabled={disabled || atBound}\n onClick={() => go(target)}\n >\n <Icon name={icon} size={size} className={flip ? styles.flip : undefined} />\n </button>\n </li>\n )\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={clsx(\n styles.pagination,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n className,\n )}\n style={rootStyle}\n {...props}\n >\n <ul className={styles.list}>\n {showFirstButton &&\n control('first', 'Previous', t('pagination.first'), 1, false, current <= 1)}\n {control(\n 'prev',\n 'ArrowLeft',\n t('pagination.previous'),\n current - 1,\n hidePrevButton,\n current <= 1,\n )}\n {items.map((item, i) =>\n typeof item === 'number' ? (\n <li key={item} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, item === current && styles.selected)}\n aria-label={t('pagination.page', { page: item })}\n aria-current={item === current ? 'page' : undefined}\n disabled={disabled}\n onClick={() => go(item)}\n >\n {item}\n </button>\n </li>\n ) : (\n <li key={`${item}-${i}`} className={styles.item} aria-hidden>\n <span className={styles.ellipsis}>…</span>\n </li>\n ),\n )}\n {control(\n 'next',\n 'ArrowLeft',\n t('pagination.next'),\n current + 1,\n hideNextButton,\n current >= count,\n true,\n )}\n {showLastButton &&\n control('last', 'Next', t('pagination.last'), count, false, current >= count)}\n </ul>\n </nav>\n )\n})\n"],"names":["range","start","end","_","i","paginationRange","count","page","siblingCount","boundaryCount","startPages","endPages","siblingsStart","siblingsEnd","clamp","n","lo","hi","Pagination","forwardRef","defaultPage","onChange","showFirstButton","showLastButton","hidePrevButton","hideNextButton","variant","size","color","rounded","disabled","className","style","ariaLabel","props","ref","isControlled","internal","setInternal","useState","lastPage","current","go","next","target","t","useT","items","rootStyle","control","key","icon","label","hidden","atBound","flip","jsx","styles","clsx","Icon","jsxs","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination-BwtbmITJ.js","sources":["../src/components/Pagination/paginationRange.ts","../src/components/Pagination/Pagination.tsx"],"sourcesContent":["/** A gap placeholder rendered as `…` — at the start (`1 … 4`) or end (`6 … 10`) of the range. */\nexport type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis'\n\n/** One item in a pagination range: a 1-based page number, or an ellipsis placeholder. */\nexport type PaginationItem = number | PaginationEllipsis\n\n/** Inputs for {@link paginationRange}. */\nexport interface PaginationRangeOptions {\n /** Total number of pages. */\n count: number\n /** Current page (1-based). */\n page: number\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n}\n\n/** Inclusive integer range `[start, end]` (empty when `end < start`). */\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i)\n\n/**\n * Build the page-item sequence for a pager — the boundary pages, the current page with its siblings,\n * and `start`/`end` ellipses where pages are skipped (the classic `1 … 4 5 6 … 10`). Pure and\n * framework-free so it can be unit-tested in isolation and reused. Assumes `1 <= page <= count`.\n */\nexport function paginationRange({\n count,\n page,\n siblingCount = 1,\n boundaryCount = 1,\n}: PaginationRangeOptions): PaginationItem[] {\n if (count <= 0) return []\n\n // Pages pinned at each edge.\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n // The window of pages around the current one, clamped so it never overlaps the boundaries.\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n // A start ellipsis, OR the single page that sits between the start boundary and the siblings.\n ...(siblingsStart > boundaryCount + 2\n ? (['start-ellipsis'] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n // An end ellipsis, OR the single page between the siblings and the end boundary.\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['end-ellipsis'] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n}\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon, type IconName } from '../Icon'\nimport { useT, type ThemeColor } from '../../theme'\nimport { paginationRange } from './paginationRange'\nimport styles from './Pagination.module.css'\n\nexport type PaginationVariant = 'outlined' | 'text'\nexport type PaginationSize = 'sm' | 'md' | 'lg'\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'color' | 'onChange'> {\n /** Total number of pages (required). From a row count, pass `Math.ceil(total / pageSize)`. */\n count: number\n /** Controlled current page (1-based). */\n page?: number\n /** Initial page for uncontrolled use (1-based). Defaults to `1`. */\n defaultPage?: number\n /** Fires with the next page (1-based) when a page or arrow is activated. */\n onChange?: (page: number) => void\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n /** Show a jump-to-first-page button before the previous arrow. Defaults to `false`. */\n showFirstButton?: boolean\n /** Show a jump-to-last-page button after the next arrow. Defaults to `false`. */\n showLastButton?: boolean\n /** Hide the previous-page arrow. Defaults to `false`. */\n hidePrevButton?: boolean\n /** Hide the next-page arrow. Defaults to `false`. */\n hideNextButton?: boolean\n /** Item style: `outlined` (bordered boxes, default) or `text` (borderless). */\n variant?: PaginationVariant\n /** Control size — sets the box, font, and icon sizes. Defaults to `md`. */\n size?: PaginationSize\n /** Theme palette token that tints the selected page. Defaults to `accent`. */\n color?: ThemeColor\n /** Render circular page buttons instead of rounded rectangles. Defaults to `false`. */\n rounded?: boolean\n /** Disable the whole control. Defaults to `false`. */\n disabled?: boolean\n}\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(Math.max(n, lo), hi)\n\n/**\n * A page navigator — previous/next arrows around a numbered range with `…` gaps (`1 … 4 5 6 … 10`),\n * the classic pager. Reusable across tables, lists, and galleries: drive it with `count` (total\n * pages) + `page`/`onChange`, computing `count` as `Math.ceil(total / pageSize)`. The selected page\n * is tinted via the shared `--tz-btn-rgb` pattern; unselected items are bordered (`outlined`) or\n * borderless (`text`). Controlled (`page` + `onChange`) or uncontrolled (`defaultPage`).\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstButton = false,\n showLastButton = false,\n hidePrevButton = false,\n hideNextButton = false,\n variant = 'outlined',\n size = 'md',\n color = 'accent',\n rounded = false,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel = 'Pagination',\n ...props\n },\n ref,\n) {\n const isControlled = page !== undefined\n const [internal, setInternal] = useState(defaultPage)\n const lastPage = Math.max(count, 1)\n const current = clamp(isControlled ? page! : internal, 1, lastPage)\n\n const go = (next: number) => {\n const target = clamp(next, 1, lastPage)\n if (target === current) return\n if (!isControlled) setInternal(target)\n onChange?.(target)\n }\n\n const t = useT()\n const items = paginationRange({ count, page: current, siblingCount, boundaryCount })\n\n // The selected fill + its readable text color, derived once via the shared button-tint vars.\n const rootStyle = {\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 // An arrow / jump control. `flip` mirrors the (left-pointing) icon to face right — the icon set has\n // no matching plain right arrow, so the next/last glyphs are the left ones flipped for symmetry.\n const control = (\n key: string,\n icon: IconName,\n label: string,\n target: number,\n hidden: boolean,\n atBound: boolean,\n flip = false,\n ): ReactNode =>\n hidden ? null : (\n <li key={key} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, styles.arrow)}\n aria-label={label}\n disabled={disabled || atBound}\n onClick={() => go(target)}\n >\n <Icon name={icon} size={size} className={flip ? styles.flip : undefined} />\n </button>\n </li>\n )\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={clsx(\n styles.pagination,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n className,\n )}\n style={rootStyle}\n {...props}\n >\n <ul className={styles.list}>\n {showFirstButton &&\n control('first', 'Previous', t('pagination.first'), 1, false, current <= 1)}\n {control(\n 'prev',\n 'ArrowLeft',\n t('pagination.previous'),\n current - 1,\n hidePrevButton,\n current <= 1,\n )}\n {items.map((item, i) =>\n typeof item === 'number' ? (\n <li key={item} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, item === current && styles.selected)}\n aria-label={t('pagination.page', { page: item })}\n aria-current={item === current ? 'page' : undefined}\n disabled={disabled}\n onClick={() => go(item)}\n >\n {item}\n </button>\n </li>\n ) : (\n <li key={`${item}-${i}`} className={styles.item} aria-hidden>\n <span className={styles.ellipsis}>…</span>\n </li>\n ),\n )}\n {control(\n 'next',\n 'ArrowLeft',\n t('pagination.next'),\n current + 1,\n hideNextButton,\n current >= count,\n true,\n )}\n {showLastButton &&\n control('last', 'Next', t('pagination.last'), count, false, current >= count)}\n </ul>\n </nav>\n )\n})\n"],"names":["range","start","end","_","i","paginationRange","count","page","siblingCount","boundaryCount","startPages","endPages","siblingsStart","siblingsEnd","clamp","n","lo","hi","Pagination","forwardRef","defaultPage","onChange","showFirstButton","showLastButton","hidePrevButton","hideNextButton","variant","size","color","rounded","disabled","className","style","ariaLabel","props","ref","isControlled","internal","setInternal","useState","lastPage","current","go","next","target","t","useT","items","rootStyle","control","key","icon","label","hidden","atBound","flip","jsx","styles","clsx","Icon","jsxs","item"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),P=require("react"),d=require("clsx"),Q=require("./Icon-BVULqOJD.cjs"),U=require("./ConfigProvider-BicoaBLj.cjs"),v=(e,a)=>Array.from({length:Math.max(a-e+1,0)},(l,s)=>e+s);function V({count:e,page:a,siblingCount:l=1,boundaryCount:s=1}){if(e<=0)return[];const o=v(1,Math.min(s,e)),g=v(Math.max(e-s+1,s+1),e),p=Math.max(Math.min(a-l,e-s-l*2-1),s+2),m=Math.min(Math.max(a+l,s+l*2+2),g.length>0?g[0]-2:e-1);return[...o,...p>s+2?["start-ellipsis"]:s+1<e-s?[s+1]:[],...v(p,m),...m<e-s-1?["end-ellipsis"]:e-s>s?[e-s]:[],...g]}const W="_pagination_5gbvi_3",X="_list_5gbvi_8",Y="_item_5gbvi_18",Z="_sm_5gbvi_28",u="_md_5gbvi_33",y="_lg_5gbvi_38",C="_page_5gbvi_45",ss="_selected_5gbvi_64",es="_outlined_5gbvi_80",is="_rounded_5gbvi_96",as="_arrow_5gbvi_26",ts="_flip_5gbvi_107",ls="_ellipsis_5gbvi_112",i={pagination:W,list:X,item:Y,sm:Z,md:u,lg:y,page:C,selected:ss,outlined:es,rounded:is,arrow:as,flip:ts,ellipsis:ls},w=(e,a,l)=>Math.min(Math.max(e,a),l),ns=P.forwardRef(function({count:a,page:l,defaultPage:s=1,onChange:o,siblingCount:g=1,boundaryCount:p=1,showFirstButton:m=!1,showLastButton:q=!1,hidePrevButton:$=!1,hideNextButton:z=!1,variant:A="outlined",size:x="md",color:h="accent",rounded:I=!1,disabled:b=!1,className:R,style:S,"aria-label":k="Pagination",...L},E){const j=l!==void 0,[T,B]=P.useState(s),M=Math.max(a,1),n=w(j?l:T,1,M),N=t=>{const c=w(t,1,M);c!==n&&(j||B(c),o==null||o(c))},_=U.useT(),D=V({count:a,page:n,siblingCount:g,boundaryCount:p}),F={"--tz-btn-rgb":`var(--tz-color-${h}-rgb)`,"--tz-btn-on":`var(--tz-color-${h}-contrast, #fff)`,...S},f=(t,c,G,H,J,K,O=!1)=>J?null:r.jsx("li",{className:i.item,children:r.jsx("button",{type:"button",className:d.clsx(i.page,i.arrow),"aria-label":G,disabled:b||K,onClick:()=>N(H),children:r.jsx(Q.Icon,{name:c,size:x,className:O?i.flip:void 0})})},t);return r.jsx("nav",{ref:E,"aria-label":k,className:d.clsx(i.pagination,i[A],i[x],I&&i.rounded,R),style:F,...L,children:r.jsxs("ul",{className:i.list,children:[m&&f("first","Previous",_("pagination.first"),1,!1,n<=1),f("prev","ArrowLeft",_("pagination.previous"),n-1,$,n<=1),D.map((t,c)=>typeof t=="number"?r.jsx("li",{className:i.item,children:r.jsx("button",{type:"button",className:d.clsx(i.page,t===n&&i.selected),"aria-label":_("pagination.page",{page:t}),"aria-current":t===n?"page":void 0,disabled:b,onClick:()=>N(t),children:t})},t):r.jsx("li",{className:i.item,"aria-hidden":!0,children:r.jsx("span",{className:i.ellipsis,children:"…"})},`${t}-${c}`)),f("next","ArrowLeft",_("pagination.next"),n+1,z,n>=a,!0),q&&f("last","Next",_("pagination.last"),a,!1,n>=a)]})})});exports.Pagination=ns;
|
|
2
|
+
//# sourceMappingURL=Pagination-M7njqOUt.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination-BdVebW2L.cjs","sources":["../src/components/Pagination/paginationRange.ts","../src/components/Pagination/Pagination.tsx"],"sourcesContent":["/** A gap placeholder rendered as `…` — at the start (`1 … 4`) or end (`6 … 10`) of the range. */\nexport type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis'\n\n/** One item in a pagination range: a 1-based page number, or an ellipsis placeholder. */\nexport type PaginationItem = number | PaginationEllipsis\n\n/** Inputs for {@link paginationRange}. */\nexport interface PaginationRangeOptions {\n /** Total number of pages. */\n count: number\n /** Current page (1-based). */\n page: number\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n}\n\n/** Inclusive integer range `[start, end]` (empty when `end < start`). */\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i)\n\n/**\n * Build the page-item sequence for a pager — the boundary pages, the current page with its siblings,\n * and `start`/`end` ellipses where pages are skipped (the classic `1 … 4 5 6 … 10`). Pure and\n * framework-free so it can be unit-tested in isolation and reused. Assumes `1 <= page <= count`.\n */\nexport function paginationRange({\n count,\n page,\n siblingCount = 1,\n boundaryCount = 1,\n}: PaginationRangeOptions): PaginationItem[] {\n if (count <= 0) return []\n\n // Pages pinned at each edge.\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n // The window of pages around the current one, clamped so it never overlaps the boundaries.\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n // A start ellipsis, OR the single page that sits between the start boundary and the siblings.\n ...(siblingsStart > boundaryCount + 2\n ? (['start-ellipsis'] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n // An end ellipsis, OR the single page between the siblings and the end boundary.\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['end-ellipsis'] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n}\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon, type IconName } from '../Icon'\nimport { useT, type ThemeColor } from '../../theme'\nimport { paginationRange } from './paginationRange'\nimport styles from './Pagination.module.css'\n\nexport type PaginationVariant = 'outlined' | 'text'\nexport type PaginationSize = 'sm' | 'md' | 'lg'\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'color' | 'onChange'> {\n /** Total number of pages (required). From a row count, pass `Math.ceil(total / pageSize)`. */\n count: number\n /** Controlled current page (1-based). */\n page?: number\n /** Initial page for uncontrolled use (1-based). Defaults to `1`. */\n defaultPage?: number\n /** Fires with the next page (1-based) when a page or arrow is activated. */\n onChange?: (page: number) => void\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n /** Show a jump-to-first-page button before the previous arrow. Defaults to `false`. */\n showFirstButton?: boolean\n /** Show a jump-to-last-page button after the next arrow. Defaults to `false`. */\n showLastButton?: boolean\n /** Hide the previous-page arrow. Defaults to `false`. */\n hidePrevButton?: boolean\n /** Hide the next-page arrow. Defaults to `false`. */\n hideNextButton?: boolean\n /** Item style: `outlined` (bordered boxes, default) or `text` (borderless). */\n variant?: PaginationVariant\n /** Control size — sets the box, font, and icon sizes. Defaults to `md`. */\n size?: PaginationSize\n /** Theme palette token that tints the selected page. Defaults to `accent`. */\n color?: ThemeColor\n /** Render circular page buttons instead of rounded rectangles. Defaults to `false`. */\n rounded?: boolean\n /** Disable the whole control. Defaults to `false`. */\n disabled?: boolean\n}\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(Math.max(n, lo), hi)\n\n/**\n * A page navigator — previous/next arrows around a numbered range with `…` gaps (`1 … 4 5 6 … 10`),\n * the classic pager. Reusable across tables, lists, and galleries: drive it with `count` (total\n * pages) + `page`/`onChange`, computing `count` as `Math.ceil(total / pageSize)`. The selected page\n * is tinted via the shared `--tz-btn-rgb` pattern; unselected items are bordered (`outlined`) or\n * borderless (`text`). Controlled (`page` + `onChange`) or uncontrolled (`defaultPage`).\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstButton = false,\n showLastButton = false,\n hidePrevButton = false,\n hideNextButton = false,\n variant = 'outlined',\n size = 'md',\n color = 'accent',\n rounded = false,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel = 'Pagination',\n ...props\n },\n ref,\n) {\n const isControlled = page !== undefined\n const [internal, setInternal] = useState(defaultPage)\n const lastPage = Math.max(count, 1)\n const current = clamp(isControlled ? page! : internal, 1, lastPage)\n\n const go = (next: number) => {\n const target = clamp(next, 1, lastPage)\n if (target === current) return\n if (!isControlled) setInternal(target)\n onChange?.(target)\n }\n\n const t = useT()\n const items = paginationRange({ count, page: current, siblingCount, boundaryCount })\n\n // The selected fill + its readable text color, derived once via the shared button-tint vars.\n const rootStyle = {\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 // An arrow / jump control. `flip` mirrors the (left-pointing) icon to face right — the icon set has\n // no matching plain right arrow, so the next/last glyphs are the left ones flipped for symmetry.\n const control = (\n key: string,\n icon: IconName,\n label: string,\n target: number,\n hidden: boolean,\n atBound: boolean,\n flip = false,\n ): ReactNode =>\n hidden ? null : (\n <li key={key} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, styles.arrow)}\n aria-label={label}\n disabled={disabled || atBound}\n onClick={() => go(target)}\n >\n <Icon name={icon} size={size} className={flip ? styles.flip : undefined} />\n </button>\n </li>\n )\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={clsx(\n styles.pagination,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n className,\n )}\n style={rootStyle}\n {...props}\n >\n <ul className={styles.list}>\n {showFirstButton &&\n control('first', 'Previous', t('pagination.first'), 1, false, current <= 1)}\n {control(\n 'prev',\n 'ArrowLeft',\n t('pagination.previous'),\n current - 1,\n hidePrevButton,\n current <= 1,\n )}\n {items.map((item, i) =>\n typeof item === 'number' ? (\n <li key={item} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, item === current && styles.selected)}\n aria-label={t('pagination.page', { page: item })}\n aria-current={item === current ? 'page' : undefined}\n disabled={disabled}\n onClick={() => go(item)}\n >\n {item}\n </button>\n </li>\n ) : (\n <li key={`${item}-${i}`} className={styles.item} aria-hidden>\n <span className={styles.ellipsis}>…</span>\n </li>\n ),\n )}\n {control(\n 'next',\n 'ArrowLeft',\n t('pagination.next'),\n current + 1,\n hideNextButton,\n current >= count,\n true,\n )}\n {showLastButton &&\n control('last', 'Next', t('pagination.last'), count, false, current >= count)}\n </ul>\n </nav>\n )\n})\n"],"names":["range","start","end","_","i","paginationRange","count","page","siblingCount","boundaryCount","startPages","endPages","siblingsStart","siblingsEnd","clamp","n","lo","hi","Pagination","forwardRef","defaultPage","onChange","showFirstButton","showLastButton","hidePrevButton","hideNextButton","variant","size","color","rounded","disabled","className","style","ariaLabel","props","ref","isControlled","internal","setInternal","useState","lastPage","current","go","next","target","t","useT","items","rootStyle","control","key","icon","label","hidden","atBound","flip","jsx","styles","clsx","Icon","jsxs","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination-M7njqOUt.cjs","sources":["../src/components/Pagination/paginationRange.ts","../src/components/Pagination/Pagination.tsx"],"sourcesContent":["/** A gap placeholder rendered as `…` — at the start (`1 … 4`) or end (`6 … 10`) of the range. */\nexport type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis'\n\n/** One item in a pagination range: a 1-based page number, or an ellipsis placeholder. */\nexport type PaginationItem = number | PaginationEllipsis\n\n/** Inputs for {@link paginationRange}. */\nexport interface PaginationRangeOptions {\n /** Total number of pages. */\n count: number\n /** Current page (1-based). */\n page: number\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n}\n\n/** Inclusive integer range `[start, end]` (empty when `end < start`). */\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i)\n\n/**\n * Build the page-item sequence for a pager — the boundary pages, the current page with its siblings,\n * and `start`/`end` ellipses where pages are skipped (the classic `1 … 4 5 6 … 10`). Pure and\n * framework-free so it can be unit-tested in isolation and reused. Assumes `1 <= page <= count`.\n */\nexport function paginationRange({\n count,\n page,\n siblingCount = 1,\n boundaryCount = 1,\n}: PaginationRangeOptions): PaginationItem[] {\n if (count <= 0) return []\n\n // Pages pinned at each edge.\n const startPages = range(1, Math.min(boundaryCount, count))\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count)\n\n // The window of pages around the current one, clamped so it never overlaps the boundaries.\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n )\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : count - 1,\n )\n\n return [\n ...startPages,\n // A start ellipsis, OR the single page that sits between the start boundary and the siblings.\n ...(siblingsStart > boundaryCount + 2\n ? (['start-ellipsis'] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n // An end ellipsis, OR the single page between the siblings and the end boundary.\n ...(siblingsEnd < count - boundaryCount - 1\n ? (['end-ellipsis'] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ]\n}\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { Icon, type IconName } from '../Icon'\nimport { useT, type ThemeColor } from '../../theme'\nimport { paginationRange } from './paginationRange'\nimport styles from './Pagination.module.css'\n\nexport type PaginationVariant = 'outlined' | 'text'\nexport type PaginationSize = 'sm' | 'md' | 'lg'\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'color' | 'onChange'> {\n /** Total number of pages (required). From a row count, pass `Math.ceil(total / pageSize)`. */\n count: number\n /** Controlled current page (1-based). */\n page?: number\n /** Initial page for uncontrolled use (1-based). Defaults to `1`. */\n defaultPage?: number\n /** Fires with the next page (1-based) when a page or arrow is activated. */\n onChange?: (page: number) => void\n /** Pages shown on each side of the current page. Defaults to `1`. */\n siblingCount?: number\n /** Pages always shown at the start and end. Defaults to `1`. */\n boundaryCount?: number\n /** Show a jump-to-first-page button before the previous arrow. Defaults to `false`. */\n showFirstButton?: boolean\n /** Show a jump-to-last-page button after the next arrow. Defaults to `false`. */\n showLastButton?: boolean\n /** Hide the previous-page arrow. Defaults to `false`. */\n hidePrevButton?: boolean\n /** Hide the next-page arrow. Defaults to `false`. */\n hideNextButton?: boolean\n /** Item style: `outlined` (bordered boxes, default) or `text` (borderless). */\n variant?: PaginationVariant\n /** Control size — sets the box, font, and icon sizes. Defaults to `md`. */\n size?: PaginationSize\n /** Theme palette token that tints the selected page. Defaults to `accent`. */\n color?: ThemeColor\n /** Render circular page buttons instead of rounded rectangles. Defaults to `false`. */\n rounded?: boolean\n /** Disable the whole control. Defaults to `false`. */\n disabled?: boolean\n}\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(Math.max(n, lo), hi)\n\n/**\n * A page navigator — previous/next arrows around a numbered range with `…` gaps (`1 … 4 5 6 … 10`),\n * the classic pager. Reusable across tables, lists, and galleries: drive it with `count` (total\n * pages) + `page`/`onChange`, computing `count` as `Math.ceil(total / pageSize)`. The selected page\n * is tinted via the shared `--tz-btn-rgb` pattern; unselected items are bordered (`outlined`) or\n * borderless (`text`). Controlled (`page` + `onChange`) or uncontrolled (`defaultPage`).\n */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n {\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstButton = false,\n showLastButton = false,\n hidePrevButton = false,\n hideNextButton = false,\n variant = 'outlined',\n size = 'md',\n color = 'accent',\n rounded = false,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel = 'Pagination',\n ...props\n },\n ref,\n) {\n const isControlled = page !== undefined\n const [internal, setInternal] = useState(defaultPage)\n const lastPage = Math.max(count, 1)\n const current = clamp(isControlled ? page! : internal, 1, lastPage)\n\n const go = (next: number) => {\n const target = clamp(next, 1, lastPage)\n if (target === current) return\n if (!isControlled) setInternal(target)\n onChange?.(target)\n }\n\n const t = useT()\n const items = paginationRange({ count, page: current, siblingCount, boundaryCount })\n\n // The selected fill + its readable text color, derived once via the shared button-tint vars.\n const rootStyle = {\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 // An arrow / jump control. `flip` mirrors the (left-pointing) icon to face right — the icon set has\n // no matching plain right arrow, so the next/last glyphs are the left ones flipped for symmetry.\n const control = (\n key: string,\n icon: IconName,\n label: string,\n target: number,\n hidden: boolean,\n atBound: boolean,\n flip = false,\n ): ReactNode =>\n hidden ? null : (\n <li key={key} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, styles.arrow)}\n aria-label={label}\n disabled={disabled || atBound}\n onClick={() => go(target)}\n >\n <Icon name={icon} size={size} className={flip ? styles.flip : undefined} />\n </button>\n </li>\n )\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={clsx(\n styles.pagination,\n styles[variant],\n styles[size],\n rounded && styles.rounded,\n className,\n )}\n style={rootStyle}\n {...props}\n >\n <ul className={styles.list}>\n {showFirstButton &&\n control('first', 'Previous', t('pagination.first'), 1, false, current <= 1)}\n {control(\n 'prev',\n 'ArrowLeft',\n t('pagination.previous'),\n current - 1,\n hidePrevButton,\n current <= 1,\n )}\n {items.map((item, i) =>\n typeof item === 'number' ? (\n <li key={item} className={styles.item}>\n <button\n type=\"button\"\n className={clsx(styles.page, item === current && styles.selected)}\n aria-label={t('pagination.page', { page: item })}\n aria-current={item === current ? 'page' : undefined}\n disabled={disabled}\n onClick={() => go(item)}\n >\n {item}\n </button>\n </li>\n ) : (\n <li key={`${item}-${i}`} className={styles.item} aria-hidden>\n <span className={styles.ellipsis}>…</span>\n </li>\n ),\n )}\n {control(\n 'next',\n 'ArrowLeft',\n t('pagination.next'),\n current + 1,\n hideNextButton,\n current >= count,\n true,\n )}\n {showLastButton &&\n control('last', 'Next', t('pagination.last'), count, false, current >= count)}\n </ul>\n </nav>\n )\n})\n"],"names":["range","start","end","_","i","paginationRange","count","page","siblingCount","boundaryCount","startPages","endPages","siblingsStart","siblingsEnd","clamp","n","lo","hi","Pagination","forwardRef","defaultPage","onChange","showFirstButton","showLastButton","hidePrevButton","hideNextButton","variant","size","color","rounded","disabled","className","style","ariaLabel","props","ref","isControlled","internal","setInternal","useState","lastPage","current","go","next","target","t","useT","items","rootStyle","control","key","icon","label","hidden","atBound","flip","jsx","styles","clsx","Icon","jsxs","item"],"mappings":"mKAmBMA,EAAQ,CAACC,EAAeC,IAC5B,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAIA,EAAMD,EAAQ,EAAG,CAAC,CAAA,EAAK,CAACE,EAAGC,IAAMH,EAAQG,CAAC,EAOnE,SAASC,EAAgB,CAC9B,MAAAC,EACA,KAAAC,EACA,aAAAC,EAAe,EACf,cAAAC,EAAgB,CAClB,EAA6C,CAC3C,GAAIH,GAAS,EAAG,MAAO,CAAA,EAGvB,MAAMI,EAAaV,EAAM,EAAG,KAAK,IAAIS,EAAeH,CAAK,CAAC,EACpDK,EAAWX,EAAM,KAAK,IAAIM,EAAQG,EAAgB,EAAGA,EAAgB,CAAC,EAAGH,CAAK,EAG9EM,EAAgB,KAAK,IACzB,KAAK,IAAIL,EAAOC,EAAcF,EAAQG,EAAgBD,EAAe,EAAI,CAAC,EAC1EC,EAAgB,CAAA,EAEZI,EAAc,KAAK,IACvB,KAAK,IAAIN,EAAOC,EAAcC,EAAgBD,EAAe,EAAI,CAAC,EAClEG,EAAS,OAAS,EAAIA,EAAS,CAAC,EAAI,EAAIL,EAAQ,CAAA,EAGlD,MAAO,CACL,GAAGI,EAEH,GAAIE,EAAgBH,EAAgB,EAC/B,CAAC,gBAAgB,EAClBA,EAAgB,EAAIH,EAAQG,EAC1B,CAACA,EAAgB,CAAC,EAClB,CAAA,EACN,GAAGT,EAAMY,EAAeC,CAAW,EAEnC,GAAIA,EAAcP,EAAQG,EAAgB,EACrC,CAAC,cAAc,EAChBH,EAAQG,EAAgBA,EACtB,CAACH,EAAQG,CAAa,EACtB,CAAA,EACN,GAAGE,CAAA,CAEP,yYCjBMG,EAAQ,CAACC,EAAWC,EAAYC,IAAe,KAAK,IAAI,KAAK,IAAIF,EAAGC,CAAE,EAAGC,CAAE,EASpEC,GAAaC,EAAAA,WAAyC,SACjE,CACE,MAAAb,EACA,KAAAC,EACA,YAAAa,EAAc,EACd,SAAAC,EACA,aAAAb,EAAe,EACf,cAAAC,EAAgB,EAChB,gBAAAa,EAAkB,GAClB,eAAAC,EAAiB,GACjB,eAAAC,EAAiB,GACjB,eAAAC,EAAiB,GACjB,QAAAC,EAAU,WACV,KAAAC,EAAO,KACP,MAAAC,EAAQ,SACR,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,UAAAC,EACA,MAAAC,EACA,aAAcC,EAAY,aAC1B,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAe7B,IAAS,OACxB,CAAC8B,EAAUC,CAAW,EAAIC,EAAAA,SAASnB,CAAW,EAC9CoB,EAAW,KAAK,IAAIlC,EAAO,CAAC,EAC5BmC,EAAU3B,EAAMsB,EAAe7B,EAAQ8B,EAAU,EAAGG,CAAQ,EAE5DE,EAAMC,GAAiB,CAC3B,MAAMC,EAAS9B,EAAM6B,EAAM,EAAGH,CAAQ,EAClCI,IAAWH,IACVL,GAAcE,EAAYM,CAAM,EACrCvB,GAAA,MAAAA,EAAWuB,GACb,EAEMC,EAAIC,EAAAA,KAAA,EACJC,EAAQ1C,EAAgB,CAAE,MAAAC,EAAO,KAAMmC,EAAS,aAAAjC,EAAc,cAAAC,EAAe,EAG7EuC,EAAY,CAChB,eAAgB,kBAAkBpB,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGI,CAAA,EAKCiB,EAAU,CACdC,EACAC,EACAC,EACAR,EACAS,EACAC,EACAC,EAAO,KAEPF,EAAS,KACPG,EAAAA,IAAC,KAAA,CAAa,UAAWC,EAAO,KAC9B,SAAAD,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWE,EAAAA,KAAKD,EAAO,KAAMA,EAAO,KAAK,EACzC,aAAYL,EACZ,SAAUtB,GAAYwB,EACtB,QAAS,IAAMZ,EAAGE,CAAM,EAExB,SAAAY,EAAAA,IAACG,QAAK,KAAMR,EAAM,KAAAxB,EAAY,UAAW4B,EAAOE,EAAO,KAAO,MAAA,CAAW,CAAA,CAAA,GARpEP,CAUT,EAGJ,OACEM,EAAAA,IAAC,MAAA,CACC,IAAArB,EACA,aAAYF,EACZ,UAAWyB,EAAAA,KACTD,EAAO,WACPA,EAAO/B,CAAO,EACd+B,EAAO9B,CAAI,EACXE,GAAW4B,EAAO,QAClB1B,CAAA,EAEF,MAAOiB,EACN,GAAGd,EAEJ,SAAA0B,EAAAA,KAAC,KAAA,CAAG,UAAWH,EAAO,KACnB,SAAA,CAAAnC,GACC2B,EAAQ,QAAS,WAAYJ,EAAE,kBAAkB,EAAG,EAAG,GAAOJ,GAAW,CAAC,EAC3EQ,EACC,OACA,YACAJ,EAAE,qBAAqB,EACvBJ,EAAU,EACVjB,EACAiB,GAAW,CAAA,EAEZM,EAAM,IAAI,CAACc,EAAMzD,IAChB,OAAOyD,GAAS,SACdL,EAAAA,IAAC,KAAA,CAAc,UAAWC,EAAO,KAC/B,SAAAD,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWE,EAAAA,KAAKD,EAAO,KAAMI,IAASpB,GAAWgB,EAAO,QAAQ,EAChE,aAAYZ,EAAE,kBAAmB,CAAE,KAAMgB,EAAM,EAC/C,eAAcA,IAASpB,EAAU,OAAS,OAC1C,SAAAX,EACA,QAAS,IAAMY,EAAGmB,CAAI,EAErB,SAAAA,CAAA,CAAA,CACH,EAVOA,CAWT,EAEAL,EAAAA,IAAC,MAAwB,UAAWC,EAAO,KAAM,cAAW,GAC1D,eAAC,OAAA,CAAK,UAAWA,EAAO,SAAU,SAAA,GAAA,CAAC,GAD5B,GAAGI,CAAI,IAAIzD,CAAC,EAErB,CAAA,EAGH6C,EACC,OACA,YACAJ,EAAE,iBAAiB,EACnBJ,EAAU,EACVhB,EACAgB,GAAWnC,EACX,EAAA,EAEDiB,GACC0B,EAAQ,OAAQ,OAAQJ,EAAE,iBAAiB,EAAGvC,EAAO,GAAOmC,GAAWnC,CAAK,CAAA,CAAA,CAChF,CAAA,CAAA,CAGN,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsxs as j, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as k, useState as z } from "react";
|
|
3
|
+
import { clsx as B } from "clsx";
|
|
4
|
+
import { u as R } from "./formContext-B7ln1Miy.js";
|
|
5
|
+
import { C as h } from "./ColorPicker-Cw-2X6u9.js";
|
|
6
|
+
import { C as v } from "./ColorRamp-DnlJNKfy.js";
|
|
7
|
+
const w = "_root_bbykz_3", I = {
|
|
8
|
+
root: w
|
|
9
|
+
}, H = k(function({
|
|
10
|
+
rampName: c,
|
|
11
|
+
paletteOptions: l,
|
|
12
|
+
rampSize: a = "md",
|
|
13
|
+
hideRamp: f = !1,
|
|
14
|
+
opaque: p = !0,
|
|
15
|
+
onCopyStep: d,
|
|
16
|
+
value: o,
|
|
17
|
+
defaultValue: s,
|
|
18
|
+
onChange: r,
|
|
19
|
+
name: t,
|
|
20
|
+
className: x,
|
|
21
|
+
style: C,
|
|
22
|
+
...u
|
|
23
|
+
}, F) {
|
|
24
|
+
const e = R(), i = !!(e && t), [P, b] = z(s ?? ""), y = o !== void 0 ? o : i ? e.values[t] ?? "" : P, _ = (m) => {
|
|
25
|
+
o === void 0 && !i && b(m), r == null || r(m);
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ j("div", { ref: F, className: B(I.root, x), style: C, children: [
|
|
28
|
+
/* @__PURE__ */ n(
|
|
29
|
+
h,
|
|
30
|
+
{
|
|
31
|
+
...u,
|
|
32
|
+
name: t,
|
|
33
|
+
value: o,
|
|
34
|
+
defaultValue: s,
|
|
35
|
+
onChange: _,
|
|
36
|
+
alpha: !p
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
!f && /* @__PURE__ */ n(
|
|
40
|
+
v,
|
|
41
|
+
{
|
|
42
|
+
baseColor: y,
|
|
43
|
+
name: c ?? t ?? "color",
|
|
44
|
+
options: l,
|
|
45
|
+
size: a,
|
|
46
|
+
onCopy: d
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
] });
|
|
50
|
+
});
|
|
51
|
+
export {
|
|
52
|
+
H as P
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=PaletteField-CUyzLrny.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaletteField-CUyzLrny.js","sources":["../src/components/PaletteField/PaletteField.tsx"],"sourcesContent":["import { forwardRef, useState, type CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport type { GeneratePaletteOptions } from '../../helpers/palette'\nimport { ColorPicker, type ColorPickerProps } from '../ColorPicker'\nimport { ColorRamp, type ColorRampProps } from '../ColorRamp'\nimport styles from './PaletteField.module.css'\n\nexport interface PaletteFieldProps extends Omit<ColorPickerProps, 'swatches'> {\n /** Token prefix for the ramp (see `ColorRamp.name`). Defaults to `name`, then `'color'`. */\n rampName?: string\n /** `generatePalette` overrides, forwarded to the ramp. */\n paletteOptions?: GeneratePaletteOptions\n /** Ramp height (default `md`). */\n rampSize?: ColorRampProps['size']\n /** Hide the ramp (default `false`). */\n hideRamp?: boolean\n /** Brand colors are opaque: hide the alpha slider and emit `#rrggbb` only (default `true`). */\n opaque?: boolean\n /** Forwarded to the ramp's `onCopy`. */\n onCopyStep?: ColorRampProps['onCopy']\n className?: string\n style?: CSSProperties\n}\n\n/**\n * The composition every configurator page repeats: a **`ColorPicker`** with the **`ColorRamp`** of its\n * current value directly beneath, both bound to the same value. Works controlled (`value` +\n * `onChange`), uncontrolled (`defaultValue`), and inside `<Form>` by `name` — the ramp always reflects\n * the live field value (including `setValue` / `reset`), read through the same `useFormContext` binding\n * `ColorPicker` uses, so there is exactly one source of truth. `label` / `helperText` / `error` /\n * `required` go to the picker; the ramp shows no chrome of its own here (its bounds row stays).\n * `opaque` (default `true`) passes `alpha={false}` to the picker: no alpha slider, `#rrggbb` only.\n */\nexport const PaletteField = forwardRef<HTMLDivElement, PaletteFieldProps>(function PaletteField(\n {\n rampName,\n paletteOptions,\n rampSize = 'md',\n hideRamp = false,\n opaque = true,\n onCopyStep,\n value,\n defaultValue,\n onChange,\n name,\n className,\n style,\n ...picker\n },\n ref,\n) {\n // Mirror ColorPicker's own binding exactly: controlled prop → form value (by `name`) → internal state.\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const current =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : internal\n\n const handleChange = (color: string) => {\n // the picker already writes the form value when bound; we only track the uncontrolled case\n if (value === undefined && !isFormBound) setInternal(color)\n onChange?.(color)\n }\n\n return (\n <div ref={ref} className={clsx(styles.root, className)} style={style}>\n <ColorPicker\n {...picker}\n name={name}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n alpha={!opaque}\n />\n {!hideRamp && (\n <ColorRamp\n baseColor={current}\n name={rampName ?? name ?? 'color'}\n options={paletteOptions}\n size={rampSize}\n onCopy={onCopyStep}\n />\n )}\n </div>\n )\n})\n"],"names":["PaletteField","forwardRef","rampName","paletteOptions","rampSize","hideRamp","opaque","onCopyStep","value","defaultValue","onChange","name","className","style","picker","ref","form","useFormContext","isFormBound","internal","setInternal","useState","current","handleChange","color","jsxs","clsx","styles","jsx","ColorPicker","ColorRamp"],"mappings":";;;;;;;;GAkCaA,IAAeC,EAA8C,SACxE;AAAA,EACE,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,QAAAC,IAAS;AAAA,EACT,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AAEA,QAAMC,IAAOC,EAAA,GACPC,IAAc,GAAQF,KAAQL,IAC9B,CAACQ,GAAUC,CAAW,IAAIC,EAAiBZ,KAAgB,EAAE,GAC7Da,IACJd,MAAU,SACNA,IACAU,IACIF,EAAM,OAAOL,CAAK,KAA4B,KAChDQ,GAEFI,IAAe,CAACC,MAAkB;AAEtC,IAAIhB,MAAU,UAAa,CAACU,OAAyBM,CAAK,GAC1Dd,KAAA,QAAAA,EAAWc;AAAA,EACb;AAEA,SACE,gBAAAC,EAAC,SAAI,KAAAV,GAAU,WAAWW,EAAKC,EAAO,MAAMf,CAAS,GAAG,OAAAC,GACtD,UAAA;AAAA,IAAA,gBAAAe;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGf;AAAA,QACJ,MAAAH;AAAA,QACA,OAAAH;AAAA,QACA,cAAAC;AAAA,QACA,UAAUc;AAAA,QACV,OAAO,CAACjB;AAAA,MAAA;AAAA,IAAA;AAAA,IAET,CAACD,KACA,gBAAAuB;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,WAAWR;AAAA,QACX,MAAMpB,KAAYS,KAAQ;AAAA,QAC1B,SAASR;AAAA,QACT,MAAMC;AAAA,QACN,QAAQG;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,GAEJ;AAEJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),l=require("react"),k=require("clsx"),y=require("./formContext-bTWrqdEV.cjs"),_=require("./ColorPicker-CKc8k-Dp.cjs"),z=require("./ColorRamp-AkY9gq6Y.cjs"),B="_root_bbykz_3",h={root:B},v=l.forwardRef(function({rampName:u,paletteOptions:a,rampSize:d="md",hideRamp:x=!1,opaque:m=!0,onCopyStep:f,value:o,defaultValue:s,onChange:r,name:t,className:q,style:C,...p},F){const c=y.useFormContext(),n=!!(c&&t),[P,j]=l.useState(s??""),R=o!==void 0?o:n?c.values[t]??"":P,b=i=>{o===void 0&&!n&&j(i),r==null||r(i)};return e.jsxs("div",{ref:F,className:k.clsx(h.root,q),style:C,children:[e.jsx(_.ColorPicker,{...p,name:t,value:o,defaultValue:s,onChange:b,alpha:!m}),!x&&e.jsx(z.ColorRamp,{baseColor:R,name:u??t??"color",options:a,size:d,onCopy:f})]})});exports.PaletteField=v;
|
|
2
|
+
//# sourceMappingURL=PaletteField-iBIvOvNi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaletteField-iBIvOvNi.cjs","sources":["../src/components/PaletteField/PaletteField.tsx"],"sourcesContent":["import { forwardRef, useState, type CSSProperties } from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport type { GeneratePaletteOptions } from '../../helpers/palette'\nimport { ColorPicker, type ColorPickerProps } from '../ColorPicker'\nimport { ColorRamp, type ColorRampProps } from '../ColorRamp'\nimport styles from './PaletteField.module.css'\n\nexport interface PaletteFieldProps extends Omit<ColorPickerProps, 'swatches'> {\n /** Token prefix for the ramp (see `ColorRamp.name`). Defaults to `name`, then `'color'`. */\n rampName?: string\n /** `generatePalette` overrides, forwarded to the ramp. */\n paletteOptions?: GeneratePaletteOptions\n /** Ramp height (default `md`). */\n rampSize?: ColorRampProps['size']\n /** Hide the ramp (default `false`). */\n hideRamp?: boolean\n /** Brand colors are opaque: hide the alpha slider and emit `#rrggbb` only (default `true`). */\n opaque?: boolean\n /** Forwarded to the ramp's `onCopy`. */\n onCopyStep?: ColorRampProps['onCopy']\n className?: string\n style?: CSSProperties\n}\n\n/**\n * The composition every configurator page repeats: a **`ColorPicker`** with the **`ColorRamp`** of its\n * current value directly beneath, both bound to the same value. Works controlled (`value` +\n * `onChange`), uncontrolled (`defaultValue`), and inside `<Form>` by `name` — the ramp always reflects\n * the live field value (including `setValue` / `reset`), read through the same `useFormContext` binding\n * `ColorPicker` uses, so there is exactly one source of truth. `label` / `helperText` / `error` /\n * `required` go to the picker; the ramp shows no chrome of its own here (its bounds row stays).\n * `opaque` (default `true`) passes `alpha={false}` to the picker: no alpha slider, `#rrggbb` only.\n */\nexport const PaletteField = forwardRef<HTMLDivElement, PaletteFieldProps>(function PaletteField(\n {\n rampName,\n paletteOptions,\n rampSize = 'md',\n hideRamp = false,\n opaque = true,\n onCopyStep,\n value,\n defaultValue,\n onChange,\n name,\n className,\n style,\n ...picker\n },\n ref,\n) {\n // Mirror ColorPicker's own binding exactly: controlled prop → form value (by `name`) → internal state.\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const [internal, setInternal] = useState<string>(defaultValue ?? '')\n const current =\n value !== undefined\n ? value\n : isFormBound\n ? ((form!.values[name!] as string | undefined) ?? '')\n : internal\n\n const handleChange = (color: string) => {\n // the picker already writes the form value when bound; we only track the uncontrolled case\n if (value === undefined && !isFormBound) setInternal(color)\n onChange?.(color)\n }\n\n return (\n <div ref={ref} className={clsx(styles.root, className)} style={style}>\n <ColorPicker\n {...picker}\n name={name}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n alpha={!opaque}\n />\n {!hideRamp && (\n <ColorRamp\n baseColor={current}\n name={rampName ?? name ?? 'color'}\n options={paletteOptions}\n size={rampSize}\n onCopy={onCopyStep}\n />\n )}\n </div>\n )\n})\n"],"names":["PaletteField","forwardRef","rampName","paletteOptions","rampSize","hideRamp","opaque","onCopyStep","value","defaultValue","onChange","name","className","style","picker","ref","form","useFormContext","isFormBound","internal","setInternal","useState","current","handleChange","color","jsxs","clsx","styles","jsx","ColorPicker","ColorRamp"],"mappings":"0OAkCaA,EAAeC,EAAAA,WAA8C,SACxE,CACE,SAAAC,EACA,eAAAC,EACA,SAAAC,EAAW,KACX,SAAAC,EAAW,GACX,OAAAC,EAAS,GACT,WAAAC,EACA,MAAAC,EACA,aAAAC,EACA,SAAAC,EACA,KAAAC,EACA,UAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAMC,EAAOC,EAAAA,eAAA,EACPC,EAAc,GAAQF,GAAQL,GAC9B,CAACQ,EAAUC,CAAW,EAAIC,EAAAA,SAAiBZ,GAAgB,EAAE,EAC7Da,EACJd,IAAU,OACNA,EACAU,EACIF,EAAM,OAAOL,CAAK,GAA4B,GAChDQ,EAEFI,EAAgBC,GAAkB,CAElChB,IAAU,QAAa,CAACU,KAAyBM,CAAK,EAC1Dd,GAAA,MAAAA,EAAWc,EACb,EAEA,OACEC,OAAC,OAAI,IAAAV,EAAU,UAAWW,EAAAA,KAAKC,EAAO,KAAMf,CAAS,EAAG,MAAAC,EACtD,SAAA,CAAAe,EAAAA,IAACC,EAAAA,YAAA,CACE,GAAGf,EACJ,KAAAH,EACA,MAAAH,EACA,aAAAC,EACA,SAAUc,EACV,MAAO,CAACjB,CAAA,CAAA,EAET,CAACD,GACAuB,EAAAA,IAACE,EAAAA,UAAA,CACC,UAAWR,EACX,KAAMpB,GAAYS,GAAQ,QAC1B,QAASR,EACT,KAAMC,EACN,OAAQG,CAAA,CAAA,CACV,EAEJ,CAEJ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("react/jsx-runtime"),c=require("react"),y=require("clsx"),E=require("./formContext-bTWrqdEV.cjs"),F=require("./Typography-BFatE1_A.cjs"),S=c.createContext(null);function T(){return c.useContext(S)}const D="_field_dlync_2",P="_row_dlync_9",$="_disabled_dlync_17",A="_input_dlync_23",H="_circle_dlync_37",J="_dot_dlync_59",K="_error_dlync_73",M="_label_dlync_77",O="_required_dlync_82",Q="_sm_dlync_88",U="_md_dlync_92",W="_lg_dlync_96",X="_group_dlync_112",Y="_groupLabel_dlync_119",Z="_options_dlync_124",ee="_horizontal_dlync_130",s={field:D,row:P,disabled:$,input:A,circle:H,dot:J,error:K,label:M,required:O,sm:Q,md:U,lg:W,group:X,groupLabel:Y,options:Z,horizontal:ee},V=c.forwardRef(function({value:t,label:i,color:h,size:u,error:l,checked:d,onChange:_,name:p,disabled:b,id:j,className:N,style:R,...q},z){const g=c.useId(),C=j??g,e=T(),n=h??(e==null?void 0:e.color)??"accent",x=u??(e==null?void 0:e.size)??"md",a=l??(e==null?void 0:e.error)??!1,v=b??(e==null?void 0:e.disabled)??!1,f=p??(e==null?void 0:e.name),[w,G]=c.useState(!1),I=e?e.value===t:d!==void 0?d:w,m=L=>{if(e){e.onChange(t);return}d===void 0&&G(L.target.checked),_==null||_(L.target.checked)};return r.jsx("div",{className:y.clsx(s.field,a&&s.error,v&&s.disabled,N),style:{"--tz-btn-rgb":`var(--tz-color-${n}-rgb)`,...R},children:r.jsxs("label",{className:y.clsx(s.row,s[x]),children:[r.jsx("input",{ref:z,id:C,name:f,type:"radio",className:s.input,value:t,checked:I,onChange:m,disabled:v,"aria-invalid":a||void 0,...q}),r.jsx("span",{className:s.circle,"aria-hidden":"true",children:r.jsx("span",{className:s.dot})}),i!=null&&r.jsx("span",{className:s.label,children:i})]})})}),se=c.forwardRef(function({label:t,value:i,defaultValue:h,onChange:u,name:l,options:d,orientation:_="vertical",size:p="md",color:b="accent",error:j,required:N=!1,disabled:R=!1,children:q,className:z,style:g,...C},e){const n=E.useFormContext(),x=!!(n&&l),a=n&&l?n.field(l):void 0,v=i!==void 0?i:x?n.values[l]:void 0,f=v!==void 0,[w,G]=c.useState(h),I=f?v:w,m=j??(a==null?void 0:a.error)??!1,B={name:l,value:I,onChange:o=>{f||G(o),x&&n.setValue(l,o),u==null||u(o)},size:p,color:b,disabled:R,error:m};return r.jsxs("div",{ref:e,role:"radiogroup","aria-invalid":m||void 0,className:y.clsx(s.group,z),style:g,...C,children:[t!=null&&r.jsxs("span",{className:s.groupLabel,children:[r.jsx(F.Typography,{as:"span",variant:"bodySmall",color:"muted",children:t}),N&&r.jsx("span",{className:s.required,"aria-hidden":"true",children:"*"})]}),r.jsx("div",{className:y.clsx(s.options,_==="horizontal"&&s.horizontal),children:r.jsx(S.Provider,{value:B,children:d?d.map(o=>r.jsx(V,{value:o.value,label:o.label,disabled:o.disabled},o.value)):q})})]})});exports.Radio=V;exports.RadioGroup=se;
|
|
2
|
+
//# sourceMappingURL=RadioGroup-Byy-eSY3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup-C8u7eNBS.cjs","sources":["../src/components/Radio/radioContext.ts","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ThemeColor } from '../../theme'\nimport type { RadioSize } from './Radio'\n\n/** Shared state a `<RadioGroup>` hands down to its `<Radio>` children via context. */\nexport interface RadioGroupContextValue {\n /** Shared input `name` (the radios in a group must share one). */\n name?: string\n /** The group's currently-selected value. */\n value?: string\n /** Select a value — called by a child `<Radio>` on change. */\n onChange: (value: string) => void\n size?: RadioSize\n color?: ThemeColor\n disabled?: boolean\n error?: boolean\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\n/** Read the surrounding `<RadioGroup>` so a `<Radio>` can wire itself in (or `null` when standalone). */\nexport function useRadioGroupContext(): RadioGroupContextValue | null {\n return useContext(RadioGroupContext)\n}\n","import {\n forwardRef,\n useId,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { useRadioGroupContext } from './radioContext'\nimport styles from './Radio.module.css'\n\nexport type RadioSize = 'sm' | 'md' | 'lg'\n\nexport interface RadioProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'color' | 'type' | 'onChange' | 'value'\n> {\n /** This option's value — selected when it matches the surrounding `RadioGroup`'s value. */\n value: string\n /** Text shown to the right of the control. */\n label?: ReactNode\n /** Theme palette token for the selected fill. Defaults to `accent` (inherits the group's `color`). */\n color?: ThemeColor\n /** Preset size — circle dimensions and label font. Inherits the group's `size` when omitted. */\n size?: RadioSize\n /** Marks the control invalid — reddens the ring. Inherits the group's `error`. */\n error?: boolean\n /** Controlled selected state for standalone use (inside a `RadioGroup` the group drives this). */\n checked?: boolean\n /** Fires with the next selected state (standalone use). */\n onChange?: (checked: boolean) => void\n}\n\n/**\n * A single radio button with a label. The native `<input type=\"radio\">` is visually hidden but fully\n * accessible; a styled circle shows the state, filling with `color` and an inner dot when selected.\n * Designed to live inside a `<RadioGroup>` (which supplies the shared `name`, selection and\n * `size`/`color`/`disabled`/`error` via context), but also works standalone (`checked` + `onChange`).\n * Styling uses `--tz-*` tokens only.\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n value,\n label,\n color,\n size,\n error,\n checked,\n onChange,\n name,\n disabled,\n id: idProp,\n className,\n style,\n ...props\n },\n ref,\n) {\n const reactId = useId()\n const id = idProp ?? reactId\n const group = useRadioGroupContext()\n\n const resolvedColor = color ?? group?.color ?? 'accent'\n const resolvedSize = size ?? group?.size ?? 'md'\n const resolvedError = error ?? group?.error ?? false\n const resolvedDisabled = disabled ?? group?.disabled ?? false\n const resolvedName = name ?? group?.name\n\n // In a group the selection comes from context; standalone it's controlled (`checked`) or local.\n const [internal, setInternal] = useState(false)\n const isChecked = group ? group.value === value : checked !== undefined ? checked : internal\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (group) {\n group.onChange(value)\n return\n }\n if (checked === undefined) setInternal(event.target.checked)\n onChange?.(event.target.checked)\n }\n\n return (\n <div\n className={clsx(\n styles.field,\n resolvedError && styles.error,\n resolvedDisabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${resolvedColor}-rgb)`, ...style } as CSSProperties}\n >\n <label className={clsx(styles.row, styles[resolvedSize])}>\n <input\n ref={ref}\n id={id}\n name={resolvedName}\n type=\"radio\"\n className={styles.input}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n disabled={resolvedDisabled}\n aria-invalid={resolvedError || undefined}\n {...props}\n />\n <span className={styles.circle} aria-hidden=\"true\">\n <span className={styles.dot} />\n </span>\n {label != null && <span className={styles.label}>{label}</span>}\n </label>\n </div>\n )\n})\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport type { ThemeColor } from '../../theme'\nimport { Typography } from '../Typography'\nimport { Radio, type RadioSize } from './Radio'\nimport { RadioGroupContext, type RadioGroupContextValue } from './radioContext'\nimport styles from './Radio.module.css'\n\nexport type RadioOrientation = 'vertical' | 'horizontal'\n\n/** A single option for the data-driven `options` prop. */\nexport interface RadioOption {\n value: string\n label?: ReactNode\n disabled?: boolean\n}\n\nexport interface RadioGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'defaultValue'\n> {\n /** Group label rendered above the options. */\n label?: ReactNode\n /** Controlled selected value. */\n value?: string\n /** Initial value for uncontrolled use. */\n defaultValue?: string\n /** Fires with the newly-selected value. */\n onChange?: (value: string) => void\n /** Shared input `name` for the radios (also the `<Form>` binding key). */\n name?: string\n /** Data-driven options — an alternative to passing `<Radio>` children. */\n options?: RadioOption[]\n /** Stack direction of the options. Defaults to `vertical`. */\n orientation?: RadioOrientation\n /** Preset size for every radio. Defaults to `md`. */\n size?: RadioSize\n /** Theme palette token for the selected fill. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the group invalid — reddens the radio rings (no message text, like `Checkbox`). */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Disables every radio in the group. */\n disabled?: boolean\n /** `<Radio>` children (used when `options` is not given). */\n children?: ReactNode\n}\n\n/**\n * Groups radio buttons so exactly one is selected. Supplies the shared `name`, selection and\n * `size`/`color`/`disabled`/`error` to its `<Radio>` children via context — pass them as `children`\n * or, for the common case, via the data-driven `options` prop. Controlled (`value` + `onChange`) or\n * uncontrolled (`defaultValue`), and binds to a surrounding `<Form>` by `name` (its form value is a\n * `string`; validate with e.g. `z.string().min(1)`). `error` reddens the radio rings (no message text,\n * like `Checkbox`). `role=\"radiogroup\"`; styling uses `--tz-*` tokens.\n */\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\n {\n label,\n value,\n defaultValue,\n onChange,\n name,\n options,\n orientation = 'vertical',\n size = 'md',\n color = 'accent',\n error,\n required = false,\n disabled = false,\n children,\n className,\n style,\n ...props\n },\n ref,\n) {\n // Auto-bind to a surrounding <Form> by `name` — the form value is the selected string.\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = form && name ? form.field(name) : undefined\n\n const externalValue: string | undefined =\n value !== undefined\n ? value\n : isFormBound\n ? (form!.values[name!] as string | undefined)\n : undefined\n const isControlled = externalValue !== undefined\n const [internal, setInternal] = useState<string | undefined>(defaultValue)\n const currentValue = isControlled ? externalValue : internal\n\n const resolvedError = error ?? bound?.error ?? false\n\n const handleChange = (next: string) => {\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n const ctx: RadioGroupContextValue = {\n name,\n value: currentValue,\n onChange: handleChange,\n size,\n color,\n disabled,\n error: resolvedError,\n }\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n aria-invalid={resolvedError || undefined}\n className={clsx(styles.group, className)}\n style={style as CSSProperties}\n {...props}\n >\n {label != null && (\n <span className={styles.groupLabel}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n )}\n\n <div className={clsx(styles.options, orientation === 'horizontal' && styles.horizontal)}>\n <RadioGroupContext.Provider value={ctx}>\n {options\n ? options.map((option) => (\n <Radio\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n />\n ))\n : children}\n </RadioGroupContext.Provider>\n </div>\n </div>\n )\n})\n"],"names":["RadioGroupContext","createContext","useRadioGroupContext","useContext","Radio","forwardRef","value","label","color","size","error","checked","onChange","name","disabled","idProp","className","style","props","ref","reactId","useId","id","group","resolvedColor","resolvedSize","resolvedError","resolvedDisabled","resolvedName","internal","setInternal","useState","isChecked","handleChange","event","jsx","clsx","styles","jsxs","RadioGroup","defaultValue","options","orientation","required","children","form","useFormContext","isFormBound","bound","externalValue","isControlled","currentValue","ctx","next","Typography","option"],"mappings":"sKAkBaA,EAAoBC,EAAAA,cAA6C,IAAI,EAG3E,SAASC,GAAsD,CACpE,OAAOC,EAAAA,WAAWH,CAAiB,CACrC,2dCoBaI,EAAQC,EAAAA,WAAyC,SAC5D,CACE,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,KAAAC,EACA,MAAAC,EACA,QAAAC,EACA,SAAAC,EACA,KAAAC,EACA,SAAAC,EACA,GAAIC,EACJ,UAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAUC,EAAAA,MAAA,EACVC,EAAKP,GAAUK,EACfG,EAAQrB,EAAA,EAERsB,EAAgBhB,IAASe,GAAA,YAAAA,EAAO,QAAS,SACzCE,EAAehB,IAAQc,GAAA,YAAAA,EAAO,OAAQ,KACtCG,EAAgBhB,IAASa,GAAA,YAAAA,EAAO,QAAS,GACzCI,EAAmBb,IAAYS,GAAA,YAAAA,EAAO,WAAY,GAClDK,EAAef,IAAQU,GAAA,YAAAA,EAAO,MAG9B,CAACM,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EACxCC,EAAYT,EAAQA,EAAM,QAAUjB,EAAQK,IAAY,OAAYA,EAAUkB,EAE9EI,EAAgBC,GAAyC,CAC7D,GAAIX,EAAO,CACTA,EAAM,SAASjB,CAAK,EACpB,MACF,CACIK,IAAY,QAAWmB,EAAYI,EAAM,OAAO,OAAO,EAC3DtB,GAAA,MAAAA,EAAWsB,EAAM,OAAO,QAC1B,EAEA,OACEC,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,KACTC,EAAO,MACPX,GAAiBW,EAAO,MACxBV,GAAoBU,EAAO,SAC3BrB,CAAA,EAEF,MAAO,CAAE,eAAgB,kBAAkBQ,CAAa,QAAS,GAAGP,CAAA,EAEpE,SAAAqB,EAAAA,KAAC,SAAM,UAAWF,EAAAA,KAAKC,EAAO,IAAKA,EAAOZ,CAAY,CAAC,EACrD,SAAA,CAAAU,EAAAA,IAAC,QAAA,CACC,IAAAhB,EACA,GAAAG,EACA,KAAMM,EACN,KAAK,QACL,UAAWS,EAAO,MAClB,MAAA/B,EACA,QAAS0B,EACT,SAAUC,EACV,SAAUN,EACV,eAAcD,GAAiB,OAC9B,GAAGR,CAAA,CAAA,EAENiB,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAO,OAAQ,cAAY,OAC1C,SAAAF,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAO,GAAA,CAAK,EAC/B,EACC9B,GAAS,MAAQ4B,EAAAA,IAAC,QAAK,UAAWE,EAAO,MAAQ,SAAA9B,CAAA,CAAM,CAAA,CAAA,CAC1D,CAAA,CAAA,CAGN,CAAC,ECnDYgC,GAAalC,EAAAA,WAA4C,SACpE,CACE,MAAAE,EACA,MAAAD,EACA,aAAAkC,EACA,SAAA5B,EACA,KAAAC,EACA,QAAA4B,EACA,YAAAC,EAAc,WACd,KAAAjC,EAAO,KACP,MAAAD,EAAQ,SACR,MAAAE,EACA,SAAAiC,EAAW,GACX,SAAA7B,EAAW,GACX,SAAA8B,EACA,UAAA5B,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CAEA,MAAM0B,EAAOC,EAAAA,eAAA,EACPC,EAAc,GAAQF,GAAQhC,GAC9BmC,EAAQH,GAAQhC,EAAOgC,EAAK,MAAMhC,CAAI,EAAI,OAE1CoC,EACJ3C,IAAU,OACNA,EACAyC,EACGF,EAAM,OAAOhC,CAAK,EACnB,OACFqC,EAAeD,IAAkB,OACjC,CAACpB,EAAUC,CAAW,EAAIC,EAAAA,SAA6BS,CAAY,EACnEW,EAAeD,EAAeD,EAAgBpB,EAE9CH,EAAgBhB,IAASsC,GAAA,YAAAA,EAAO,QAAS,GAQzCI,EAA8B,CAClC,KAAAvC,EACA,MAAOsC,EACP,SAToBE,GAAiB,CAChCH,GAAcpB,EAAYuB,CAAI,EAC/BN,GAAaF,EAAM,SAAShC,EAAOwC,CAAI,EAC3CzC,GAAA,MAAAA,EAAWyC,EACb,EAME,KAAA5C,EACA,MAAAD,EACA,SAAAM,EACA,MAAOY,CAAA,EAGT,OACEY,EAAAA,KAAC,MAAA,CACC,IAAAnB,EACA,KAAK,aACL,eAAcO,GAAiB,OAC/B,UAAWU,EAAAA,KAAKC,EAAO,MAAOrB,CAAS,EACvC,MAAAC,EACC,GAAGC,EAEH,SAAA,CAAAX,GAAS,MACR+B,EAAAA,KAAC,OAAA,CAAK,UAAWD,EAAO,WACtB,SAAA,CAAAF,EAAAA,IAACmB,EAAAA,YAAW,GAAG,OAAO,QAAQ,YAAY,MAAM,QAC7C,SAAA/C,CAAA,CACH,EACCoC,SACE,OAAA,CAAK,UAAWN,EAAO,SAAU,cAAY,OAAO,SAAA,GAAA,CAErD,CAAA,EAEJ,EAGFF,EAAAA,IAAC,OAAI,UAAWC,OAAKC,EAAO,QAASK,IAAgB,cAAgBL,EAAO,UAAU,EACpF,SAAAF,EAAAA,IAACnC,EAAkB,SAAlB,CAA2B,MAAOoD,EAChC,SAAAX,EACGA,EAAQ,IAAKc,GACXpB,EAAAA,IAAC/B,EAAA,CAEC,MAAOmD,EAAO,MACd,MAAOA,EAAO,MACd,SAAUA,EAAO,QAAA,EAHZA,EAAO,KAAA,CAKf,EACDX,CAAA,CACN,CAAA,CACF,CAAA,CAAA,CAAA,CAGN,CAAC"}
|
|
1
|
+
{"version":3,"file":"RadioGroup-Byy-eSY3.cjs","sources":["../src/components/Radio/radioContext.ts","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ThemeColor } from '../../theme'\nimport type { RadioSize } from './Radio'\n\n/** Shared state a `<RadioGroup>` hands down to its `<Radio>` children via context. */\nexport interface RadioGroupContextValue {\n /** Shared input `name` (the radios in a group must share one). */\n name?: string\n /** The group's currently-selected value. */\n value?: string\n /** Select a value — called by a child `<Radio>` on change. */\n onChange: (value: string) => void\n size?: RadioSize\n color?: ThemeColor\n disabled?: boolean\n error?: boolean\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\n\n/** Read the surrounding `<RadioGroup>` so a `<Radio>` can wire itself in (or `null` when standalone). */\nexport function useRadioGroupContext(): RadioGroupContextValue | null {\n return useContext(RadioGroupContext)\n}\n","import {\n forwardRef,\n useId,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { useRadioGroupContext } from './radioContext'\nimport styles from './Radio.module.css'\n\nexport type RadioSize = 'sm' | 'md' | 'lg'\n\nexport interface RadioProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'color' | 'type' | 'onChange' | 'value'\n> {\n /** This option's value — selected when it matches the surrounding `RadioGroup`'s value. */\n value: string\n /** Text shown to the right of the control. */\n label?: ReactNode\n /** Theme palette token for the selected fill. Defaults to `accent` (inherits the group's `color`). */\n color?: ThemeColor\n /** Preset size — circle dimensions and label font. Inherits the group's `size` when omitted. */\n size?: RadioSize\n /** Marks the control invalid — reddens the ring. Inherits the group's `error`. */\n error?: boolean\n /** Controlled selected state for standalone use (inside a `RadioGroup` the group drives this). */\n checked?: boolean\n /** Fires with the next selected state (standalone use). */\n onChange?: (checked: boolean) => void\n}\n\n/**\n * A single radio button with a label. The native `<input type=\"radio\">` is visually hidden but fully\n * accessible; a styled circle shows the state, filling with `color` and an inner dot when selected.\n * Designed to live inside a `<RadioGroup>` (which supplies the shared `name`, selection and\n * `size`/`color`/`disabled`/`error` via context), but also works standalone (`checked` + `onChange`).\n * Styling uses `--tz-*` tokens only.\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n value,\n label,\n color,\n size,\n error,\n checked,\n onChange,\n name,\n disabled,\n id: idProp,\n className,\n style,\n ...props\n },\n ref,\n) {\n const reactId = useId()\n const id = idProp ?? reactId\n const group = useRadioGroupContext()\n\n const resolvedColor = color ?? group?.color ?? 'accent'\n const resolvedSize = size ?? group?.size ?? 'md'\n const resolvedError = error ?? group?.error ?? false\n const resolvedDisabled = disabled ?? group?.disabled ?? false\n const resolvedName = name ?? group?.name\n\n // In a group the selection comes from context; standalone it's controlled (`checked`) or local.\n const [internal, setInternal] = useState(false)\n const isChecked = group ? group.value === value : checked !== undefined ? checked : internal\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (group) {\n group.onChange(value)\n return\n }\n if (checked === undefined) setInternal(event.target.checked)\n onChange?.(event.target.checked)\n }\n\n return (\n <div\n className={clsx(\n styles.field,\n resolvedError && styles.error,\n resolvedDisabled && styles.disabled,\n className,\n )}\n style={{ '--tz-btn-rgb': `var(--tz-color-${resolvedColor}-rgb)`, ...style } as CSSProperties}\n >\n <label className={clsx(styles.row, styles[resolvedSize])}>\n <input\n ref={ref}\n id={id}\n name={resolvedName}\n type=\"radio\"\n className={styles.input}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n disabled={resolvedDisabled}\n aria-invalid={resolvedError || undefined}\n {...props}\n />\n <span className={styles.circle} aria-hidden=\"true\">\n <span className={styles.dot} />\n </span>\n {label != null && <span className={styles.label}>{label}</span>}\n </label>\n </div>\n )\n})\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport type { ThemeColor } from '../../theme'\nimport { Typography } from '../Typography'\nimport { Radio, type RadioSize } from './Radio'\nimport { RadioGroupContext, type RadioGroupContextValue } from './radioContext'\nimport styles from './Radio.module.css'\n\nexport type RadioOrientation = 'vertical' | 'horizontal'\n\n/** A single option for the data-driven `options` prop. */\nexport interface RadioOption {\n value: string\n label?: ReactNode\n disabled?: boolean\n}\n\nexport interface RadioGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'defaultValue'\n> {\n /** Group label rendered above the options. */\n label?: ReactNode\n /** Controlled selected value. */\n value?: string\n /** Initial value for uncontrolled use. */\n defaultValue?: string\n /** Fires with the newly-selected value. */\n onChange?: (value: string) => void\n /** Shared input `name` for the radios (also the `<Form>` binding key). */\n name?: string\n /** Data-driven options — an alternative to passing `<Radio>` children. */\n options?: RadioOption[]\n /** Stack direction of the options. Defaults to `vertical`. */\n orientation?: RadioOrientation\n /** Preset size for every radio. Defaults to `md`. */\n size?: RadioSize\n /** Theme palette token for the selected fill. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the group invalid — reddens the radio rings (no message text, like `Checkbox`). */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Disables every radio in the group. */\n disabled?: boolean\n /** `<Radio>` children (used when `options` is not given). */\n children?: ReactNode\n}\n\n/**\n * Groups radio buttons so exactly one is selected. Supplies the shared `name`, selection and\n * `size`/`color`/`disabled`/`error` to its `<Radio>` children via context — pass them as `children`\n * or, for the common case, via the data-driven `options` prop. Controlled (`value` + `onChange`) or\n * uncontrolled (`defaultValue`), and binds to a surrounding `<Form>` by `name` (its form value is a\n * `string`; validate with e.g. `z.string().min(1)`). `error` reddens the radio rings (no message text,\n * like `Checkbox`). `role=\"radiogroup\"`; styling uses `--tz-*` tokens.\n */\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\n {\n label,\n value,\n defaultValue,\n onChange,\n name,\n options,\n orientation = 'vertical',\n size = 'md',\n color = 'accent',\n error,\n required = false,\n disabled = false,\n children,\n className,\n style,\n ...props\n },\n ref,\n) {\n // Auto-bind to a surrounding <Form> by `name` — the form value is the selected string.\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = form && name ? form.field(name) : undefined\n\n const externalValue: string | undefined =\n value !== undefined\n ? value\n : isFormBound\n ? (form!.values[name!] as string | undefined)\n : undefined\n const isControlled = externalValue !== undefined\n const [internal, setInternal] = useState<string | undefined>(defaultValue)\n const currentValue = isControlled ? externalValue : internal\n\n const resolvedError = error ?? bound?.error ?? false\n\n const handleChange = (next: string) => {\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n const ctx: RadioGroupContextValue = {\n name,\n value: currentValue,\n onChange: handleChange,\n size,\n color,\n disabled,\n error: resolvedError,\n }\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n aria-invalid={resolvedError || undefined}\n className={clsx(styles.group, className)}\n style={style as CSSProperties}\n {...props}\n >\n {label != null && (\n <span className={styles.groupLabel}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n )}\n\n <div className={clsx(styles.options, orientation === 'horizontal' && styles.horizontal)}>\n <RadioGroupContext.Provider value={ctx}>\n {options\n ? options.map((option) => (\n <Radio\n key={option.value}\n value={option.value}\n label={option.label}\n disabled={option.disabled}\n />\n ))\n : children}\n </RadioGroupContext.Provider>\n </div>\n </div>\n )\n})\n"],"names":["RadioGroupContext","createContext","useRadioGroupContext","useContext","Radio","forwardRef","value","label","color","size","error","checked","onChange","name","disabled","idProp","className","style","props","ref","reactId","useId","id","group","resolvedColor","resolvedSize","resolvedError","resolvedDisabled","resolvedName","internal","setInternal","useState","isChecked","handleChange","event","jsx","clsx","styles","jsxs","RadioGroup","defaultValue","options","orientation","required","children","form","useFormContext","isFormBound","bound","externalValue","isControlled","currentValue","ctx","next","Typography","option"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { jsx as l, jsxs as S } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as F, createContext as T, forwardRef as V, useId as D, useState as j } from "react";
|
|
3
|
+
import { clsx as p } from "clsx";
|
|
4
|
+
import { u as P } from "./formContext-B7ln1Miy.js";
|
|
5
|
+
import { T as $ } from "./Typography-Cta6Rg4L.js";
|
|
6
|
+
const k = T(null);
|
|
7
|
+
function A() {
|
|
8
|
+
return F(k);
|
|
9
|
+
}
|
|
10
|
+
const H = "_field_dlync_2", J = "_row_dlync_9", K = "_disabled_dlync_17", M = "_input_dlync_23", O = "_circle_dlync_37", Q = "_dot_dlync_59", U = "_error_dlync_73", W = "_label_dlync_77", X = "_required_dlync_82", Y = "_sm_dlync_88", Z = "_md_dlync_92", ee = "_lg_dlync_96", oe = "_group_dlync_112", le = "_groupLabel_dlync_119", re = "_options_dlync_124", se = "_horizontal_dlync_130", o = {
|
|
11
|
+
field: H,
|
|
12
|
+
row: J,
|
|
13
|
+
disabled: K,
|
|
14
|
+
input: M,
|
|
15
|
+
circle: O,
|
|
16
|
+
dot: Q,
|
|
17
|
+
error: U,
|
|
18
|
+
label: W,
|
|
19
|
+
required: X,
|
|
20
|
+
sm: Y,
|
|
21
|
+
md: Z,
|
|
22
|
+
lg: ee,
|
|
23
|
+
group: oe,
|
|
24
|
+
groupLabel: le,
|
|
25
|
+
options: re,
|
|
26
|
+
horizontal: se
|
|
27
|
+
}, ne = V(function({
|
|
28
|
+
value: t,
|
|
29
|
+
label: c,
|
|
30
|
+
color: y,
|
|
31
|
+
size: i,
|
|
32
|
+
error: r,
|
|
33
|
+
checked: a,
|
|
34
|
+
onChange: _,
|
|
35
|
+
name: b,
|
|
36
|
+
disabled: h,
|
|
37
|
+
id: N,
|
|
38
|
+
className: x,
|
|
39
|
+
style: z,
|
|
40
|
+
...R
|
|
41
|
+
}, g) {
|
|
42
|
+
const C = D(), w = N ?? C, e = A(), n = y ?? (e == null ? void 0 : e.color) ?? "accent", m = i ?? (e == null ? void 0 : e.size) ?? "md", d = r ?? (e == null ? void 0 : e.error) ?? !1, u = h ?? (e == null ? void 0 : e.disabled) ?? !1, f = b ?? (e == null ? void 0 : e.name), [q, G] = j(!1), I = e ? e.value === t : a !== void 0 ? a : q, v = (L) => {
|
|
43
|
+
if (e) {
|
|
44
|
+
e.onChange(t);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
a === void 0 && G(L.target.checked), _ == null || _(L.target.checked);
|
|
48
|
+
};
|
|
49
|
+
return /* @__PURE__ */ l(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
className: p(
|
|
53
|
+
o.field,
|
|
54
|
+
d && o.error,
|
|
55
|
+
u && o.disabled,
|
|
56
|
+
x
|
|
57
|
+
),
|
|
58
|
+
style: { "--tz-btn-rgb": `var(--tz-color-${n}-rgb)`, ...z },
|
|
59
|
+
children: /* @__PURE__ */ S("label", { className: p(o.row, o[m]), children: [
|
|
60
|
+
/* @__PURE__ */ l(
|
|
61
|
+
"input",
|
|
62
|
+
{
|
|
63
|
+
ref: g,
|
|
64
|
+
id: w,
|
|
65
|
+
name: f,
|
|
66
|
+
type: "radio",
|
|
67
|
+
className: o.input,
|
|
68
|
+
value: t,
|
|
69
|
+
checked: I,
|
|
70
|
+
onChange: v,
|
|
71
|
+
disabled: u,
|
|
72
|
+
"aria-invalid": d || void 0,
|
|
73
|
+
...R
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
/* @__PURE__ */ l("span", { className: o.circle, "aria-hidden": "true", children: /* @__PURE__ */ l("span", { className: o.dot }) }),
|
|
77
|
+
c != null && /* @__PURE__ */ l("span", { className: o.label, children: c })
|
|
78
|
+
] })
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
}), _e = V(function({
|
|
82
|
+
label: t,
|
|
83
|
+
value: c,
|
|
84
|
+
defaultValue: y,
|
|
85
|
+
onChange: i,
|
|
86
|
+
name: r,
|
|
87
|
+
options: a,
|
|
88
|
+
orientation: _ = "vertical",
|
|
89
|
+
size: b = "md",
|
|
90
|
+
color: h = "accent",
|
|
91
|
+
error: N,
|
|
92
|
+
required: x = !1,
|
|
93
|
+
disabled: z = !1,
|
|
94
|
+
children: R,
|
|
95
|
+
className: g,
|
|
96
|
+
style: C,
|
|
97
|
+
...w
|
|
98
|
+
}, e) {
|
|
99
|
+
const n = P(), m = !!(n && r), d = n && r ? n.field(r) : void 0, u = c !== void 0 ? c : m ? n.values[r] : void 0, f = u !== void 0, [q, G] = j(y), I = f ? u : q, v = N ?? (d == null ? void 0 : d.error) ?? !1, E = {
|
|
100
|
+
name: r,
|
|
101
|
+
value: I,
|
|
102
|
+
onChange: (s) => {
|
|
103
|
+
f || G(s), m && n.setValue(r, s), i == null || i(s);
|
|
104
|
+
},
|
|
105
|
+
size: b,
|
|
106
|
+
color: h,
|
|
107
|
+
disabled: z,
|
|
108
|
+
error: v
|
|
109
|
+
};
|
|
110
|
+
return /* @__PURE__ */ S(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
ref: e,
|
|
114
|
+
role: "radiogroup",
|
|
115
|
+
"aria-invalid": v || void 0,
|
|
116
|
+
className: p(o.group, g),
|
|
117
|
+
style: C,
|
|
118
|
+
...w,
|
|
119
|
+
children: [
|
|
120
|
+
t != null && /* @__PURE__ */ S("span", { className: o.groupLabel, children: [
|
|
121
|
+
/* @__PURE__ */ l($, { as: "span", variant: "bodySmall", color: "muted", children: t }),
|
|
122
|
+
x && /* @__PURE__ */ l("span", { className: o.required, "aria-hidden": "true", children: "*" })
|
|
123
|
+
] }),
|
|
124
|
+
/* @__PURE__ */ l("div", { className: p(o.options, _ === "horizontal" && o.horizontal), children: /* @__PURE__ */ l(k.Provider, { value: E, children: a ? a.map((s) => /* @__PURE__ */ l(
|
|
125
|
+
ne,
|
|
126
|
+
{
|
|
127
|
+
value: s.value,
|
|
128
|
+
label: s.label,
|
|
129
|
+
disabled: s.disabled
|
|
130
|
+
},
|
|
131
|
+
s.value
|
|
132
|
+
)) : R }) })
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
export {
|
|
138
|
+
ne as R,
|
|
139
|
+
_e as a
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=RadioGroup-D_1_Heta.js.map
|