@techzyapp/ui-library 1.0.23 → 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-aDy6rNqI.js → AdminRoot-C4OyuOIr.js} +4 -4
- package/dist/{AdminRoot-aDy6rNqI.js.map → AdminRoot-C4OyuOIr.js.map} +1 -1
- package/dist/{AdminRoot-C7Idu7FQ.cjs → AdminRoot-bHywlbML.cjs} +2 -2
- package/dist/{AdminRoot-C7Idu7FQ.cjs.map → AdminRoot-bHywlbML.cjs.map} +1 -1
- package/dist/Alert-DeGgilkH.cjs +2 -0
- package/dist/{Alert-Cl1zxmX9.cjs.map → Alert-DeGgilkH.cjs.map} +1 -1
- package/dist/Alert-rNjfqj2Z.js +71 -0
- package/dist/{Alert-D6VL2C-E.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/Blockquote-BWGxIL_V.cjs +2 -0
- package/dist/{Blockquote-CxHwOecc.cjs.map → Blockquote-BWGxIL_V.cjs.map} +1 -1
- package/dist/Blockquote-Ma-2naET.js +46 -0
- package/dist/{Blockquote-CNIuJFHq.js.map → Blockquote-Ma-2naET.js.map} +1 -1
- package/dist/{Breadcrumbs-CicfjfIu.js → Breadcrumbs-BJHKk0Sn.js} +3 -3
- package/dist/{Breadcrumbs-CicfjfIu.js.map → Breadcrumbs-BJHKk0Sn.js.map} +1 -1
- package/dist/{Breadcrumbs-BnFW4LgK.cjs → Breadcrumbs-CGcpMlxm.cjs} +2 -2
- package/dist/{Breadcrumbs-BnFW4LgK.cjs.map → Breadcrumbs-CGcpMlxm.cjs.map} +1 -1
- package/dist/Button-BZ_o-akc.cjs +2 -0
- package/dist/{Button-ZplrHYKw.cjs.map → Button-BZ_o-akc.cjs.map} +1 -1
- package/dist/Button-obe6rono.js +72 -0
- package/dist/{Button-Cfxd7qhd.js.map → Button-obe6rono.js.map} +1 -1
- package/dist/{Calendar-DTxCT-ki.js → Calendar-SCih0NtS.js} +4 -4
- package/dist/{Calendar-DTxCT-ki.js.map → Calendar-SCih0NtS.js.map} +1 -1
- package/dist/{Calendar-S9vyp-qv.cjs → Calendar-lfpNwivC.cjs} +2 -2
- package/dist/{Calendar-S9vyp-qv.cjs.map → Calendar-lfpNwivC.cjs.map} +1 -1
- package/dist/{Card-eXJfA4rU.js → Card-BRJV2JZE.js} +2 -2
- package/dist/{Card-eXJfA4rU.js.map → Card-BRJV2JZE.js.map} +1 -1
- package/dist/{Card-BeE2ohcn.cjs → Card-KvvNlchc.cjs} +2 -2
- package/dist/{Card-BeE2ohcn.cjs.map → Card-KvvNlchc.cjs.map} +1 -1
- package/dist/{Chip-BOXXdzap.js → Chip-CQ4cYVl_.js} +31 -31
- package/dist/{Chip-BOXXdzap.js.map → Chip-CQ4cYVl_.js.map} +1 -1
- package/dist/Chip-CYz4vxHm.cjs +2 -0
- package/dist/{Chip-B4XERWb_.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-D_PRiWMq.js → CodeBlock-DddGTLu1.js} +3 -3
- package/dist/{CodeBlock-D_PRiWMq.js.map → CodeBlock-DddGTLu1.js.map} +1 -1
- package/dist/{CodeBlock-C7_A6CTT.cjs → CodeBlock-H75dbOvg.cjs} +2 -2
- package/dist/{CodeBlock-C7_A6CTT.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-DAjs7PmR.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-BicoaBLj.cjs +2 -0
- package/dist/ConfigProvider-BicoaBLj.cjs.map +1 -0
- package/dist/ConfigProvider-DL9fylMo.js +320 -0
- package/dist/ConfigProvider-DL9fylMo.js.map +1 -0
- package/dist/CopyButton-BqFGC-Ca.cjs +2 -0
- package/dist/{CopyButton-COF3hIV-.cjs.map → CopyButton-BqFGC-Ca.cjs.map} +1 -1
- package/dist/CopyButton-D6-kcVCA.js +43 -0
- package/dist/{CopyButton-Bv7L4xJf.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-kA-xn5ET.cjs → DatePicker-BvGFP2AL.cjs} +2 -2
- package/dist/{DatePicker-kA-xn5ET.cjs.map → DatePicker-BvGFP2AL.cjs.map} +1 -1
- package/dist/{DatePicker-DZfOvxUR.js → DatePicker-DP7yASzq.js} +5 -5
- package/dist/{DatePicker-DZfOvxUR.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-BxBXhSN_.js → DateTimePicker-CzRduOFz.js} +8 -8
- package/dist/{DateTimePicker-BxBXhSN_.js.map → DateTimePicker-CzRduOFz.js.map} +1 -1
- package/dist/{DateTimePicker-DEGmn5UX.cjs → DateTimePicker-DOzft9kg.cjs} +2 -2
- package/dist/{DateTimePicker-DEGmn5UX.cjs.map → DateTimePicker-DOzft9kg.cjs.map} +1 -1
- package/dist/EmptyState-A5nPGnHA.js +38 -0
- package/dist/{EmptyState-Du4vA3bC.js.map → EmptyState-A5nPGnHA.js.map} +1 -1
- package/dist/EmptyState-CTTOy9aY.cjs +2 -0
- package/dist/{EmptyState-DlX-BLLI.cjs.map → EmptyState-CTTOy9aY.cjs.map} +1 -1
- package/dist/{FileCard-juQ1fWbG.js → FileCard-BmPEEcue.js} +4 -4
- package/dist/{FileCard-juQ1fWbG.js.map → FileCard-BmPEEcue.js.map} +1 -1
- package/dist/{FileCard-zyCpTrJ-.cjs → FileCard-C4BkGMtK.cjs} +2 -2
- package/dist/{FileCard-zyCpTrJ-.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-DL9atihI.js → FileUploader-Dv_3bjZA.js} +217 -217
- package/dist/FileUploader-Dv_3bjZA.js.map +1 -0
- package/dist/{Flag-DFKHYnqk.cjs → Flag-BM_2VJ1v.cjs} +2 -2
- package/dist/{Flag-DFKHYnqk.cjs.map → Flag-BM_2VJ1v.cjs.map} +1 -1
- package/dist/{Flag-BxRrjCTB.js → Flag-CzCEpB8E.js} +2 -2
- package/dist/{Flag-BxRrjCTB.js.map → Flag-CzCEpB8E.js.map} +1 -1
- package/dist/{FullscreenToggle-BNK7RcRq.cjs → FullscreenToggle-BL0nBrsL.cjs} +2 -2
- package/dist/{FullscreenToggle-BNK7RcRq.cjs.map → FullscreenToggle-BL0nBrsL.cjs.map} +1 -1
- package/dist/{FullscreenToggle-BMCNsyzb.js → FullscreenToggle-HZQOIa21.js} +3 -3
- package/dist/{FullscreenToggle-BMCNsyzb.js.map → FullscreenToggle-HZQOIa21.js.map} +1 -1
- package/dist/IconButton-B87ipBK3.cjs +2 -0
- package/dist/{IconButton-B9eVM18U.cjs.map → IconButton-B87ipBK3.cjs.map} +1 -1
- package/dist/IconButton-CBp8QuTO.js +68 -0
- package/dist/{IconButton-CfvsE_p3.js.map → IconButton-CBp8QuTO.js.map} +1 -1
- package/dist/Loader-0Imnbael.cjs +2 -0
- package/dist/{Loader-CxLrhAz9.cjs.map → Loader-0Imnbael.cjs.map} +1 -1
- package/dist/Loader-fffFnQqS.js +28 -0
- package/dist/{Loader-DwmyJFwG.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--e2qGisF.cjs +2 -0
- package/dist/{Modal-DXZdMmJh.cjs.map → Modal--e2qGisF.cjs.map} +1 -1
- package/dist/Modal-DJljaPqV.js +195 -0
- package/dist/{Modal-Cx0JEQ-j.js.map → Modal-DJljaPqV.js.map} +1 -1
- package/dist/{MultiSelect-DfhyGxDU.cjs → MultiSelect-CvecZeMU.cjs} +2 -2
- package/dist/{MultiSelect-DfhyGxDU.cjs.map → MultiSelect-CvecZeMU.cjs.map} +1 -1
- package/dist/{MultiSelect-yGlvweEq.js → MultiSelect-DLoS04lZ.js} +4 -4
- package/dist/{MultiSelect-yGlvweEq.js.map → MultiSelect-DLoS04lZ.js.map} +1 -1
- package/dist/{NumberField-B7yPXIw_.cjs → NumberField-C_HZXBuw.cjs} +2 -2
- package/dist/{NumberField-B7yPXIw_.cjs.map → NumberField-C_HZXBuw.cjs.map} +1 -1
- package/dist/{NumberField-cAjPU1P5.js → NumberField-DYGVQdL5.js} +4 -4
- package/dist/{NumberField-cAjPU1P5.js.map → NumberField-DYGVQdL5.js.map} +1 -1
- package/dist/OtpField-CpQr_ZqL.js +174 -0
- package/dist/OtpField-CpQr_ZqL.js.map +1 -0
- package/dist/OtpField-DKbUP0F6.cjs +2 -0
- package/dist/OtpField-DKbUP0F6.cjs.map +1 -0
- package/dist/{PageLayout-C9Je7kfF.js → PageLayout-CCcPCfJF.js} +2 -2
- package/dist/{PageLayout-C9Je7kfF.js.map → PageLayout-CCcPCfJF.js.map} +1 -1
- package/dist/{PageLayout-BSHyKoQ4.cjs → PageLayout-CuWXukUv.cjs} +2 -2
- package/dist/{PageLayout-BSHyKoQ4.cjs.map → PageLayout-CuWXukUv.cjs.map} +1 -1
- package/dist/PageNotFound-JKOnpyHD.cjs +2 -0
- package/dist/{PageNotFound-voB9ylPF.cjs.map → PageNotFound-JKOnpyHD.cjs.map} +1 -1
- package/dist/{PageNotFound-CUN2OntP.js → PageNotFound-LWH2tU5E.js} +9 -9
- package/dist/{PageNotFound-CUN2OntP.js.map → PageNotFound-LWH2tU5E.js.map} +1 -1
- package/dist/Pagination-BwtbmITJ.js +139 -0
- package/dist/{Pagination-BaVHgIWT.js.map → Pagination-BwtbmITJ.js.map} +1 -1
- package/dist/Pagination-M7njqOUt.cjs +2 -0
- package/dist/{Pagination-BUGaylZa.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-BpL2-gnz.js.map → RemoveDialog-DUrD2Em8.js.map} +1 -1
- package/dist/RemoveDialog-FZWYAxRy.cjs +2 -0
- package/dist/{RemoveDialog-DGt_72we.cjs.map → RemoveDialog-FZWYAxRy.cjs.map} +1 -1
- package/dist/{RichTextEditor-C_6pzqYY.js → RichTextEditor-CG6LoNiw.js} +9 -9
- package/dist/RichTextEditor-CG6LoNiw.js.map +1 -0
- package/dist/{RichTextEditor-BuoywqBu.cjs → RichTextEditor-mpMCG8jX.cjs} +2 -2
- package/dist/RichTextEditor-mpMCG8jX.cjs.map +1 -0
- package/dist/RootLayout-CPxDqfGb.cjs +2 -0
- package/dist/RootLayout-CPxDqfGb.cjs.map +1 -0
- package/dist/RootLayout-D3K-pAMO.js +515 -0
- package/dist/RootLayout-D3K-pAMO.js.map +1 -0
- package/dist/{Select-ChT-6_bM.js → Select-BB9oOoWZ.js} +3 -3
- package/dist/{Select-ChT-6_bM.js.map → Select-BB9oOoWZ.js.map} +1 -1
- package/dist/{Select-CVy5BnKe.cjs → Select-iP2p5jad.cjs} +2 -2
- package/dist/{Select-CVy5BnKe.cjs.map → Select-iP2p5jad.cjs.map} +1 -1
- package/dist/{Sidebar-D2MsR33k.cjs → Sidebar-Boi7UgHV.cjs} +2 -2
- package/dist/{Sidebar-D2MsR33k.cjs.map → Sidebar-Boi7UgHV.cjs.map} +1 -1
- package/dist/{Sidebar-ZA1wxCez.js → Sidebar-CsPnv4mu.js} +60 -60
- package/dist/{Sidebar-ZA1wxCez.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-DUYQMDCY.js → SpeedDial-B8XMUATN.js} +2 -2
- package/dist/{SpeedDial-DUYQMDCY.js.map → SpeedDial-B8XMUATN.js.map} +1 -1
- package/dist/{SpeedDial-B9JTNNUU.cjs → SpeedDial-CZ22T8GL.cjs} +2 -2
- package/dist/{SpeedDial-B9JTNNUU.cjs.map → SpeedDial-CZ22T8GL.cjs.map} +1 -1
- package/dist/{Stepper-D89I17pC.js → Stepper-B_e_PGZE.js} +70 -70
- package/dist/{Stepper-D89I17pC.js.map → Stepper-B_e_PGZE.js.map} +1 -1
- package/dist/Stepper-BjkkWawQ.cjs +2 -0
- package/dist/{Stepper-BaC934rb.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-CdIQ5Wfh.js → Table-DdoUcZoN.js} +60 -51
- package/dist/Table-DdoUcZoN.js.map +1 -0
- package/dist/Tabs-CZDX7BN-.cjs +2 -0
- package/dist/{Tabs-CejCwV3O.cjs.map → Tabs-CZDX7BN-.cjs.map} +1 -1
- package/dist/Tabs-v1GEGUDQ.js +190 -0
- package/dist/{Tabs-8-klG-y-.js.map → Tabs-v1GEGUDQ.js.map} +1 -1
- package/dist/{TagsField-BQLqUckB.js → TagsField-B389eDp4.js} +4 -4
- package/dist/{TagsField-BQLqUckB.js.map → TagsField-B389eDp4.js.map} +1 -1
- package/dist/{TagsField-BSAd4eUr.cjs → TagsField-OfrpyHZO.cjs} +2 -2
- package/dist/{TagsField-BSAd4eUr.cjs.map → TagsField-OfrpyHZO.cjs.map} +1 -1
- package/dist/{TextField-B4YtjNUs.js → TextField-7MobCad5.js} +4 -4
- package/dist/{TextField-B4YtjNUs.js.map → TextField-7MobCad5.js.map} +1 -1
- package/dist/{TextField-DzYGA_St.cjs → TextField-B785pRgK.cjs} +2 -2
- package/dist/{TextField-DzYGA_St.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-B4_zRHJY.js → ThemeToggle-BGdvqXad.js} +3 -3
- package/dist/{ThemeToggle-B4_zRHJY.js.map → ThemeToggle-BGdvqXad.js.map} +1 -1
- package/dist/{ThemeToggle-BKk0eFiB.cjs → ThemeToggle-BkmZ7s_u.cjs} +2 -2
- package/dist/{ThemeToggle-BKk0eFiB.cjs.map → ThemeToggle-BkmZ7s_u.cjs.map} +1 -1
- package/dist/{TimeColumns-BAzRrkqY.cjs → TimeColumns-B-xm1DGM.cjs} +2 -2
- package/dist/{TimeColumns-BAzRrkqY.cjs.map → TimeColumns-B-xm1DGM.cjs.map} +1 -1
- package/dist/{TimeColumns-CAPyli9V.js → TimeColumns-BRlDKx_i.js} +3 -3
- package/dist/{TimeColumns-CAPyli9V.js.map → TimeColumns-BRlDKx_i.js.map} +1 -1
- package/dist/{TimePicker-BebBSlQF.js → TimePicker-B_3Ubip0.js} +6 -6
- package/dist/{TimePicker-BebBSlQF.js.map → TimePicker-B_3Ubip0.js.map} +1 -1
- package/dist/{TimePicker-BUnXYR5g.cjs → TimePicker-DvEIdE4v.cjs} +2 -2
- package/dist/{TimePicker-BUnXYR5g.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-B2rO4BkG.cjs → Toaster-BIFRuqbC.cjs} +2 -2
- package/dist/{Toaster-B2rO4BkG.cjs.map → Toaster-BIFRuqbC.cjs.map} +1 -1
- package/dist/{Toaster-ywqAKP8s.js → Toaster-DuzcRbio.js} +2 -2
- package/dist/{Toaster-ywqAKP8s.js.map → Toaster-DuzcRbio.js.map} +1 -1
- package/dist/{TranslatedFields-DQQUb0RD.cjs → TranslatedFields-D_a0NVKI.cjs} +2 -2
- package/dist/{TranslatedFields-DQQUb0RD.cjs.map → TranslatedFields-D_a0NVKI.cjs.map} +1 -1
- package/dist/{TranslatedFields-C-wlh51E.js → TranslatedFields-HmP0Mg5t.js} +5 -5
- package/dist/{TranslatedFields-C-wlh51E.js.map → TranslatedFields-HmP0Mg5t.js.map} +1 -1
- package/dist/{UserCard-BqWt0S-c.js → UserCard-B1phOVKj.js} +4 -4
- package/dist/{UserCard-BqWt0S-c.js.map → UserCard-B1phOVKj.js.map} +1 -1
- package/dist/{UserCard-Be1kl0TZ.cjs → UserCard-BvOcDm5W.cjs} +2 -2
- package/dist/{UserCard-Be1kl0TZ.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/Blockquote/Blockquote.d.cts +1 -1
- package/dist/components/Blockquote/Blockquote.d.ts +1 -1
- package/dist/components/Blockquote/index.cjs +1 -1
- package/dist/components/Blockquote/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/OtpField.d.cts +3 -0
- package/dist/components/OtpField/OtpField.d.ts +3 -0
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.d.cts +1 -1
- package/dist/components/OtpField/index.d.ts +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/SettingsDrawer.d.cts +3 -1
- package/dist/components/RootLayout/SettingsDrawer.d.ts +3 -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.d.cts +1 -1
- package/dist/entries/theme.d.ts +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 +17 -0
- package/dist/i18n/messages.d.ts +17 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +29 -2
- package/dist/index.js +211 -193
- package/dist/index.js.map +1 -1
- package/dist/{messages-CL8uoIRj.js → messages-B06Kl5rI.js} +144 -25
- package/dist/messages-B06Kl5rI.js.map +1 -0
- package/dist/{messages-Dvn_tEp0.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 +19 -0
- package/dist/theme/ConfigProvider.d.ts +19 -0
- package/dist/theme/index.d.cts +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/Alert-Cl1zxmX9.cjs +0 -2
- package/dist/Alert-D6VL2C-E.js +0 -71
- package/dist/Avatar-Dgf04PBC.cjs +0 -2
- package/dist/Badge-BQpr2Jee.cjs +0 -2
- package/dist/Badge-DSWigoGC.js +0 -50
- package/dist/Blockquote-CNIuJFHq.js +0 -46
- package/dist/Blockquote-CxHwOecc.cjs +0 -2
- package/dist/Button-Cfxd7qhd.js +0 -72
- package/dist/Button-ZplrHYKw.cjs +0 -2
- package/dist/Chip-B4XERWb_.cjs +0 -2
- package/dist/ChoiceCardGroup-DBohUnRj.js +0 -181
- package/dist/ChoiceCardGroup-d0VVTUi5.cjs +0 -2
- package/dist/ColorPicker-ClVpWf77.cjs +0 -2
- package/dist/ColorPicker-ClVpWf77.cjs.map +0 -1
- package/dist/ColorPicker-DAjs7PmR.js.map +0 -1
- package/dist/ColorPickerPanel-BGzm2had.js +0 -336
- package/dist/ColorPickerPanel-BGzm2had.js.map +0 -1
- package/dist/ColorPickerPanel-Dk6bI0Xy.cjs +0 -2
- package/dist/ColorPickerPanel-Dk6bI0Xy.cjs.map +0 -1
- package/dist/ConfigProvider-Blhvj6UQ.js +0 -296
- package/dist/ConfigProvider-Blhvj6UQ.js.map +0 -1
- package/dist/ConfigProvider-CUG8Mfy2.cjs +0 -2
- package/dist/ConfigProvider-CUG8Mfy2.cjs.map +0 -1
- package/dist/CopyButton-Bv7L4xJf.js +0 -31
- package/dist/CopyButton-COF3hIV-.cjs +0 -2
- 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-DlX-BLLI.cjs +0 -2
- package/dist/EmptyState-Du4vA3bC.js +0 -38
- package/dist/FileUploader-DL9atihI.js.map +0 -1
- package/dist/FileUploader-DOe3CyJB.cjs +0 -2
- package/dist/FileUploader-DOe3CyJB.cjs.map +0 -1
- package/dist/IconButton-B9eVM18U.cjs +0 -2
- package/dist/IconButton-CfvsE_p3.js +0 -68
- package/dist/Loader-CxLrhAz9.cjs +0 -2
- package/dist/Loader-DwmyJFwG.js +0 -28
- package/dist/Modal-Cx0JEQ-j.js +0 -195
- package/dist/Modal-DXZdMmJh.cjs +0 -2
- package/dist/OtpField-BujZAy2A.cjs +0 -2
- package/dist/OtpField-BujZAy2A.cjs.map +0 -1
- package/dist/OtpField-D0eTOLtg.js +0 -171
- package/dist/OtpField-D0eTOLtg.js.map +0 -1
- package/dist/PageNotFound-voB9ylPF.cjs +0 -2
- package/dist/Pagination-BUGaylZa.cjs +0 -2
- package/dist/Pagination-BaVHgIWT.js +0 -139
- package/dist/RadioGroup-C8u7eNBS.cjs +0 -2
- package/dist/RadioGroup-DbodUJW8.js +0 -141
- package/dist/RemoveDialog-BpL2-gnz.js +0 -47
- package/dist/RemoveDialog-DGt_72we.cjs +0 -2
- package/dist/RichTextEditor-BuoywqBu.cjs.map +0 -1
- package/dist/RichTextEditor-C_6pzqYY.js.map +0 -1
- package/dist/RootLayout-1am1CwPQ.cjs +0 -2
- package/dist/RootLayout-1am1CwPQ.cjs.map +0 -1
- package/dist/RootLayout-x7qWzXPc.js +0 -479
- package/dist/RootLayout-x7qWzXPc.js.map +0 -1
- package/dist/Slider-dxYVXRev.cjs +0 -2
- package/dist/Slider-oGXd5e9X.js +0 -184
- package/dist/Stepper-BaC934rb.cjs +0 -2
- package/dist/Switch-DMPJ0fhB.js +0 -85
- package/dist/Switch-DRkZ6kHJ.cjs +0 -2
- package/dist/Table-CdIQ5Wfh.js.map +0 -1
- package/dist/Table-DvgBWTLx.cjs +0 -2
- package/dist/Table-DvgBWTLx.cjs.map +0 -1
- package/dist/Tabs-8-klG-y-.js +0 -190
- package/dist/Tabs-CejCwV3O.cjs +0 -2
- 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-CL8uoIRj.js.map +0 -1
- package/dist/messages-Dvn_tEp0.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar-S9vyp-qv.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"wPA+BA,SAASA,EAAaC,EAAqBC,EAAqB,CAC9D,GAAID,GAASA,EAAM,OAAOC,EAAO,OAAO,EAAG,OAAOD,EAClD,MAAME,EAAMC,EAAAA,MAAA,EACZ,OAAID,EAAI,OAAOD,EAAO,OAAO,EAAUC,EAChCD,EAAM,QAAQ,OAAO,CAC9B,CAGA,MAAMG,EAAY,EAUX,SAASC,EAAS,CACvB,MAAAL,EACA,MAAAC,EACA,cAAAK,EACA,SAAAC,EACA,IAAAC,EACA,IAAAC,EACA,aAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAAkB,CAChB,MAAMC,EAAIC,EAAAA,KAAA,EACJ,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAe,KAAK,EACtC,CAACC,EAASC,CAAU,EAAIF,EAAAA,SAAgB,IAAMnB,EAAaC,EAAOC,CAAK,CAAC,EACxEoB,EAAUC,EAAAA,OAA8B,IAAI,EAC5CC,EAAgBD,EAAAA,OAAO,EAAQV,CAAU,EAG/CY,EAAAA,UAAU,IAAM,CACdJ,EAAYK,GAAOA,EAAE,OAAOxB,EAAO,OAAO,EAAIwB,EAAI1B,EAAaC,EAAOC,CAAK,CAAE,CAE/E,EAAG,CAACA,CAAK,CAAC,EAGVuB,EAAAA,UAAU,IAAM,SACd,GAAI,CAACD,EAAc,QAAS,OAC5BA,EAAc,QAAU,GACxB,MAAMG,GAAKC,EAAAN,EAAQ,UAAR,YAAAM,EAAiB,cAA2B,kBACvDD,GAAA,MAAAA,EAAI,SACJE,EAAAF,GAAA,YAAAA,EAAI,iBAAJ,MAAAE,EAAA,KAAAF,EAAqB,CAAE,MAAO,SAAA,EAChC,EAAG,CAACP,EAASH,EAAMf,CAAK,CAAC,EAEzB,MAAM4B,EAAYC,GAAe,CAC/BP,EAAc,QAAU,GACxBN,EAAQa,CAAI,CACd,EAGMC,EAAWD,GAAgB,CAC/BP,EAAc,QAAU,GACnBO,EAAK,OAAO7B,EAAO,OAAO,GAAGK,EAAcwB,EAAK,QAAQ,OAAO,CAAC,EACrEV,EAAWU,CAAI,CACjB,EACME,EAAeC,GAAkB,CACrC,MAAMH,EAAOX,EAAQ,IAAIc,EAAO,OAAO,EACvCV,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EACMI,EAAcD,GAAkB,CACpC,IAAIE,EAAOhB,EAAQ,KAAA,EAASc,EACxBzB,IAAK2B,EAAO,KAAK,IAAIA,EAAM3B,EAAI,MAAM,GACrCC,IAAK0B,EAAO,KAAK,IAAIA,EAAM1B,EAAI,MAAM,GACzC,MAAMqB,EAAOX,EAAQ,KAAKgB,CAAI,EAC9BZ,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EAEMM,EAAYC,GAAc,CAC9B,MAAMP,EAAO7B,EAAM,KAAKoC,CAAC,EACzBd,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,CAAI,EAClBb,EAAQ,OAAO,CACjB,EACMqB,EAAaC,GAAc,CAC/B,MAAMT,EAAO7B,EAAM,MAAMsC,CAAC,EAC1BhB,EAAc,QAAU,GACxBH,EAAWrB,EAAaC,EAAO8B,CAAI,CAAC,EACpCxB,EAAcwB,CAAI,EAClBb,EAAQ,KAAK,CACf,EAGMuB,EAAoBC,GAAyC,CACjE,MAAMC,GAAgBvB,EAAQ,IAAA,EAAQR,EAAe,GAAK,EAC1D,OAAQ8B,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,aACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,UACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,YACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,OACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAASuB,EAAc,KAAK,CAAC,EAC7C,MACF,IAAK,MACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAIuB,EAAc,KAAK,CAAC,EAC5C,MACF,IAAK,SACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EAC9D,MACF,IAAK,WACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EACzD,MACF,IAAK,QACL,IAAK,IACHA,EAAM,eAAA,EACDE,EAAAA,WAAWxB,EAASX,EAAKC,EAAKC,CAAY,GAAGH,EAASqC,QAAMzB,CAAO,CAAC,EACzE,KAAA,CAEN,EAEM0B,EAAsBJ,GAAyC,CACnE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNT,EAAY,EAAE,EACd,MACF,IAAK,aACHS,EAAM,eAAA,EACNT,EAAY,CAAC,EACb,MACF,IAAK,UACHS,EAAM,eAAA,EACNT,EAAY,CAAC5B,CAAS,EACtB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNT,EAAY5B,CAAS,EACrB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNH,EAAUnB,EAAQ,OAAO,EACzB,KAAA,CAEN,EAEM2B,EAAqBL,GAAyC,CAClE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNP,EAAW,EAAE,EACb,MACF,IAAK,aACHO,EAAM,eAAA,EACNP,EAAW,CAAC,EACZ,MACF,IAAK,UACHO,EAAM,eAAA,EACNP,EAAW,CAAC9B,CAAS,EACrB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNP,EAAW9B,CAAS,EACpB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNL,EAASjB,EAAQ,MAAM,EACvB,KAAA,CAEN,EAGMjB,EAAMC,EAAAA,MAAA,EAEN4C,EAAaR,GAAczB,EAAE,iBAAiByB,CAAC,EAAgB,EAC/DS,EAAW,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACC,EAAGC,IAC7CpC,EAAE,oBAAoBH,EAAeuC,GAAK,CAAC,EAAgB,CAAA,EAEvDC,EAAYnC,IAAS,MAAQoC,EAAAA,eAAenD,EAAOU,CAAY,EAAI,CAAA,EACnE0C,EAASrC,IAAS,QAAU,MAAM,KAAK,CAAE,OAAQ,EAAA,EAAM,CAACiC,EAAGV,IAAMQ,EAAUR,CAAC,CAAC,EAAI,CAAA,EACjFe,EAAQtC,IAAS,OAASuC,EAAAA,SAAS/C,EAAKC,EAAKR,EAAM,KAAA,CAAM,EAAI,CAAA,EAEnE,OACEuD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,SACrB,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,UACpB,SAAA,CAAAzC,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,SAAS,EAAG,OAAO,CAAC,EAEvD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,iBAAA,CAAkB,CAAA,CAAA,EAIjCJ,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,cACnB,SAAA,EAAAzC,IAAS,OAASA,IAAS,UAC3B0C,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,GAAI7C,EACJ,UAAW4C,EAAAA,OAAO,SAClB,QAAS,IAAM5B,EAAS,MAAM,EAE7B,SAAA5B,EAAM,OAAO,MAAM,CAAA,CAAA,EAGvBe,IAAS,OACR0C,EAAAA,IAAC,UAAO,KAAK,SAAS,UAAWD,SAAO,SAAU,QAAS,IAAM5B,EAAS,OAAO,EAC9E,WAAU5B,EAAM,MAAA,CAAO,EAC1B,EAEDe,IAAS,QACR0C,EAAAA,IAAC,OAAA,CAAK,GAAI7C,EAAS,UAAW4C,EAAAA,OAAO,eAClC,SAAA3C,EAAE,qBAAqB,CAAA,CAC1B,CAAA,EAEJ,EAECE,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,IAAI,EAAG,OAAO,CAAC,EAElD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,kBAAA,CAAmB,CAAA,CAAA,CAChC,EAEJ,EAEC5C,IAAS,OACR0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWwC,EAAAA,KAAKJ,EAAAA,OAAO,SAAUA,EAAAA,OAAO,UAAU,EAClD,KAAK,UACL,kBAAiB5C,EACjB,UAAWiC,EAEV,SAAAQ,EAAM,IAAKjB,GAAM,CAChB,MAAMyB,EAAa9D,EAAQA,EAAM,KAAA,IAAWqC,EAAI,GAChD,OACEqB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAczB,IAAMnC,EAAI,KAAA,GAAUuD,EAAAA,OAAO,SAAA,EAE5C,SAAUpB,IAAMlB,EAAQ,KAAA,EAAS,EAAI,GACrC,gBAAe2C,EACf,QAAS,IAAM1B,EAASC,CAAC,EAExB,SAAAA,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAEDrB,IAAS,QACX0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWoC,EAAAA,OAAO,SAClB,KAAK,UACL,kBAAiB5C,EACjB,UAAWgC,EAEV,SAAAQ,EAAO,IAAI,CAACU,EAAOxB,IAAM,CACxB,MAAMuB,EAAa9D,EAAQA,EAAM,OAAOC,EAAM,MAAMsC,CAAC,EAAG,OAAO,EAAI,GAC7DyB,EAAY9D,EAAI,OAAOD,EAAM,MAAMsC,CAAC,EAAG,OAAO,EACpD,OACEmB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAcE,GAAaP,SAAO,SAAA,EAErC,SAAUlB,IAAMpB,EAAQ,MAAA,EAAU,EAAI,GACtC,gBAAe2C,EACf,QAAS,IAAMxB,EAAUC,CAAC,EAEzB,SAAAwB,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAGHP,EAAAA,KAAC,MAAA,CACC,IAAKnC,EACL,UAAWoC,EAAAA,OAAO,KAClB,KAAK,OACL,aAAY,GAAGV,EAAU9C,EAAM,MAAA,CAAO,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,GAC/D,UAAWuC,EAEX,SAAA,CAAAkB,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,OAAO,SAAU,KAAK,MACnC,SAAAT,EAAS,IAAI,CAACiB,EAAGf,IAChBQ,EAAAA,IAAC,OAAA,CAAa,KAAK,eAAe,UAAWD,EAAAA,OAAO,QACjD,SAAAQ,CAAA,EADQf,CAEX,CACD,CAAA,CACH,EACC,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACD,EAAGiB,IAC7BR,EAAAA,IAAC,MAAA,CAAa,KAAK,MAAM,UAAWD,EAAAA,OAAO,KACxC,SAAAN,EAAU,MAAMe,EAAK,EAAGA,EAAK,EAAI,CAAC,EAAE,IAAKC,GAAM,CAC9C,MAAMC,EAAWpE,EAAQmE,EAAE,KAAK,OAAOnE,EAAO,KAAK,EAAI,GACjDqE,EAAW1B,EAAAA,WAAWwB,EAAE,KAAM3D,EAAKC,EAAKC,CAAY,EAC1D,OACEgD,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,WACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,IACP,CAACU,EAAE,SAAWV,EAAAA,OAAO,WACrBW,GAAYX,EAAAA,OAAO,YACnBU,EAAE,SAAWV,EAAAA,OAAO,SACpBY,GAAYZ,EAAAA,OAAO,WAAA,EAErB,SAAUU,EAAE,KAAK,OAAOhD,EAAS,KAAK,EAAI,EAAI,GAC9C,gBAAeiD,EACf,gBAAeC,GAAY,OAC3B,eAAcF,EAAE,QAAU,OAAS,OACnC,QAAS,IAAM,CAACE,GAAY9D,EAAS4D,EAAE,GAAG,EAEzC,SAAAA,EAAE,KAAK,KAAA,CAAK,EAhBRA,EAAE,GAAA,CAmBb,CAAC,CAAA,EAzBOD,CA0BV,CACD,CAAA,CAAA,CAAA,CACH,EAEJ,CAEJ"}
|
|
1
|
+
{"version":3,"file":"Calendar-lfpNwivC.cjs","sources":["../src/components/DatePicker/Calendar.tsx"],"sourcesContent":["import { useEffect, useRef, useState, type KeyboardEvent } from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type MessageKey } from '../../theme'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { buildMonthGrid, isDisabled, today, toISO, yearList, type Dayjs } from './dateUtils'\nimport styles from './DatePicker.module.css'\n\nexport interface CalendarProps {\n /** Currently selected date (UTC dayjs) or null. */\n value: Dayjs | null\n /** The month currently shown (UTC dayjs). */\n month: Dayjs\n /** Change the shown month. */\n onMonthChange: (month: Dayjs) => void\n /** Commit a selected date as an ISO `'YYYY-MM-DD'` string. */\n onSelect: (iso: string) => void\n min: Dayjs | null\n max: Dayjs | null\n disabledDate?: (iso: string) => boolean\n /** 0 = Sunday … 6 = Saturday. */\n weekStartsOn: number\n /** Focus the active cell on mount (when the popover opens). */\n autoFocus?: boolean\n /** Id of the element labelling the grid. */\n labelId?: string\n}\n\ntype View = 'day' | 'month' | 'year'\n\n/** Picks the day that should hold roving focus for a given month. */\nfunction focusableDay(value: Dayjs | null, month: Dayjs): Dayjs {\n if (value && value.isSame(month, 'month')) return value\n const now = today()\n if (now.isSame(month, 'month')) return now\n return month.startOf('month')\n}\n\n/** Number of columns in the month / year picker grids (drives Up/Down arrow steps). */\nconst PICK_COLS = 3\n\n/**\n * The calendar grid used by the date components. Three views — a `role=\"grid\"` **day** view with full\n * keyboard navigation (Arrows move days, Home/End the week, PageUp/Down the month, Shift+PageUp/Down\n * the year, Enter/Space to select), plus separate **month** and **year** picker views reached from the\n * header (the month and year labels are independently clickable). Picking a year advances to the month\n * view; picking a month returns to the day view. The year view lists every year in range and scrolls.\n * Controlled: the consumer owns `value` + `month`; `onSelect`/`onMonthChange` lift changes up.\n */\nexport function Calendar({\n value,\n month,\n onMonthChange,\n onSelect,\n min,\n max,\n disabledDate,\n weekStartsOn,\n autoFocus,\n labelId,\n}: CalendarProps) {\n const t = useT()\n const [view, setView] = useState<View>('day')\n const [focused, setFocused] = useState<Dayjs>(() => focusableDay(value, month))\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const focusOnRender = useRef(Boolean(autoFocus))\n\n // re-anchor the roving focus into the month whenever it changes from outside (nav buttons, pickers)\n useEffect(() => {\n setFocused((f) => (f.isSame(month, 'month') ? f : focusableDay(value, month)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [month])\n\n // move DOM focus to the roving cell after a keyboard move, a view switch, or the initial autoFocus\n useEffect(() => {\n if (!focusOnRender.current) return\n focusOnRender.current = false\n const el = bodyRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]')\n el?.focus()\n el?.scrollIntoView?.({ block: 'nearest' })\n }, [focused, view, month])\n\n const switchTo = (next: View) => {\n focusOnRender.current = true\n setView(next)\n }\n\n // ── navigation helpers ─────────────────────────────────────────────────────────────────────────\n const moveDay = (next: Dayjs) => {\n focusOnRender.current = true\n if (!next.isSame(month, 'month')) onMonthChange(next.startOf('month'))\n setFocused(next)\n }\n const stepMonthBy = (delta: number) => {\n const next = focused.add(delta, 'month')\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // keep the rendered grid + header in sync with focus\n }\n const stepYearBy = (delta: number) => {\n let year = focused.year() + delta\n if (min) year = Math.max(year, min.year())\n if (max) year = Math.min(year, max.year())\n const next = focused.year(year)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next.startOf('month')) // re-anchor the year window so focus never leaves it\n }\n\n const pickYear = (y: number) => {\n const next = month.year(y)\n focusOnRender.current = true\n setFocused(next)\n onMonthChange(next)\n setView('month') // picking a year advances to the month view\n }\n const pickMonth = (m: number) => {\n const next = month.month(m)\n focusOnRender.current = true\n setFocused(focusableDay(value, next))\n onMonthChange(next)\n setView('day') // picking a month returns to the day view\n }\n\n // ── keyboard ─────────────────────────────────────────────────────────────────────────────────────\n const handleDayKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const offsetInWeek = (focused.day() - weekStartsOn + 7) % 7\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n moveDay(focused.subtract(1, 'day'))\n break\n case 'ArrowRight':\n event.preventDefault()\n moveDay(focused.add(1, 'day'))\n break\n case 'ArrowUp':\n event.preventDefault()\n moveDay(focused.subtract(7, 'day'))\n break\n case 'ArrowDown':\n event.preventDefault()\n moveDay(focused.add(7, 'day'))\n break\n case 'Home':\n event.preventDefault()\n moveDay(focused.subtract(offsetInWeek, 'day'))\n break\n case 'End':\n event.preventDefault()\n moveDay(focused.add(6 - offsetInWeek, 'day'))\n break\n case 'PageUp':\n event.preventDefault()\n moveDay(focused.subtract(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'PageDown':\n event.preventDefault()\n moveDay(focused.add(1, event.shiftKey ? 'year' : 'month'))\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled(focused, min, max, disabledDate)) onSelect(toISO(focused))\n break\n }\n }\n\n const handleMonthKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepMonthBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepMonthBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepMonthBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepMonthBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickMonth(focused.month())\n break\n }\n }\n\n const handleYearKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n stepYearBy(-1)\n break\n case 'ArrowRight':\n event.preventDefault()\n stepYearBy(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n stepYearBy(-PICK_COLS)\n break\n case 'ArrowDown':\n event.preventDefault()\n stepYearBy(PICK_COLS)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n pickYear(focused.year())\n break\n }\n }\n\n // ── derived data (built once per render) ─────────────────────────────────────────────────────────\n const now = today()\n // month names + short weekday labels come from the i18n catalog (localized), not dayjs\n const monthName = (m: number) => t(`calendar.month${m}` as MessageKey)\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n t(`calendar.weekday${(weekStartsOn + i) % 7}` as MessageKey),\n )\n const monthGrid = view === 'day' ? buildMonthGrid(month, weekStartsOn) : []\n const months = view === 'month' ? Array.from({ length: 12 }, (_, m) => monthName(m)) : []\n const years = view === 'year' ? yearList(min, max, month.year()) : []\n\n return (\n <div className={styles.calendar}>\n <div className={styles.calHeader}>\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.prevMonth')}\n onClick={() => onMonthChange(month.subtract(1, 'month'))}\n >\n <Icon name=\"ArrowCircleLeft\" />\n </IconButton>\n )}\n\n <div className={styles.calTitleGroup}>\n {(view === 'day' || view === 'month') && (\n <button\n type=\"button\"\n id={labelId}\n className={styles.calTitle}\n onClick={() => switchTo('year')}\n >\n {month.format('YYYY')}\n </button>\n )}\n {view === 'day' && (\n <button type=\"button\" className={styles.calTitle} onClick={() => switchTo('month')}>\n {monthName(month.month())}\n </button>\n )}\n {view === 'year' && (\n <span id={labelId} className={styles.calTitleStatic}>\n {t('calendar.selectYear')}\n </span>\n )}\n </div>\n\n {view === 'day' && (\n <IconButton\n variant=\"text\"\n color=\"primary\"\n size=\"sm\"\n aria-label={t('calendar.nextMonth')}\n onClick={() => onMonthChange(month.add(1, 'month'))}\n >\n <Icon name=\"ArrowCircleRight\" />\n </IconButton>\n )}\n </div>\n\n {view === 'year' ? (\n <div\n ref={bodyRef}\n className={clsx(styles.pickGrid, styles.pickScroll)}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleYearKeyDown}\n >\n {years.map((y) => {\n const isSelected = value ? value.year() === y : false\n return (\n <button\n key={y}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && y === now.year() && styles.pickToday,\n )}\n tabIndex={y === focused.year() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n )\n })}\n </div>\n ) : view === 'month' ? (\n <div\n ref={bodyRef}\n className={styles.pickGrid}\n role=\"listbox\"\n aria-labelledby={labelId}\n onKeyDown={handleMonthKeyDown}\n >\n {months.map((label, m) => {\n const isSelected = value ? value.isSame(month.month(m), 'month') : false\n const isCurrent = now.isSame(month.month(m), 'month')\n return (\n <button\n key={label}\n type=\"button\"\n role=\"option\"\n className={clsx(\n styles.pickCell,\n isSelected && styles.pickSelected,\n !isSelected && isCurrent && styles.pickToday,\n )}\n tabIndex={m === focused.month() ? 0 : -1}\n aria-selected={isSelected}\n onClick={() => pickMonth(m)}\n >\n {label}\n </button>\n )\n })}\n </div>\n ) : (\n <div\n ref={bodyRef}\n className={styles.grid}\n role=\"grid\"\n aria-label={`${monthName(month.month())} ${month.format('YYYY')}`}\n onKeyDown={handleDayKeyDown}\n >\n <div className={styles.weekdays} role=\"row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, wk) => (\n <div key={wk} role=\"row\" className={styles.week}>\n {monthGrid.slice(wk * 7, wk * 7 + 7).map((d) => {\n const selected = value ? d.date.isSame(value, 'day') : false\n const disabled = isDisabled(d.date, min, max, disabledDate)\n return (\n <button\n key={d.iso}\n type=\"button\"\n role=\"gridcell\"\n className={clsx(\n styles.day,\n !d.inMonth && styles.dayOutside,\n selected && styles.daySelected,\n d.isToday && styles.dayToday,\n disabled && styles.dayDisabled,\n )}\n tabIndex={d.date.isSame(focused, 'day') ? 0 : -1}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n aria-current={d.isToday ? 'date' : undefined}\n onClick={() => !disabled && onSelect(d.iso)}\n >\n {d.date.date()}\n </button>\n )\n })}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["focusableDay","value","month","now","today","PICK_COLS","Calendar","onMonthChange","onSelect","min","max","disabledDate","weekStartsOn","autoFocus","labelId","t","useT","view","setView","useState","focused","setFocused","bodyRef","useRef","focusOnRender","useEffect","f","el","_a","_b","switchTo","next","moveDay","stepMonthBy","delta","stepYearBy","year","pickYear","y","pickMonth","m","handleDayKeyDown","event","offsetInWeek","isDisabled","toISO","handleMonthKeyDown","handleYearKeyDown","monthName","weekdays","_","i","monthGrid","buildMonthGrid","months","years","yearList","jsxs","styles","jsx","IconButton","Icon","clsx","isSelected","label","isCurrent","w","wk","d","selected","disabled"],"mappings":"wPA+BA,SAASA,EAAaC,EAAqBC,EAAqB,CAC9D,GAAID,GAASA,EAAM,OAAOC,EAAO,OAAO,EAAG,OAAOD,EAClD,MAAME,EAAMC,EAAAA,MAAA,EACZ,OAAID,EAAI,OAAOD,EAAO,OAAO,EAAUC,EAChCD,EAAM,QAAQ,OAAO,CAC9B,CAGA,MAAMG,EAAY,EAUX,SAASC,EAAS,CACvB,MAAAL,EACA,MAAAC,EACA,cAAAK,EACA,SAAAC,EACA,IAAAC,EACA,IAAAC,EACA,aAAAC,EACA,aAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAAkB,CAChB,MAAMC,EAAIC,EAAAA,KAAA,EACJ,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAe,KAAK,EACtC,CAACC,EAASC,CAAU,EAAIF,EAAAA,SAAgB,IAAMnB,EAAaC,EAAOC,CAAK,CAAC,EACxEoB,EAAUC,EAAAA,OAA8B,IAAI,EAC5CC,EAAgBD,EAAAA,OAAO,EAAQV,CAAU,EAG/CY,EAAAA,UAAU,IAAM,CACdJ,EAAYK,GAAOA,EAAE,OAAOxB,EAAO,OAAO,EAAIwB,EAAI1B,EAAaC,EAAOC,CAAK,CAAE,CAE/E,EAAG,CAACA,CAAK,CAAC,EAGVuB,EAAAA,UAAU,IAAM,SACd,GAAI,CAACD,EAAc,QAAS,OAC5BA,EAAc,QAAU,GACxB,MAAMG,GAAKC,EAAAN,EAAQ,UAAR,YAAAM,EAAiB,cAA2B,kBACvDD,GAAA,MAAAA,EAAI,SACJE,EAAAF,GAAA,YAAAA,EAAI,iBAAJ,MAAAE,EAAA,KAAAF,EAAqB,CAAE,MAAO,SAAA,EAChC,EAAG,CAACP,EAASH,EAAMf,CAAK,CAAC,EAEzB,MAAM4B,EAAYC,GAAe,CAC/BP,EAAc,QAAU,GACxBN,EAAQa,CAAI,CACd,EAGMC,EAAWD,GAAgB,CAC/BP,EAAc,QAAU,GACnBO,EAAK,OAAO7B,EAAO,OAAO,GAAGK,EAAcwB,EAAK,QAAQ,OAAO,CAAC,EACrEV,EAAWU,CAAI,CACjB,EACME,EAAeC,GAAkB,CACrC,MAAMH,EAAOX,EAAQ,IAAIc,EAAO,OAAO,EACvCV,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EACMI,EAAcD,GAAkB,CACpC,IAAIE,EAAOhB,EAAQ,KAAA,EAASc,EACxBzB,IAAK2B,EAAO,KAAK,IAAIA,EAAM3B,EAAI,MAAM,GACrCC,IAAK0B,EAAO,KAAK,IAAIA,EAAM1B,EAAI,MAAM,GACzC,MAAMqB,EAAOX,EAAQ,KAAKgB,CAAI,EAC9BZ,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,EAAK,QAAQ,OAAO,CAAC,CACrC,EAEMM,EAAYC,GAAc,CAC9B,MAAMP,EAAO7B,EAAM,KAAKoC,CAAC,EACzBd,EAAc,QAAU,GACxBH,EAAWU,CAAI,EACfxB,EAAcwB,CAAI,EAClBb,EAAQ,OAAO,CACjB,EACMqB,EAAaC,GAAc,CAC/B,MAAMT,EAAO7B,EAAM,MAAMsC,CAAC,EAC1BhB,EAAc,QAAU,GACxBH,EAAWrB,EAAaC,EAAO8B,CAAI,CAAC,EACpCxB,EAAcwB,CAAI,EAClBb,EAAQ,KAAK,CACf,EAGMuB,EAAoBC,GAAyC,CACjE,MAAMC,GAAgBvB,EAAQ,IAAA,EAAQR,EAAe,GAAK,EAC1D,OAAQ8B,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,aACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,UACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAG,KAAK,CAAC,EAClC,MACF,IAAK,YACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAG,KAAK,CAAC,EAC7B,MACF,IAAK,OACHsB,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAASuB,EAAc,KAAK,CAAC,EAC7C,MACF,IAAK,MACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAIuB,EAAc,KAAK,CAAC,EAC5C,MACF,IAAK,SACHD,EAAM,eAAA,EACNV,EAAQZ,EAAQ,SAAS,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EAC9D,MACF,IAAK,WACHA,EAAM,eAAA,EACNV,EAAQZ,EAAQ,IAAI,EAAGsB,EAAM,SAAW,OAAS,OAAO,CAAC,EACzD,MACF,IAAK,QACL,IAAK,IACHA,EAAM,eAAA,EACDE,EAAAA,WAAWxB,EAASX,EAAKC,EAAKC,CAAY,GAAGH,EAASqC,QAAMzB,CAAO,CAAC,EACzE,KAAA,CAEN,EAEM0B,EAAsBJ,GAAyC,CACnE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNT,EAAY,EAAE,EACd,MACF,IAAK,aACHS,EAAM,eAAA,EACNT,EAAY,CAAC,EACb,MACF,IAAK,UACHS,EAAM,eAAA,EACNT,EAAY,CAAC5B,CAAS,EACtB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNT,EAAY5B,CAAS,EACrB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNH,EAAUnB,EAAQ,OAAO,EACzB,KAAA,CAEN,EAEM2B,EAAqBL,GAAyC,CAClE,OAAQA,EAAM,IAAA,CACZ,IAAK,YACHA,EAAM,eAAA,EACNP,EAAW,EAAE,EACb,MACF,IAAK,aACHO,EAAM,eAAA,EACNP,EAAW,CAAC,EACZ,MACF,IAAK,UACHO,EAAM,eAAA,EACNP,EAAW,CAAC9B,CAAS,EACrB,MACF,IAAK,YACHqC,EAAM,eAAA,EACNP,EAAW9B,CAAS,EACpB,MACF,IAAK,QACL,IAAK,IACHqC,EAAM,eAAA,EACNL,EAASjB,EAAQ,MAAM,EACvB,KAAA,CAEN,EAGMjB,EAAMC,EAAAA,MAAA,EAEN4C,EAAaR,GAAczB,EAAE,iBAAiByB,CAAC,EAAgB,EAC/DS,EAAW,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACC,EAAGC,IAC7CpC,EAAE,oBAAoBH,EAAeuC,GAAK,CAAC,EAAgB,CAAA,EAEvDC,EAAYnC,IAAS,MAAQoC,EAAAA,eAAenD,EAAOU,CAAY,EAAI,CAAA,EACnE0C,EAASrC,IAAS,QAAU,MAAM,KAAK,CAAE,OAAQ,EAAA,EAAM,CAACiC,EAAGV,IAAMQ,EAAUR,CAAC,CAAC,EAAI,CAAA,EACjFe,EAAQtC,IAAS,OAASuC,EAAAA,SAAS/C,EAAKC,EAAKR,EAAM,KAAA,CAAM,EAAI,CAAA,EAEnE,OACEuD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,SACrB,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,UACpB,SAAA,CAAAzC,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,SAAS,EAAG,OAAO,CAAC,EAEvD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,iBAAA,CAAkB,CAAA,CAAA,EAIjCJ,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,OAAO,cACnB,SAAA,EAAAzC,IAAS,OAASA,IAAS,UAC3B0C,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,GAAI7C,EACJ,UAAW4C,EAAAA,OAAO,SAClB,QAAS,IAAM5B,EAAS,MAAM,EAE7B,SAAA5B,EAAM,OAAO,MAAM,CAAA,CAAA,EAGvBe,IAAS,OACR0C,EAAAA,IAAC,UAAO,KAAK,SAAS,UAAWD,SAAO,SAAU,QAAS,IAAM5B,EAAS,OAAO,EAC9E,WAAU5B,EAAM,MAAA,CAAO,EAC1B,EAEDe,IAAS,QACR0C,EAAAA,IAAC,OAAA,CAAK,GAAI7C,EAAS,UAAW4C,EAAAA,OAAO,eAClC,SAAA3C,EAAE,qBAAqB,CAAA,CAC1B,CAAA,EAEJ,EAECE,IAAS,OACR0C,EAAAA,IAACC,EAAAA,WAAA,CACC,QAAQ,OACR,MAAM,UACN,KAAK,KACL,aAAY7C,EAAE,oBAAoB,EAClC,QAAS,IAAMR,EAAcL,EAAM,IAAI,EAAG,OAAO,CAAC,EAElD,SAAAyD,EAAAA,IAACE,EAAAA,KAAA,CAAK,KAAK,kBAAA,CAAmB,CAAA,CAAA,CAChC,EAEJ,EAEC5C,IAAS,OACR0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWwC,EAAAA,KAAKJ,EAAAA,OAAO,SAAUA,EAAAA,OAAO,UAAU,EAClD,KAAK,UACL,kBAAiB5C,EACjB,UAAWiC,EAEV,SAAAQ,EAAM,IAAKjB,GAAM,CAChB,MAAMyB,EAAa9D,EAAQA,EAAM,KAAA,IAAWqC,EAAI,GAChD,OACEqB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAczB,IAAMnC,EAAI,KAAA,GAAUuD,EAAAA,OAAO,SAAA,EAE5C,SAAUpB,IAAMlB,EAAQ,KAAA,EAAS,EAAI,GACrC,gBAAe2C,EACf,QAAS,IAAM1B,EAASC,CAAC,EAExB,SAAAA,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAEDrB,IAAS,QACX0C,EAAAA,IAAC,MAAA,CACC,IAAKrC,EACL,UAAWoC,EAAAA,OAAO,SAClB,KAAK,UACL,kBAAiB5C,EACjB,UAAWgC,EAEV,SAAAQ,EAAO,IAAI,CAACU,EAAOxB,IAAM,CACxB,MAAMuB,EAAa9D,EAAQA,EAAM,OAAOC,EAAM,MAAMsC,CAAC,EAAG,OAAO,EAAI,GAC7DyB,EAAY9D,EAAI,OAAOD,EAAM,MAAMsC,CAAC,EAAG,OAAO,EACpD,OACEmB,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,SACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,SACPK,GAAcL,EAAAA,OAAO,aACrB,CAACK,GAAcE,GAAaP,SAAO,SAAA,EAErC,SAAUlB,IAAMpB,EAAQ,MAAA,EAAU,EAAI,GACtC,gBAAe2C,EACf,QAAS,IAAMxB,EAAUC,CAAC,EAEzB,SAAAwB,CAAA,EAZIA,CAAA,CAeX,CAAC,CAAA,CAAA,EAGHP,EAAAA,KAAC,MAAA,CACC,IAAKnC,EACL,UAAWoC,EAAAA,OAAO,KAClB,KAAK,OACL,aAAY,GAAGV,EAAU9C,EAAM,MAAA,CAAO,CAAC,IAAIA,EAAM,OAAO,MAAM,CAAC,GAC/D,UAAWuC,EAEX,SAAA,CAAAkB,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAAA,OAAO,SAAU,KAAK,MACnC,SAAAT,EAAS,IAAI,CAACiB,EAAGf,IAChBQ,EAAAA,IAAC,OAAA,CAAa,KAAK,eAAe,UAAWD,EAAAA,OAAO,QACjD,SAAAQ,CAAA,EADQf,CAEX,CACD,CAAA,CACH,EACC,MAAM,KAAK,CAAE,OAAQ,CAAA,EAAK,CAACD,EAAGiB,IAC7BR,EAAAA,IAAC,MAAA,CAAa,KAAK,MAAM,UAAWD,EAAAA,OAAO,KACxC,SAAAN,EAAU,MAAMe,EAAK,EAAGA,EAAK,EAAI,CAAC,EAAE,IAAKC,GAAM,CAC9C,MAAMC,EAAWpE,EAAQmE,EAAE,KAAK,OAAOnE,EAAO,KAAK,EAAI,GACjDqE,EAAW1B,EAAAA,WAAWwB,EAAE,KAAM3D,EAAKC,EAAKC,CAAY,EAC1D,OACEgD,EAAAA,IAAC,SAAA,CAEC,KAAK,SACL,KAAK,WACL,UAAWG,EAAAA,KACTJ,EAAAA,OAAO,IACP,CAACU,EAAE,SAAWV,EAAAA,OAAO,WACrBW,GAAYX,EAAAA,OAAO,YACnBU,EAAE,SAAWV,EAAAA,OAAO,SACpBY,GAAYZ,EAAAA,OAAO,WAAA,EAErB,SAAUU,EAAE,KAAK,OAAOhD,EAAS,KAAK,EAAI,EAAI,GAC9C,gBAAeiD,EACf,gBAAeC,GAAY,OAC3B,eAAcF,EAAE,QAAU,OAAS,OACnC,QAAS,IAAM,CAACE,GAAY9D,EAAS4D,EAAE,GAAG,EAEzC,SAAAA,EAAE,KAAK,KAAA,CAAK,EAhBRA,EAAE,GAAA,CAmBb,CAAC,CAAA,EAzBOD,CA0BV,CACD,CAAA,CAAA,CAAA,CACH,EAEJ,CAEJ"}
|
|
@@ -3,7 +3,7 @@ import { forwardRef as B, useState as O, useId as F } from "react";
|
|
|
3
3
|
import { clsx as v } from "clsx";
|
|
4
4
|
import { I as x } from "./Icon-DaTvzLBu.js";
|
|
5
5
|
import { a as H } from "./names-r21QPjcU.js";
|
|
6
|
-
import { I as E } from "./IconButton-
|
|
6
|
+
import { I as E } from "./IconButton-CBp8QuTO.js";
|
|
7
7
|
const R = "_card_voi4g_3", U = "_flat_voi4g_14", q = "_header_voi4g_18", G = "_headerDivided_voi4g_27", J = "_headerMain_voi4g_31", K = "_icon_voi4g_39", L = "_headerText_voi4g_43", P = "_title_voi4g_51", Q = "_subtitle_voi4g_64", V = "_actions_voi4g_78", W = "_chevron_voi4g_85", X = "_collapsible_voi4g_93", Y = "_collapsed_voi4g_98", Z = "_collapsibleInner_voi4g_101", $ = "_foldable_voi4g_110", ee = "_body_voi4g_114", oe = "_footer_voi4g_118", ae = "_footerStart_voi4g_127", le = "_footerEnd_voi4g_128", e = {
|
|
8
8
|
card: R,
|
|
9
9
|
flat: U,
|
|
@@ -115,4 +115,4 @@ const R = "_card_voi4g_3", U = "_flat_voi4g_14", q = "_header_voi4g_18", G = "_h
|
|
|
115
115
|
export {
|
|
116
116
|
ve as C
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=Card-
|
|
118
|
+
//# sourceMappingURL=Card-BRJV2JZE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card-
|
|
1
|
+
{"version":3,"file":"Card-BRJV2JZE.js","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n className,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = children != null && children !== ''\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(styles.card, flat && styles.flat, isCollapsed && styles.collapsed, className)}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={isCollapsed ? 'Expand' : 'Collapse'}\n aria-expanded={!isCollapsed}\n aria-controls={collapsibleId}\n onClick={toggle}\n >\n <Icon\n name=\"ArrowUp3\"\n className={styles.chevron}\n data-collapsed={isCollapsed ? 'true' : 'false'}\n />\n </IconButton>\n )}\n </div>\n )}\n </div>\n )}\n {hasCollapsibleContent && (\n <div\n id={collapsibleId}\n className={clsx(styles.collapsible, collapsible && styles.foldable)}\n >\n <div className={styles.collapsibleInner}>\n {hasBody && <div className={styles.body}>{children}</div>}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","collapsible","collapsed","defaultCollapsed","onCollapsedChange","className","children","props","ref","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const s=require("react/jsx-runtime"),_=require("react"),v=require("clsx"),I=require("./Icon-BVULqOJD.cjs"),k=require("./names-BJnFU_5m.cjs"),p=require("./IconButton-
|
|
2
|
-
//# sourceMappingURL=Card-
|
|
1
|
+
"use strict";const s=require("react/jsx-runtime"),_=require("react"),v=require("clsx"),I=require("./Icon-BVULqOJD.cjs"),k=require("./names-BJnFU_5m.cjs"),p=require("./IconButton-B87ipBK3.cjs"),z="_card_voi4g_3",O="_flat_voi4g_14",R="_header_voi4g_18",F="_headerDivided_voi4g_27",H="_headerMain_voi4g_31",U="_icon_voi4g_39",G="_headerText_voi4g_43",J="_title_voi4g_51",K="_subtitle_voi4g_64",L="_actions_voi4g_78",P="_chevron_voi4g_85",Q="_collapsible_voi4g_93",V="_collapsed_voi4g_98",W="_collapsibleInner_voi4g_101",X="_foldable_voi4g_110",Y="_body_voi4g_114",Z="_footer_voi4g_118",$="_footerStart_voi4g_127",ee="_footerEnd_voi4g_128",e={card:z,flat:O,header:R,headerDivided:F,headerMain:H,icon:U,headerText:G,title:J,subtitle:K,actions:L,chevron:P,collapsible:Q,collapsed:V,collapsibleInner:W,foldable:X,body:Y,footer:Z,footerStart:$,footerEnd:ee},se=new Set(k.ICON_NAMES),oe=_.forwardRef(function({title:a,subtitle:t,icon:n,color:E="accent",flat:y=!1,actions:c,footer:h,footerStart:u,collapsible:l=!1,collapsed:x,defaultCollapsed:S=!1,onCollapsedChange:i,className:q,children:r,...M},D){const f=x!==void 0,[T,B]=_.useState(S),o=l&&(f?x:T),m=_.useId(),C=()=>{const b=!o;f||B(b),i==null||i(b)},d=n==null?null:typeof n=="string"&&se.has(n)?s.jsx(I.Icon,{name:n}):n,w=a!=null||t!=null||d!=null||c!=null||l,N=r!=null&&r!=="",g=h!=null||u!=null,j=N||g,A=j&&!o;return s.jsxs("div",{ref:D,className:v.clsx(e.card,y&&e.flat,o&&e.collapsed,q),...M,children:[w&&s.jsxs("div",{className:v.clsx(e.header,A&&e.headerDivided),children:[s.jsxs("div",{className:e.headerMain,children:[d!=null&&s.jsx(p.IconButton,{variant:"filled",size:"sm",color:E,nonClickable:!0,"aria-hidden":!0,className:e.icon,children:d}),(a!=null||t!=null)&&s.jsxs("div",{className:e.headerText,children:[a!=null&&s.jsx("div",{className:e.title,children:a}),t!=null&&s.jsx("div",{className:e.subtitle,children:t})]})]}),(c!=null||l)&&s.jsxs("div",{className:e.actions,children:[!o&&c,l&&s.jsx(p.IconButton,{variant:"text",size:"sm","aria-label":o?"Expand":"Collapse","aria-expanded":!o,"aria-controls":m,onClick:C,children:s.jsx(I.Icon,{name:"ArrowUp3",className:e.chevron,"data-collapsed":o?"true":"false"})})]})]}),j&&s.jsx("div",{id:m,className:v.clsx(e.collapsible,l&&e.foldable),children:s.jsxs("div",{className:e.collapsibleInner,children:[N&&s.jsx("div",{className:e.body,children:r}),g&&s.jsxs("div",{className:e.footer,children:[s.jsx("div",{className:e.footerStart,children:u}),s.jsx("div",{className:e.footerEnd,children:h})]})]})})]})});exports.Card=oe;
|
|
2
|
+
//# sourceMappingURL=Card-KvvNlchc.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card-
|
|
1
|
+
{"version":3,"file":"Card-KvvNlchc.cjs","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n className,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = children != null && children !== ''\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(styles.card, flat && styles.flat, isCollapsed && styles.collapsed, className)}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={isCollapsed ? 'Expand' : 'Collapse'}\n aria-expanded={!isCollapsed}\n aria-controls={collapsibleId}\n onClick={toggle}\n >\n <Icon\n name=\"ArrowUp3\"\n className={styles.chevron}\n data-collapsed={isCollapsed ? 'true' : 'false'}\n />\n </IconButton>\n )}\n </div>\n )}\n </div>\n )}\n {hasCollapsibleContent && (\n <div\n id={collapsibleId}\n className={clsx(styles.collapsible, collapsible && styles.foldable)}\n >\n <div className={styles.collapsibleInner}>\n {hasBody && <div className={styles.body}>{children}</div>}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","collapsible","collapsed","defaultCollapsed","onCollapsedChange","className","children","props","ref","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { clsx as
|
|
4
|
-
import { I as
|
|
5
|
-
import { a as
|
|
6
|
-
const
|
|
7
|
-
chip:
|
|
8
|
-
sm:
|
|
1
|
+
import { jsxs as C, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as y } from "react";
|
|
3
|
+
import { clsx as A } from "clsx";
|
|
4
|
+
import { I as B } from "./Icon-DaTvzLBu.js";
|
|
5
|
+
import { a as N } from "./ConfigProvider-DL9fylMo.js";
|
|
6
|
+
const z = "_chip_1utbf_3", j = "_sm_1utbf_20", T = "_md_1utbf_25", $ = "_lg_1utbf_30", E = "_contained_1utbf_37", M = "_filled_1utbf_42", P = "_outlined_1utbf_46", R = "_text_1utbf_51", q = "_clickable_1utbf_57", D = "_disabled_1utbf_82", F = "_startIcon_1utbf_89", G = "_avatar_1utbf_95", H = "_withAvatar_1utbf_102", J = "_withDelete_1utbf_106", L = "_deleteBtn_1utbf_127", t = {
|
|
7
|
+
chip: z,
|
|
8
|
+
sm: j,
|
|
9
9
|
md: T,
|
|
10
10
|
lg: $,
|
|
11
11
|
contained: E,
|
|
@@ -19,36 +19,36 @@ const N = "_chip_1yjgf_3", z = "_sm_1yjgf_20", T = "_md_1yjgf_25", $ = "_lg_1yjg
|
|
|
19
19
|
withAvatar: H,
|
|
20
20
|
withDelete: J,
|
|
21
21
|
deleteBtn: L
|
|
22
|
-
}, X =
|
|
23
|
-
variant:
|
|
22
|
+
}, X = y(function({
|
|
23
|
+
variant: u = "filled",
|
|
24
24
|
color: r = "primary",
|
|
25
25
|
size: _ = "md",
|
|
26
|
-
clickable:
|
|
26
|
+
clickable: d = !1,
|
|
27
27
|
disabled: c = !1,
|
|
28
28
|
startIcon: f,
|
|
29
29
|
avatar: o,
|
|
30
30
|
onDelete: l,
|
|
31
|
-
deleteIcon:
|
|
32
|
-
deleteLabel:
|
|
33
|
-
deleteTabIndex:
|
|
31
|
+
deleteIcon: b,
|
|
32
|
+
deleteLabel: m,
|
|
33
|
+
deleteTabIndex: p,
|
|
34
34
|
className: h,
|
|
35
|
-
style:
|
|
35
|
+
style: v,
|
|
36
36
|
children: s,
|
|
37
37
|
onKeyDown: i,
|
|
38
|
-
...
|
|
39
|
-
},
|
|
40
|
-
const
|
|
38
|
+
...x
|
|
39
|
+
}, k) {
|
|
40
|
+
const w = N(), e = d && !c, g = (a) => {
|
|
41
41
|
a.stopPropagation(), c || l == null || l();
|
|
42
|
-
},
|
|
42
|
+
}, I = (a) => {
|
|
43
43
|
e && (a.key === "Enter" || a.key === " ") && (a.preventDefault(), a.currentTarget.click()), i == null || i(a);
|
|
44
44
|
};
|
|
45
|
-
return /* @__PURE__ */
|
|
45
|
+
return /* @__PURE__ */ C(
|
|
46
46
|
"div",
|
|
47
47
|
{
|
|
48
|
-
ref:
|
|
49
|
-
className:
|
|
48
|
+
ref: k,
|
|
49
|
+
className: A(
|
|
50
50
|
t.chip,
|
|
51
|
-
t[
|
|
51
|
+
t[u],
|
|
52
52
|
t[_],
|
|
53
53
|
e && t.clickable,
|
|
54
54
|
c && t.disabled,
|
|
@@ -59,13 +59,13 @@ const N = "_chip_1yjgf_3", z = "_sm_1yjgf_20", T = "_md_1yjgf_25", $ = "_lg_1yjg
|
|
|
59
59
|
style: {
|
|
60
60
|
"--tz-btn-rgb": `var(--tz-color-${r}-rgb)`,
|
|
61
61
|
"--tz-btn-on": `var(--tz-color-${r}-contrast, #fff)`,
|
|
62
|
-
...
|
|
62
|
+
...v
|
|
63
63
|
},
|
|
64
64
|
role: e ? "button" : void 0,
|
|
65
65
|
tabIndex: e ? 0 : void 0,
|
|
66
66
|
"aria-disabled": c || void 0,
|
|
67
|
-
onKeyDown:
|
|
68
|
-
...
|
|
67
|
+
onKeyDown: I,
|
|
68
|
+
...x,
|
|
69
69
|
children: [
|
|
70
70
|
o ? /* @__PURE__ */ n("span", { className: t.avatar, children: o }) : f ? /* @__PURE__ */ n("span", { className: t.startIcon, children: f }) : null,
|
|
71
71
|
s != null && s !== "" ? /* @__PURE__ */ n("span", { children: s }) : null,
|
|
@@ -74,12 +74,12 @@ const N = "_chip_1yjgf_3", z = "_sm_1yjgf_20", T = "_md_1yjgf_25", $ = "_lg_1yjg
|
|
|
74
74
|
{
|
|
75
75
|
type: "button",
|
|
76
76
|
className: t.deleteBtn,
|
|
77
|
-
onClick:
|
|
77
|
+
onClick: g,
|
|
78
78
|
onMouseDown: (a) => a.preventDefault(),
|
|
79
|
-
"aria-label":
|
|
80
|
-
tabIndex:
|
|
79
|
+
"aria-label": m ?? w("common.remove"),
|
|
80
|
+
tabIndex: p,
|
|
81
81
|
disabled: c,
|
|
82
|
-
children:
|
|
82
|
+
children: b ?? /* @__PURE__ */ n(B, { name: "CloseCircle", size: _ })
|
|
83
83
|
}
|
|
84
84
|
) : null
|
|
85
85
|
]
|
|
@@ -89,4 +89,4 @@ const N = "_chip_1yjgf_3", z = "_sm_1yjgf_20", T = "_md_1yjgf_25", $ = "_lg_1yjg
|
|
|
89
89
|
export {
|
|
90
90
|
X as C
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=Chip-
|
|
92
|
+
//# sourceMappingURL=Chip-CQ4cYVl_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-
|
|
1
|
+
{"version":3,"file":"Chip-CQ4cYVl_.js","sources":["../src/components/Chip/Chip.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport styles from './Chip.module.css'\n\nexport type ChipVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ChipSize = 'sm' | 'md' | 'lg'\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Visual style. Defaults to `filled` (a soft tinted chip). */\n variant?: ChipVariant\n /** Theme palette token that tints the chip. Defaults to `primary`. */\n color?: ThemeColor\n /** Preset size — height + font. Defaults to `md`. */\n size?: ChipSize\n /** Makes the chip interactive (hover, pointer, keyboard, `onClick`). Off by default (a static tag). */\n clickable?: boolean\n /** Dims the chip and disables all interaction. */\n disabled?: boolean\n /** Leading icon (e.g. an `<Icon />`). Ignored when `avatar` is set. */\n startIcon?: ReactNode\n /** Leading avatar (e.g. an `<Avatar />`), sized to the chip and flush to the left. */\n avatar?: ReactNode\n /** When provided, shows a trailing delete button that calls this (its click won't trigger `onClick`). */\n onDelete?: () => void\n /** Custom delete icon. Defaults to a `CloseCircle`. */\n deleteIcon?: ReactNode\n /** Accessible label for the delete button. Defaults to `\"Remove\"`. */\n deleteLabel?: string\n /** Tab index for the delete button — pass `-1` when the chip lives inside a composite widget (e.g. a multi-select) that owns keyboard focus. */\n deleteTabIndex?: number\n /** Chip label. */\n children?: ReactNode\n}\n\n/**\n * A compact tag/token. Static by default; `clickable` makes it an interactive `role=\"button\"`\n * (hover + Enter/Space). Supports a leading `startIcon` or `avatar` and a trailing delete button via\n * `onDelete`. Tinted by `color` through the shared `--tz-btn-rgb` / `--tz-btn-on` pattern across the\n * four standard variants. Token-only styling.\n */\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n clickable = false,\n disabled = false,\n startIcon,\n avatar,\n onDelete,\n deleteIcon,\n deleteLabel,\n deleteTabIndex,\n className,\n style,\n children,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const t = useT()\n const interactive = clickable && !disabled\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n if (!disabled) onDelete?.()\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (interactive && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.chip,\n styles[variant],\n styles[size],\n interactive && styles.clickable,\n disabled && styles.disabled,\n avatar && styles.withAvatar,\n onDelete && styles.withDelete,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {avatar ? (\n <span className={styles.avatar}>{avatar}</span>\n ) : startIcon ? (\n <span className={styles.startIcon}>{startIcon}</span>\n ) : null}\n {children != null && children !== '' ? <span>{children}</span> : null}\n {onDelete ? (\n <button\n type=\"button\"\n className={styles.deleteBtn}\n onClick={handleDelete}\n onMouseDown={(event) => event.preventDefault()}\n aria-label={deleteLabel ?? t('common.remove')}\n tabIndex={deleteTabIndex}\n disabled={disabled}\n >\n {deleteIcon ?? <Icon name=\"CloseCircle\" size={size} />}\n </button>\n ) : null}\n </div>\n )\n})\n"],"names":["Chip","forwardRef","variant","color","size","clickable","disabled","startIcon","avatar","onDelete","deleteIcon","deleteLabel","deleteTabIndex","className","style","children","onKeyDown","props","ref","t","useT","interactive","handleDelete","event","handleKeyDown","jsxs","clsx","styles","jsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;GAiDaA,IAAOC,EAAsC,SACxD;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAIC,EAAA,GACJC,IAAchB,KAAa,CAACC,GAE5BgB,IAAe,CAACC,MAAyC;AAC7D,IAAAA,EAAM,gBAAA,GACDjB,KAAUG,KAAA,QAAAA;AAAA,EACjB,GAEMe,IAAgB,CAACD,MAAyC;AAC9D,IAAIF,MAAgBE,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACzDA,EAAM,eAAA,GACNA,EAAM,cAAc,MAAA,IAEtBP,KAAA,QAAAA,EAAYO;AAAA,EACd;AAEA,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAP;AAAA,MACA,WAAWQ;AAAA,QACTC,EAAO;AAAA,QACPA,EAAOzB,CAAO;AAAA,QACdyB,EAAOvB,CAAI;AAAA,QACXiB,KAAeM,EAAO;AAAA,QACtBrB,KAAYqB,EAAO;AAAA,QACnBnB,KAAUmB,EAAO;AAAA,QACjBlB,KAAYkB,EAAO;AAAA,QACnBd;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,gBAAgB,kBAAkBV,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGW;AAAA,MAAA;AAAA,MAGP,MAAMO,IAAc,WAAW;AAAA,MAC/B,UAAUA,IAAc,IAAI;AAAA,MAC5B,iBAAef,KAAY;AAAA,MAC3B,WAAWkB;AAAA,MACV,GAAGP;AAAA,MAEH,UAAA;AAAA,QAAAT,IACC,gBAAAoB,EAAC,QAAA,EAAK,WAAWD,EAAO,QAAS,UAAAnB,GAAO,IACtCD,IACF,gBAAAqB,EAAC,QAAA,EAAK,WAAWD,EAAO,WAAY,aAAU,IAC5C;AAAA,QACHZ,KAAY,QAAQA,MAAa,KAAK,gBAAAa,EAAC,QAAA,EAAM,UAAAb,GAAS,IAAU;AAAA,QAChEN,IACC,gBAAAmB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWD,EAAO;AAAA,YAClB,SAASL;AAAA,YACT,aAAa,CAACC,MAAUA,EAAM,eAAA;AAAA,YAC9B,cAAYZ,KAAeQ,EAAE,eAAe;AAAA,YAC5C,UAAUP;AAAA,YACV,UAAAN;AAAA,YAEC,UAAAI,KAAc,gBAAAkB,EAACC,GAAA,EAAK,MAAK,eAAc,MAAAzB,EAAA,CAAY;AAAA,UAAA;AAAA,QAAA,IAEpD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const c=require("react/jsx-runtime"),C=require("react"),I=require("clsx"),q=require("./Icon-BVULqOJD.cjs"),y=require("./ConfigProvider-BicoaBLj.cjs"),A="_chip_1utbf_3",B="_sm_1utbf_20",N="_md_1utbf_25",z="_lg_1utbf_30",P="_contained_1utbf_37",R="_filled_1utbf_42",T="_outlined_1utbf_46",$="_text_1utbf_51",E="_clickable_1utbf_57",M="_disabled_1utbf_82",D="_startIcon_1utbf_89",F="_avatar_1utbf_95",G="_withAvatar_1utbf_102",H="_withDelete_1utbf_106",J="_deleteBtn_1utbf_127",t={chip:A,sm:B,md:N,lg:z,contained:P,filled:R,outlined:T,text:$,clickable:E,disabled:M,startIcon:D,avatar:F,withAvatar:G,withDelete:H,deleteBtn:J},L=C.forwardRef(function({variant:d="filled",color:r="primary",size:_="md",clickable:f=!1,disabled:n=!1,startIcon:u,avatar:l,onDelete:s,deleteIcon:b,deleteLabel:h,deleteTabIndex:m,className:p,style:x,children:i,onKeyDown:o,...v},g){const k=y.useT(),a=f&&!n,w=e=>{e.stopPropagation(),n||s==null||s()},j=e=>{a&&(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.currentTarget.click()),o==null||o(e)};return c.jsxs("div",{ref:g,className:I.clsx(t.chip,t[d],t[_],a&&t.clickable,n&&t.disabled,l&&t.withAvatar,s&&t.withDelete,p),style:{"--tz-btn-rgb":`var(--tz-color-${r}-rgb)`,"--tz-btn-on":`var(--tz-color-${r}-contrast, #fff)`,...x},role:a?"button":void 0,tabIndex:a?0:void 0,"aria-disabled":n||void 0,onKeyDown:j,...v,children:[l?c.jsx("span",{className:t.avatar,children:l}):u?c.jsx("span",{className:t.startIcon,children:u}):null,i!=null&&i!==""?c.jsx("span",{children:i}):null,s?c.jsx("button",{type:"button",className:t.deleteBtn,onClick:w,onMouseDown:e=>e.preventDefault(),"aria-label":h??k("common.remove"),tabIndex:m,disabled:n,children:b??c.jsx(q.Icon,{name:"CloseCircle",size:_})}):null]})});exports.Chip=L;
|
|
2
|
+
//# sourceMappingURL=Chip-CYz4vxHm.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-
|
|
1
|
+
{"version":3,"file":"Chip-CYz4vxHm.cjs","sources":["../src/components/Chip/Chip.tsx"],"sourcesContent":["import {\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT, type ThemeColor } from '../../theme'\nimport { Icon } from '../Icon'\nimport styles from './Chip.module.css'\n\nexport type ChipVariant = 'contained' | 'filled' | 'outlined' | 'text'\nexport type ChipSize = 'sm' | 'md' | 'lg'\n\nexport interface ChipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /** Visual style. Defaults to `filled` (a soft tinted chip). */\n variant?: ChipVariant\n /** Theme palette token that tints the chip. Defaults to `primary`. */\n color?: ThemeColor\n /** Preset size — height + font. Defaults to `md`. */\n size?: ChipSize\n /** Makes the chip interactive (hover, pointer, keyboard, `onClick`). Off by default (a static tag). */\n clickable?: boolean\n /** Dims the chip and disables all interaction. */\n disabled?: boolean\n /** Leading icon (e.g. an `<Icon />`). Ignored when `avatar` is set. */\n startIcon?: ReactNode\n /** Leading avatar (e.g. an `<Avatar />`), sized to the chip and flush to the left. */\n avatar?: ReactNode\n /** When provided, shows a trailing delete button that calls this (its click won't trigger `onClick`). */\n onDelete?: () => void\n /** Custom delete icon. Defaults to a `CloseCircle`. */\n deleteIcon?: ReactNode\n /** Accessible label for the delete button. Defaults to `\"Remove\"`. */\n deleteLabel?: string\n /** Tab index for the delete button — pass `-1` when the chip lives inside a composite widget (e.g. a multi-select) that owns keyboard focus. */\n deleteTabIndex?: number\n /** Chip label. */\n children?: ReactNode\n}\n\n/**\n * A compact tag/token. Static by default; `clickable` makes it an interactive `role=\"button\"`\n * (hover + Enter/Space). Supports a leading `startIcon` or `avatar` and a trailing delete button via\n * `onDelete`. Tinted by `color` through the shared `--tz-btn-rgb` / `--tz-btn-on` pattern across the\n * four standard variants. Token-only styling.\n */\nexport const Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n clickable = false,\n disabled = false,\n startIcon,\n avatar,\n onDelete,\n deleteIcon,\n deleteLabel,\n deleteTabIndex,\n className,\n style,\n children,\n onKeyDown,\n ...props\n },\n ref,\n) {\n const t = useT()\n const interactive = clickable && !disabled\n\n const handleDelete = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation()\n if (!disabled) onDelete?.()\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (interactive && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault()\n event.currentTarget.click()\n }\n onKeyDown?.(event)\n }\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.chip,\n styles[variant],\n styles[size],\n interactive && styles.clickable,\n disabled && styles.disabled,\n avatar && styles.withAvatar,\n onDelete && styles.withDelete,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {avatar ? (\n <span className={styles.avatar}>{avatar}</span>\n ) : startIcon ? (\n <span className={styles.startIcon}>{startIcon}</span>\n ) : null}\n {children != null && children !== '' ? <span>{children}</span> : null}\n {onDelete ? (\n <button\n type=\"button\"\n className={styles.deleteBtn}\n onClick={handleDelete}\n onMouseDown={(event) => event.preventDefault()}\n aria-label={deleteLabel ?? t('common.remove')}\n tabIndex={deleteTabIndex}\n disabled={disabled}\n >\n {deleteIcon ?? <Icon name=\"CloseCircle\" size={size} />}\n </button>\n ) : null}\n </div>\n )\n})\n"],"names":["Chip","forwardRef","variant","color","size","clickable","disabled","startIcon","avatar","onDelete","deleteIcon","deleteLabel","deleteTabIndex","className","style","children","onKeyDown","props","ref","t","useT","interactive","handleDelete","event","handleKeyDown","jsxs","clsx","styles","jsx","Icon"],"mappings":"2nBAiDaA,EAAOC,EAAAA,WAAsC,SACxD,CACE,QAAAC,EAAU,SACV,MAAAC,EAAQ,UACR,KAAAC,EAAO,KACP,UAAAC,EAAY,GACZ,SAAAC,EAAW,GACX,UAAAC,EACA,OAAAC,EACA,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,eAAAC,EACA,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACJC,EAAchB,GAAa,CAACC,EAE5BgB,EAAgBC,GAAyC,CAC7DA,EAAM,gBAAA,EACDjB,GAAUG,GAAA,MAAAA,GACjB,EAEMe,EAAiBD,GAAyC,CAC1DF,IAAgBE,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACzDA,EAAM,eAAA,EACNA,EAAM,cAAc,MAAA,GAEtBP,GAAA,MAAAA,EAAYO,EACd,EAEA,OACEE,EAAAA,KAAC,MAAA,CACC,IAAAP,EACA,UAAWQ,EAAAA,KACTC,EAAO,KACPA,EAAOzB,CAAO,EACdyB,EAAOvB,CAAI,EACXiB,GAAeM,EAAO,UACtBrB,GAAYqB,EAAO,SACnBnB,GAAUmB,EAAO,WACjBlB,GAAYkB,EAAO,WACnBd,CAAA,EAEF,MACE,CACE,eAAgB,kBAAkBV,CAAK,QACvC,cAAe,kBAAkBA,CAAK,mBACtC,GAAGW,CAAA,EAGP,KAAMO,EAAc,SAAW,OAC/B,SAAUA,EAAc,EAAI,OAC5B,gBAAef,GAAY,OAC3B,UAAWkB,EACV,GAAGP,EAEH,SAAA,CAAAT,EACCoB,EAAAA,IAAC,OAAA,CAAK,UAAWD,EAAO,OAAS,SAAAnB,EAAO,EACtCD,EACFqB,MAAC,OAAA,CAAK,UAAWD,EAAO,UAAY,WAAU,EAC5C,KACHZ,GAAY,MAAQA,IAAa,GAAKa,EAAAA,IAAC,OAAA,CAAM,SAAAb,EAAS,EAAU,KAChEN,EACCmB,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAWD,EAAO,UAClB,QAASL,EACT,YAAcC,GAAUA,EAAM,eAAA,EAC9B,aAAYZ,GAAeQ,EAAE,eAAe,EAC5C,SAAUP,EACV,SAAAN,EAEC,SAAAI,GAAckB,MAACC,EAAAA,KAAA,CAAK,KAAK,cAAc,KAAAzB,CAAA,CAAY,CAAA,CAAA,EAEpD,IAAA,CAAA,CAAA,CAGV,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { jsx as t, jsxs as y } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as P, createContext as R, forwardRef as T, useState as w, useId as H } from "react";
|
|
3
|
+
import { clsx as $ } from "clsx";
|
|
4
|
+
import { u as J } from "./formContext-B7ln1Miy.js";
|
|
5
|
+
import { T as K } from "./Typography-Cta6Rg4L.js";
|
|
6
|
+
import { a as Q } from "./names-r21QPjcU.js";
|
|
7
|
+
import { I as U } from "./Icon-DaTvzLBu.js";
|
|
8
|
+
const F = R(null);
|
|
9
|
+
function W() {
|
|
10
|
+
return P(F);
|
|
11
|
+
}
|
|
12
|
+
const X = "_group_fjrqx_2", Y = "_groupLabel_fjrqx_8", Z = "_required_fjrqx_13", ee = "_grid_fjrqx_17", re = "_card_fjrqx_24", se = "_disabled_fjrqx_42", te = "_selected_fjrqx_42", oe = "_input_fjrqx_51", le = "_error_fjrqx_55", ae = "_left_fjrqx_67", ce = "_text_fjrqx_71", ie = "_sm_fjrqx_77", ne = "_md_fjrqx_85", de = "_lg_fjrqx_93", _e = "_indicator_fjrqx_117", fe = "_radioDot_fjrqx_162", me = "_iconBox_fjrqx_185", ue = "_label_fjrqx_212", xe = "_description_fjrqx_219", r = {
|
|
13
|
+
group: X,
|
|
14
|
+
groupLabel: Y,
|
|
15
|
+
required: Z,
|
|
16
|
+
grid: ee,
|
|
17
|
+
card: re,
|
|
18
|
+
disabled: se,
|
|
19
|
+
selected: te,
|
|
20
|
+
input: oe,
|
|
21
|
+
error: le,
|
|
22
|
+
left: ae,
|
|
23
|
+
text: ce,
|
|
24
|
+
sm: ie,
|
|
25
|
+
md: ne,
|
|
26
|
+
lg: de,
|
|
27
|
+
indicator: _e,
|
|
28
|
+
radioDot: fe,
|
|
29
|
+
iconBox: me,
|
|
30
|
+
label: ue,
|
|
31
|
+
description: xe
|
|
32
|
+
}, pe = new Set(Q), qe = T(function({
|
|
33
|
+
value: l,
|
|
34
|
+
label: n,
|
|
35
|
+
description: d,
|
|
36
|
+
icon: o,
|
|
37
|
+
align: a,
|
|
38
|
+
color: q,
|
|
39
|
+
size: b,
|
|
40
|
+
error: g,
|
|
41
|
+
checked: _,
|
|
42
|
+
onChange: f,
|
|
43
|
+
name: S,
|
|
44
|
+
disabled: I,
|
|
45
|
+
className: z,
|
|
46
|
+
style: A,
|
|
47
|
+
...B
|
|
48
|
+
}, D) {
|
|
49
|
+
const e = W(), h = q ?? (e == null ? void 0 : e.color) ?? "primary", j = b ?? (e == null ? void 0 : e.size) ?? "md", v = g ?? (e == null ? void 0 : e.error) ?? !1, m = I ?? (e == null ? void 0 : e.disabled) ?? !1, i = S ?? (e == null ? void 0 : e.name), N = a ?? (e == null ? void 0 : e.align) ?? (o == null ? "left" : "center"), [u, C] = w(!1), x = e ? e.isSelected(l) : _ !== void 0 ? _ : u, E = (c) => {
|
|
50
|
+
if (!m) {
|
|
51
|
+
if (e) {
|
|
52
|
+
e.toggle(l);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
_ === void 0 && C(c.target.checked), f == null || f(c.target.checked);
|
|
56
|
+
}
|
|
57
|
+
}, G = typeof o == "string" && pe.has(o) ? /* @__PURE__ */ t(U, { name: o, size: j }) : o;
|
|
58
|
+
return /* @__PURE__ */ y(
|
|
59
|
+
"label",
|
|
60
|
+
{
|
|
61
|
+
className: $(
|
|
62
|
+
r.card,
|
|
63
|
+
r[j],
|
|
64
|
+
N === "left" && r.left,
|
|
65
|
+
x && r.selected,
|
|
66
|
+
v && r.error,
|
|
67
|
+
m && r.disabled,
|
|
68
|
+
z
|
|
69
|
+
),
|
|
70
|
+
style: {
|
|
71
|
+
"--tz-btn-rgb": `var(--tz-color-${h}-rgb)`,
|
|
72
|
+
"--tz-btn-on": `var(--tz-color-${h}-contrast, #fff)`,
|
|
73
|
+
...A
|
|
74
|
+
},
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ t(
|
|
77
|
+
"input",
|
|
78
|
+
{
|
|
79
|
+
ref: D,
|
|
80
|
+
type: e != null && e.exclusive ? "radio" : "checkbox",
|
|
81
|
+
className: r.input,
|
|
82
|
+
name: i,
|
|
83
|
+
value: l,
|
|
84
|
+
checked: x,
|
|
85
|
+
onChange: E,
|
|
86
|
+
disabled: m,
|
|
87
|
+
"aria-invalid": v || void 0,
|
|
88
|
+
...B
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ t(
|
|
92
|
+
"span",
|
|
93
|
+
{
|
|
94
|
+
className: $(r.indicator, (e == null ? void 0 : e.exclusive) && r.radioDot),
|
|
95
|
+
"aria-hidden": "true"
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
o != null && /* @__PURE__ */ t("span", { className: r.iconBox, "aria-hidden": "true", children: G }),
|
|
99
|
+
(n != null || d != null) && /* @__PURE__ */ y("span", { className: r.text, children: [
|
|
100
|
+
n != null && /* @__PURE__ */ t("span", { className: r.label, children: n }),
|
|
101
|
+
d != null && /* @__PURE__ */ t("span", { className: r.description, children: d })
|
|
102
|
+
] })
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
);
|
|
106
|
+
}), Ie = T(
|
|
107
|
+
function({
|
|
108
|
+
exclusive: l = !1,
|
|
109
|
+
value: n,
|
|
110
|
+
defaultValue: d,
|
|
111
|
+
onChange: o,
|
|
112
|
+
name: a,
|
|
113
|
+
options: q,
|
|
114
|
+
label: b,
|
|
115
|
+
minCardWidth: g = 160,
|
|
116
|
+
align: _,
|
|
117
|
+
size: f = "md",
|
|
118
|
+
color: S = "primary",
|
|
119
|
+
error: I,
|
|
120
|
+
required: z = !1,
|
|
121
|
+
disabled: A = !1,
|
|
122
|
+
children: B,
|
|
123
|
+
className: D,
|
|
124
|
+
style: e,
|
|
125
|
+
...h
|
|
126
|
+
}, j) {
|
|
127
|
+
const v = H(), m = a ?? `choice-${v}`, i = J(), N = !!(i && a), u = i && a ? i.field(a) : void 0, C = n !== void 0 ? n : N ? i.values[a] : void 0, x = C !== void 0, [E, G] = w(d), c = x ? C : E, k = I ?? (u == null ? void 0 : u.error) ?? !1, O = {
|
|
128
|
+
name: m,
|
|
129
|
+
exclusive: l,
|
|
130
|
+
isSelected: (s) => l ? c === s : Array.isArray(c) && c.includes(s),
|
|
131
|
+
toggle: (s) => {
|
|
132
|
+
let p;
|
|
133
|
+
if (l)
|
|
134
|
+
p = s;
|
|
135
|
+
else {
|
|
136
|
+
const L = Array.isArray(c) ? c : [];
|
|
137
|
+
p = L.includes(s) ? L.filter((V) => V !== s) : [...L, s];
|
|
138
|
+
}
|
|
139
|
+
x || G(p), N && i.setValue(a, p), o == null || o(p);
|
|
140
|
+
},
|
|
141
|
+
size: f,
|
|
142
|
+
align: _,
|
|
143
|
+
color: S,
|
|
144
|
+
disabled: A,
|
|
145
|
+
error: k
|
|
146
|
+
};
|
|
147
|
+
return /* @__PURE__ */ y(
|
|
148
|
+
"div",
|
|
149
|
+
{
|
|
150
|
+
ref: j,
|
|
151
|
+
role: l ? "radiogroup" : "group",
|
|
152
|
+
"aria-invalid": k || void 0,
|
|
153
|
+
className: $(r.group, D),
|
|
154
|
+
style: e,
|
|
155
|
+
...h,
|
|
156
|
+
children: [
|
|
157
|
+
b != null && /* @__PURE__ */ y("span", { className: r.groupLabel, children: [
|
|
158
|
+
/* @__PURE__ */ t(K, { as: "span", variant: "bodySmall", color: "muted", children: b }),
|
|
159
|
+
z && /* @__PURE__ */ t("span", { className: r.required, "aria-hidden": "true", children: "*" })
|
|
160
|
+
] }),
|
|
161
|
+
/* @__PURE__ */ t("div", { className: r.grid, style: { "--cc-min": `${g}px` }, children: /* @__PURE__ */ t(F.Provider, { value: O, children: q ? q.map((s) => /* @__PURE__ */ t(
|
|
162
|
+
qe,
|
|
163
|
+
{
|
|
164
|
+
value: s.value,
|
|
165
|
+
label: s.label,
|
|
166
|
+
description: s.description,
|
|
167
|
+
icon: s.icon,
|
|
168
|
+
disabled: s.disabled
|
|
169
|
+
},
|
|
170
|
+
s.value
|
|
171
|
+
)) : B }) })
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
export {
|
|
178
|
+
qe as C,
|
|
179
|
+
Ie as a
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=ChoiceCardGroup-D3HL7dHj.js.map
|