@techzyapp/ui-library 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -8
- package/dist/AdminRoot-DufZpgdm.js +100 -0
- package/dist/AdminRoot-DufZpgdm.js.map +1 -0
- package/dist/AdminRoot-DwJ5jdXr.cjs +2 -0
- package/dist/AdminRoot-DwJ5jdXr.cjs.map +1 -0
- package/dist/Alert-C8BBxL_7.cjs +2 -0
- package/dist/Alert-C8BBxL_7.cjs.map +1 -0
- package/dist/Alert-D6oBxBdP.js +70 -0
- package/dist/Alert-D6oBxBdP.js.map +1 -0
- package/dist/AuthLayout-exuNQicH.cjs.map +1 -1
- package/dist/AuthLayout-q8pbCGdt.js.map +1 -1
- package/dist/{Breadcrumbs-B6Pii2Y_.cjs → Breadcrumbs-B-olYVdw.cjs} +2 -2
- package/dist/Breadcrumbs-B-olYVdw.cjs.map +1 -0
- package/dist/{Breadcrumbs-DKYJOdHZ.js → Breadcrumbs-cXET6OM5.js} +3 -3
- package/dist/Breadcrumbs-cXET6OM5.js.map +1 -0
- package/dist/{Button-CjsnB8gX.js → Button-0ZgdNjX-.js} +2 -2
- package/dist/{Button-CjsnB8gX.js.map → Button-0ZgdNjX-.js.map} +1 -1
- package/dist/{Button-ClVfHGBc.cjs → Button-CwrDiZek.cjs} +2 -2
- package/dist/{Button-ClVfHGBc.cjs.map → Button-CwrDiZek.cjs.map} +1 -1
- package/dist/{Calendar-CQaPEukM.js → Calendar-CxzdnzdK.js} +3 -3
- package/dist/{Calendar-CQaPEukM.js.map → Calendar-CxzdnzdK.js.map} +1 -1
- package/dist/{Calendar-BzGVX4F4.cjs → Calendar-d3CX5UJp.cjs} +2 -2
- package/dist/{Calendar-BzGVX4F4.cjs.map → Calendar-d3CX5UJp.cjs.map} +1 -1
- package/dist/Card-CjqStov5.js +129 -0
- package/dist/Card-CjqStov5.js.map +1 -0
- package/dist/Card-CxnUoWsi.cjs +2 -0
- package/dist/Card-CxnUoWsi.cjs.map +1 -0
- package/dist/{Chip-Dp8skUZ2.cjs → Chip-BkU3yx6G.cjs} +2 -2
- package/dist/Chip-BkU3yx6G.cjs.map +1 -0
- package/dist/{Chip-BjSNgaAf.js → Chip-CzJjbaKx.js} +2 -2
- package/dist/Chip-CzJjbaKx.js.map +1 -0
- package/dist/ChoiceCardGroup-C7Eengyd.cjs +2 -0
- package/dist/ChoiceCardGroup-C7Eengyd.cjs.map +1 -0
- package/dist/ChoiceCardGroup-q0yN-TeQ.js +180 -0
- package/dist/{ChoiceCardGroup-143hR0v_.cjs.map → ChoiceCardGroup-q0yN-TeQ.js.map} +1 -1
- package/dist/{CodeBlock-CcJjS0_q.js → CodeBlock-BHcvQrs9.js} +3 -3
- package/dist/CodeBlock-BHcvQrs9.js.map +1 -0
- package/dist/{CodeBlock-o_VSkAek.cjs → CodeBlock-DRBQ_S5t.cjs} +2 -2
- package/dist/CodeBlock-DRBQ_S5t.cjs.map +1 -0
- package/dist/{ColorPicker-C1hZcAbH.js → ColorPicker-BQKFdTNr.js} +51 -51
- package/dist/{ColorPicker-C1hZcAbH.js.map → ColorPicker-BQKFdTNr.js.map} +1 -1
- package/dist/ColorPicker-BzCEMN7B.cjs +2 -0
- package/dist/{ColorPicker-DY6Vk1uS.cjs.map → ColorPicker-BzCEMN7B.cjs.map} +1 -1
- package/dist/{ColorPickerPanel-BuzwmkPN.js → ColorPickerPanel-DKTKC9KH.js} +2 -2
- package/dist/{ColorPickerPanel-BuzwmkPN.js.map → ColorPickerPanel-DKTKC9KH.js.map} +1 -1
- package/dist/{ColorPickerPanel-CDrHbCfG.cjs → ColorPickerPanel-kl2jUix-.cjs} +2 -2
- package/dist/{ColorPickerPanel-CDrHbCfG.cjs.map → ColorPickerPanel-kl2jUix-.cjs.map} +1 -1
- package/dist/{ColorRamp-CVnOYlu3.cjs → ColorRamp-n7muILK3.cjs} +2 -2
- package/dist/{ColorRamp-CVnOYlu3.cjs.map → ColorRamp-n7muILK3.cjs.map} +1 -1
- package/dist/{ColorRamp-CePqEkMR.js → ColorRamp-yfMyJCyx.js} +2 -2
- package/dist/{ColorRamp-CePqEkMR.js.map → ColorRamp-yfMyJCyx.js.map} +1 -1
- package/dist/{ConfigProvider-DELhJlqo.cjs → ConfigProvider-BaiTKZKC.cjs} +2 -2
- package/dist/ConfigProvider-BaiTKZKC.cjs.map +1 -0
- package/dist/{ConfigProvider-Bgu85MsI.js → ConfigProvider-D61cpCz-.js} +2 -2
- package/dist/ConfigProvider-D61cpCz-.js.map +1 -0
- package/dist/{CopyButton-CjPyKpky.cjs → CopyButton-DlSi82gv.cjs} +2 -2
- package/dist/{CopyButton-CjPyKpky.cjs.map → CopyButton-DlSi82gv.cjs.map} +1 -1
- package/dist/{CopyButton-CgDeyJ3A.js → CopyButton-ecxn-ghi.js} +3 -3
- package/dist/{CopyButton-CgDeyJ3A.js.map → CopyButton-ecxn-ghi.js.map} +1 -1
- package/dist/DatePicker-BjZ_P21i.cjs +2 -0
- package/dist/{DatePicker-CwZ_-ElE.cjs.map → DatePicker-BjZ_P21i.cjs.map} +1 -1
- package/dist/{DatePicker-tid4OuJ2.js → DatePicker-CAGpJbDi.js} +42 -42
- package/dist/{DatePicker-tid4OuJ2.js.map → DatePicker-CAGpJbDi.js.map} +1 -1
- package/dist/{DateTimePicker-C2871cuc.js → DateTimePicker-BJmF0Su6.js} +50 -50
- package/dist/DateTimePicker-BJmF0Su6.js.map +1 -0
- package/dist/DateTimePicker-DZqWQeUL.cjs +2 -0
- package/dist/DateTimePicker-DZqWQeUL.cjs.map +1 -0
- package/dist/{DescriptionList-BWw0Fe6U.cjs → DescriptionList-CvPDn-kh.cjs} +2 -2
- package/dist/DescriptionList-CvPDn-kh.cjs.map +1 -0
- package/dist/{DescriptionList-BP4CDME5.js → DescriptionList-Knq5eCiY.js} +4 -4
- package/dist/DescriptionList-Knq5eCiY.js.map +1 -0
- package/dist/{Dropdown-DYYhzKSo.cjs → Dropdown-CMjURWYd.cjs} +2 -2
- package/dist/{Dropdown-DYYhzKSo.cjs.map → Dropdown-CMjURWYd.cjs.map} +1 -1
- package/dist/{Dropdown-CcC-Hwx4.js → Dropdown-CnDBlB02.js} +2 -2
- package/dist/{Dropdown-CcC-Hwx4.js.map → Dropdown-CnDBlB02.js.map} +1 -1
- package/dist/{EmptyState-DGHOD_jy.cjs → EmptyState-CX1g47y_.cjs} +2 -2
- package/dist/{EmptyState-DGHOD_jy.cjs.map → EmptyState-CX1g47y_.cjs.map} +1 -1
- package/dist/{EmptyState-BlmQtbSs.js → EmptyState-Dqtpmtje.js} +2 -2
- package/dist/{EmptyState-BlmQtbSs.js.map → EmptyState-Dqtpmtje.js.map} +1 -1
- package/dist/{ErrorBoundary-DL194IyB.cjs → ErrorBoundary-B8KwWXXp.cjs} +2 -2
- package/dist/{ErrorBoundary-DL194IyB.cjs.map → ErrorBoundary-B8KwWXXp.cjs.map} +1 -1
- package/dist/{ErrorBoundary-ukRaS6uS.js → ErrorBoundary-Dos7VLb-.js} +3 -3
- package/dist/{ErrorBoundary-ukRaS6uS.js.map → ErrorBoundary-Dos7VLb-.js.map} +1 -1
- package/dist/{ErrorState-BjEA0VfF.cjs → ErrorState-CwCqd2PU.cjs} +2 -2
- package/dist/{ErrorState-BjEA0VfF.cjs.map → ErrorState-CwCqd2PU.cjs.map} +1 -1
- package/dist/{ErrorState-Hfd_0MeE.js → ErrorState-KhzrGIJ-.js} +7 -7
- package/dist/{ErrorState-Hfd_0MeE.js.map → ErrorState-KhzrGIJ-.js.map} +1 -1
- package/dist/{FileCard-COc4rHe-.cjs → FileCard-DEc10T2G.cjs} +2 -2
- package/dist/FileCard-DEc10T2G.cjs.map +1 -0
- package/dist/{FileCard-CWwB8CWF.js → FileCard-SSuFS13E.js} +3 -3
- package/dist/FileCard-SSuFS13E.js.map +1 -0
- package/dist/{FileUploader-Bqy_fV7l.cjs → FileUploader-D58_6kDA.cjs} +2 -2
- package/dist/FileUploader-D58_6kDA.cjs.map +1 -0
- package/dist/{FileUploader--WOmlhSh.js → FileUploader-DfYOBFa4.js} +5 -5
- package/dist/FileUploader-DfYOBFa4.js.map +1 -0
- package/dist/{Flag-C48Zfhvb.cjs → Flag-B1ZvZVXi.cjs} +2 -2
- package/dist/{Flag-C48Zfhvb.cjs.map → Flag-B1ZvZVXi.cjs.map} +1 -1
- package/dist/{Flag-fgMTTcy8.js → Flag-BEIqYQZg.js} +2 -2
- package/dist/{Flag-fgMTTcy8.js.map → Flag-BEIqYQZg.js.map} +1 -1
- package/dist/FloatingPanel-C5c_eMQ0.js.map +1 -1
- package/dist/FloatingPanel-tGCG2nhA.cjs.map +1 -1
- package/dist/{FullscreenToggle-GjsMn1GO.js → FullscreenToggle-I_In47BB.js} +3 -3
- package/dist/{FullscreenToggle-GjsMn1GO.js.map → FullscreenToggle-I_In47BB.js.map} +1 -1
- package/dist/{FullscreenToggle-DuLaUzi_.cjs → FullscreenToggle-Po769CoC.cjs} +2 -2
- package/dist/{FullscreenToggle-DuLaUzi_.cjs.map → FullscreenToggle-Po769CoC.cjs.map} +1 -1
- package/dist/{IconButton-D3ZpI0XL.cjs → IconButton-CxSXEYce.cjs} +2 -2
- package/dist/{IconButton-D3ZpI0XL.cjs.map → IconButton-CxSXEYce.cjs.map} +1 -1
- package/dist/{IconButton-t1OhAMNc.js → IconButton-D9MCwRK_.js} +2 -2
- package/dist/{IconButton-t1OhAMNc.js.map → IconButton-D9MCwRK_.js.map} +1 -1
- package/dist/{List-CwuAJDTi.js → List-2Y3ktTcF.js} +2 -2
- package/dist/{List-CwuAJDTi.js.map → List-2Y3ktTcF.js.map} +1 -1
- package/dist/{List-B5Ppe9R1.cjs → List-CKoNx21F.cjs} +2 -2
- package/dist/{List-B5Ppe9R1.cjs.map → List-CKoNx21F.cjs.map} +1 -1
- package/dist/{ListItem-BWNIbyTh.js → ListItem-2Lr5_NRY.js} +15 -15
- package/dist/{ListItem-BWNIbyTh.js.map → ListItem-2Lr5_NRY.js.map} +1 -1
- package/dist/ListItem-DkCYXucd.cjs +2 -0
- package/dist/{ListItem-Qo1Tt6Fi.cjs.map → ListItem-DkCYXucd.cjs.map} +1 -1
- package/dist/{Loader-Cywaf7ju.cjs → Loader-5zp2MPm5.cjs} +2 -2
- package/dist/{Loader-Cywaf7ju.cjs.map → Loader-5zp2MPm5.cjs.map} +1 -1
- package/dist/{Loader-De8_GqR1.js → Loader-Bluu6z0-.js} +2 -2
- package/dist/{Loader-De8_GqR1.js.map → Loader-Bluu6z0-.js.map} +1 -1
- package/dist/{LocationPicker-DBsxCYi9.cjs → LocationPicker-CGHXTIml.cjs} +2 -2
- package/dist/{LocationPicker-DBsxCYi9.cjs.map → LocationPicker-CGHXTIml.cjs.map} +1 -1
- package/dist/{LocationPicker-UfyDBvhp.js → LocationPicker-hULpHBVG.js} +7 -7
- package/dist/{LocationPicker-UfyDBvhp.js.map → LocationPicker-hULpHBVG.js.map} +1 -1
- package/dist/{Modal-Dfwc9eIq.js → Modal-C6Zgwz_6.js} +3 -3
- package/dist/Modal-C6Zgwz_6.js.map +1 -0
- package/dist/{Modal--5EbLfMz.cjs → Modal-D9_OG53G.cjs} +2 -2
- package/dist/Modal-D9_OG53G.cjs.map +1 -0
- package/dist/{MultiSelect-lBAEcAlR.cjs → MultiSelect-BdPvjiTj.cjs} +2 -2
- package/dist/{MultiSelect-lBAEcAlR.cjs.map → MultiSelect-BdPvjiTj.cjs.map} +1 -1
- package/dist/{MultiSelect-q__o8HyU.js → MultiSelect-CHLMpim4.js} +4 -4
- package/dist/{MultiSelect-q__o8HyU.js.map → MultiSelect-CHLMpim4.js.map} +1 -1
- package/dist/{NumberField-CXH0B1Bt.js → NumberField-BlpFmetF.js} +3 -3
- package/dist/{NumberField-CXH0B1Bt.js.map → NumberField-BlpFmetF.js.map} +1 -1
- package/dist/{NumberField-DSicjq5R.cjs → NumberField-C-FZ-uRI.cjs} +2 -2
- package/dist/{NumberField-DSicjq5R.cjs.map → NumberField-C-FZ-uRI.cjs.map} +1 -1
- package/dist/OtpField-D4-r7I0A.js +174 -0
- package/dist/OtpField-D4-r7I0A.js.map +1 -0
- package/dist/OtpField-Drjy2wwq.cjs +2 -0
- package/dist/OtpField-Drjy2wwq.cjs.map +1 -0
- package/dist/{PageError-MHbSl1oT.cjs → PageError-DXUOkE14.cjs} +2 -2
- package/dist/{PageError-MHbSl1oT.cjs.map → PageError-DXUOkE14.cjs.map} +1 -1
- package/dist/{PageError-VYc07Q7W.js → PageError-DyDj1wQZ.js} +5 -5
- package/dist/{PageError-VYc07Q7W.js.map → PageError-DyDj1wQZ.js.map} +1 -1
- package/dist/{PageLayout-Bt6U_80d.cjs → PageLayout-CoG0AaUs.cjs} +2 -2
- package/dist/PageLayout-CoG0AaUs.cjs.map +1 -0
- package/dist/{PageLayout-Df1SOlr7.js → PageLayout-nsJa8CbT.js} +4 -4
- package/dist/PageLayout-nsJa8CbT.js.map +1 -0
- package/dist/{PageNotFound-BWfaomjC.js → PageNotFound-BNNwMkwE.js} +5 -5
- package/dist/{PageNotFound-BWfaomjC.js.map → PageNotFound-BNNwMkwE.js.map} +1 -1
- package/dist/{PageNotFound-e4ITkqDC.cjs → PageNotFound-CGSxT_n9.cjs} +2 -2
- package/dist/{PageNotFound-e4ITkqDC.cjs.map → PageNotFound-CGSxT_n9.cjs.map} +1 -1
- package/dist/Pagination-CZtewveA.cjs +2 -0
- package/dist/Pagination-CZtewveA.cjs.map +1 -0
- package/dist/Pagination-tuWRnGwR.js +139 -0
- package/dist/Pagination-tuWRnGwR.js.map +1 -0
- package/dist/{PaletteField-D4c-Q1PG.js → PaletteField-CTPl3D43.js} +3 -3
- package/dist/{PaletteField-D4c-Q1PG.js.map → PaletteField-CTPl3D43.js.map} +1 -1
- package/dist/{PaletteField-DnUpn2zP.cjs → PaletteField-PDcu2vUp.cjs} +2 -2
- package/dist/{PaletteField-DnUpn2zP.cjs.map → PaletteField-PDcu2vUp.cjs.map} +1 -1
- package/dist/{PhoneField-BTB2_Lo1.cjs → PhoneField-BPYg5ZHW.cjs} +2 -2
- package/dist/{PhoneField-BTB2_Lo1.cjs.map → PhoneField-BPYg5ZHW.cjs.map} +1 -1
- package/dist/{PhoneField-BY5hapKk.js → PhoneField-pdWDCszb.js} +4 -4
- package/dist/{PhoneField-BY5hapKk.js.map → PhoneField-pdWDCszb.js.map} +1 -1
- package/dist/{Popconfirm-BXa5qLHY.js → Popconfirm-CMVzLaC_.js} +3 -3
- package/dist/{Popconfirm-BXa5qLHY.js.map → Popconfirm-CMVzLaC_.js.map} +1 -1
- package/dist/{Popconfirm-PkVgBrL-.cjs → Popconfirm-cNpJmkuR.cjs} +2 -2
- package/dist/{Popconfirm-PkVgBrL-.cjs.map → Popconfirm-cNpJmkuR.cjs.map} +1 -1
- package/dist/Popover-DsYUT23r.cjs.map +1 -1
- package/dist/Popover-WaVH3jsN.js.map +1 -1
- package/dist/{Progress-bId4RkgJ.js → Progress-BNEFGn-O.js} +2 -2
- package/dist/{Progress-bId4RkgJ.js.map → Progress-BNEFGn-O.js.map} +1 -1
- package/dist/{Progress-R_Vt4gJA.cjs → Progress-x12Rkh06.cjs} +2 -2
- package/dist/{Progress-R_Vt4gJA.cjs.map → Progress-x12Rkh06.cjs.map} +1 -1
- package/dist/QrCode-CrNJZV_8.js +81 -0
- package/dist/QrCode-CrNJZV_8.js.map +1 -0
- package/dist/QrCode-TcQQE0h7.cjs +2 -0
- package/dist/QrCode-TcQQE0h7.cjs.map +1 -0
- package/dist/{RemoveDialog-Dh_q5jZF.js → RemoveDialog-ARFp1UJM.js} +5 -5
- package/dist/{RemoveDialog-Dh_q5jZF.js.map → RemoveDialog-ARFp1UJM.js.map} +1 -1
- package/dist/{RemoveDialog-Cvj-DaiY.cjs → RemoveDialog-IWOAQFNK.cjs} +2 -2
- package/dist/{RemoveDialog-Cvj-DaiY.cjs.map → RemoveDialog-IWOAQFNK.cjs.map} +1 -1
- package/dist/RichTextEditor-C9jT2cLl.cjs +2 -0
- package/dist/RichTextEditor-C9jT2cLl.cjs.map +1 -0
- package/dist/{RichTextEditor-Dv-LDsN-.js → RichTextEditor-DrwJUEYz.js} +148 -148
- package/dist/RichTextEditor-DrwJUEYz.js.map +1 -0
- package/dist/RootLayout-CZ2GQ8XA.js +647 -0
- package/dist/RootLayout-CZ2GQ8XA.js.map +1 -0
- package/dist/RootLayout-DStUP263.cjs +2 -0
- package/dist/RootLayout-DStUP263.cjs.map +1 -0
- package/dist/{Select-DdkJXkw-.cjs → Select-C2DIfuoB.cjs} +2 -2
- package/dist/{Select-DdkJXkw-.cjs.map → Select-C2DIfuoB.cjs.map} +1 -1
- package/dist/{Select-Bw8Q86ts.js → Select-KGsA8PbI.js} +3 -3
- package/dist/{Select-Bw8Q86ts.js.map → Select-KGsA8PbI.js.map} +1 -1
- package/dist/{Sidebar-CGL5hvpl.js → Sidebar-_pcwxdd8.js} +133 -131
- package/dist/{Sidebar-CGL5hvpl.js.map → Sidebar-_pcwxdd8.js.map} +1 -1
- package/dist/Sidebar-wK1_xaY_.cjs +2 -0
- package/dist/{Sidebar-CfEx7W7i.cjs.map → Sidebar-wK1_xaY_.cjs.map} +1 -1
- package/dist/Slider-CXAz9SUY.cjs +2 -0
- package/dist/Slider-CXAz9SUY.cjs.map +1 -0
- package/dist/Slider-Cpc5_dPl.js +185 -0
- package/dist/Slider-Cpc5_dPl.js.map +1 -0
- package/dist/{SpeedDial-jOxWEd09.cjs → SpeedDial-BT_boD06.cjs} +2 -2
- package/dist/{SpeedDial-jOxWEd09.cjs.map → SpeedDial-BT_boD06.cjs.map} +1 -1
- package/dist/{SpeedDial-C-yLmnk7.js → SpeedDial-SMMfes9f.js} +2 -2
- package/dist/{SpeedDial-C-yLmnk7.js.map → SpeedDial-SMMfes9f.js.map} +1 -1
- package/dist/{Stepper-D7An-ugU.cjs → Stepper-BmA_DjTS.cjs} +2 -2
- package/dist/Stepper-BmA_DjTS.cjs.map +1 -0
- package/dist/{Stepper-DYpiLhzD.js → Stepper-CR0Mlkq7.js} +2 -2
- package/dist/Stepper-CR0Mlkq7.js.map +1 -0
- package/dist/{Table-BhaH8EKZ.cjs → Table-BkjY1Lwt.cjs} +2 -2
- package/dist/Table-BkjY1Lwt.cjs.map +1 -0
- package/dist/{Table-DK4GBKS3.js → Table-D-F68lcm.js} +18 -18
- package/dist/Table-D-F68lcm.js.map +1 -0
- package/dist/{Tabs-6x4vC8je.cjs → Tabs-Cgp6D1WP.cjs} +2 -2
- package/dist/{Tabs-6x4vC8je.cjs.map → Tabs-Cgp6D1WP.cjs.map} +1 -1
- package/dist/{Tabs-CWiDeqqW.js → Tabs-DP0aZ5TB.js} +2 -2
- package/dist/{Tabs-CWiDeqqW.js.map → Tabs-DP0aZ5TB.js.map} +1 -1
- package/dist/TagsField-9nKu6ZW4.cjs +2 -0
- package/dist/TagsField-9nKu6ZW4.cjs.map +1 -0
- package/dist/{TagsField-Cg9YVl7G.js → TagsField-CcY9MTMw.js} +64 -64
- package/dist/TagsField-CcY9MTMw.js.map +1 -0
- package/dist/{TextField-5nQkU8HP.js → TextField-0WvJsHhA.js} +3 -3
- package/dist/{TextField-5nQkU8HP.js.map → TextField-0WvJsHhA.js.map} +1 -1
- package/dist/{TextField-BRaoadxk.cjs → TextField-C5MgCQIV.cjs} +2 -2
- package/dist/{TextField-BRaoadxk.cjs.map → TextField-C5MgCQIV.cjs.map} +1 -1
- package/dist/{ThemeToggle-DhaVEyPL.cjs → ThemeToggle-BvcCxRpF.cjs} +2 -2
- package/dist/{ThemeToggle-DhaVEyPL.cjs.map → ThemeToggle-BvcCxRpF.cjs.map} +1 -1
- package/dist/{ThemeToggle-DXpbooYn.js → ThemeToggle-DmCePuTy.js} +3 -3
- package/dist/{ThemeToggle-DXpbooYn.js.map → ThemeToggle-DmCePuTy.js.map} +1 -1
- package/dist/{TimeColumns-girAEgEN.cjs → TimeColumns-Q-vsHFZU.cjs} +2 -2
- package/dist/{TimeColumns-girAEgEN.cjs.map → TimeColumns-Q-vsHFZU.cjs.map} +1 -1
- package/dist/{TimeColumns-C_gdJn__.js → TimeColumns-WJRHQuFv.js} +2 -2
- package/dist/{TimeColumns-C_gdJn__.js.map → TimeColumns-WJRHQuFv.js.map} +1 -1
- package/dist/TimePicker-CvbQFzBf.cjs +2 -0
- package/dist/{TimePicker-_Ak5yB_5.cjs.map → TimePicker-CvbQFzBf.cjs.map} +1 -1
- package/dist/{TimePicker-DHdsY8kQ.js → TimePicker-DJDuSxAg.js} +54 -54
- package/dist/{TimePicker-DHdsY8kQ.js.map → TimePicker-DJDuSxAg.js.map} +1 -1
- package/dist/{Toaster-Dput5iLU.js → Toaster-Bb5YEN5j.js} +2 -2
- package/dist/{Toaster-Dput5iLU.js.map → Toaster-Bb5YEN5j.js.map} +1 -1
- package/dist/{Toaster-fjyF8W3F.cjs → Toaster-Dy1AonLa.cjs} +2 -2
- package/dist/{Toaster-fjyF8W3F.cjs.map → Toaster-Dy1AonLa.cjs.map} +1 -1
- package/dist/TranslatedFields-CuK5KKzE.cjs +2 -0
- package/dist/TranslatedFields-CuK5KKzE.cjs.map +1 -0
- package/dist/TranslatedFields-DKXznBtD.js +86 -0
- package/dist/TranslatedFields-DKXznBtD.js.map +1 -0
- package/dist/{UserCard-B9bzkZph.cjs → UserCard-DbudGMvG.cjs} +2 -2
- package/dist/UserCard-DbudGMvG.cjs.map +1 -0
- package/dist/{UserCard-DYK6S-nr.js → UserCard-UG_Cwe-Y.js} +3 -3
- package/dist/UserCard-UG_Cwe-Y.js.map +1 -0
- package/dist/app/AdminRoot.d.cts +5 -2
- package/dist/app/AdminRoot.d.ts +5 -2
- package/dist/components/Alert/Alert.d.cts +1 -1
- package/dist/components/Alert/Alert.d.ts +1 -1
- package/dist/components/Alert/index.cjs +1 -1
- package/dist/components/Alert/index.js +1 -1
- package/dist/components/AuthLayout/AuthLayout.d.cts +2 -2
- package/dist/components/AuthLayout/AuthLayout.d.ts +2 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.d.cts +2 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +2 -1
- package/dist/components/Breadcrumbs/index.cjs +1 -1
- package/dist/components/Breadcrumbs/index.js +1 -1
- package/dist/components/Button/index.cjs +1 -1
- package/dist/components/Button/index.js +1 -1
- package/dist/components/Card/Card.d.cts +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/index.cjs +1 -1
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Chip/Chip.d.cts +1 -1
- package/dist/components/Chip/Chip.d.ts +1 -1
- package/dist/components/Chip/index.cjs +1 -1
- package/dist/components/Chip/index.js +1 -1
- package/dist/components/ChoiceCard/ChoiceCard.d.cts +1 -1
- package/dist/components/ChoiceCard/ChoiceCard.d.ts +1 -1
- package/dist/components/ChoiceCard/index.cjs +1 -1
- package/dist/components/ChoiceCard/index.js +1 -1
- package/dist/components/CodeBlock/CodeBlock.d.cts +1 -1
- package/dist/components/CodeBlock/CodeBlock.d.ts +1 -1
- package/dist/components/CodeBlock/index.cjs +1 -1
- package/dist/components/CodeBlock/index.js +1 -1
- package/dist/components/ColorPicker/index.cjs +1 -1
- package/dist/components/ColorPicker/index.js +1 -1
- package/dist/components/ColorRamp/index.cjs +1 -1
- package/dist/components/ColorRamp/index.js +1 -1
- package/dist/components/CopyButton/index.cjs +1 -1
- package/dist/components/CopyButton/index.js +1 -1
- package/dist/components/DatePicker/index.cjs +1 -1
- package/dist/components/DatePicker/index.js +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.d.cts +2 -2
- package/dist/components/DateTimePicker/DateTimePicker.d.ts +2 -2
- package/dist/components/DateTimePicker/index.cjs +1 -1
- package/dist/components/DateTimePicker/index.js +1 -1
- package/dist/components/DescriptionList/DescriptionList.d.cts +1 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +1 -1
- package/dist/components/DescriptionList/index.cjs +1 -1
- package/dist/components/DescriptionList/index.js +1 -1
- package/dist/components/Dropdown/index.cjs +1 -1
- package/dist/components/Dropdown/index.js +1 -1
- package/dist/components/EmptyState/index.cjs +1 -1
- package/dist/components/EmptyState/index.js +1 -1
- package/dist/components/ErrorState/index.cjs +1 -1
- package/dist/components/ErrorState/index.js +2 -2
- package/dist/components/FileCard/FileCard.d.cts +5 -2
- package/dist/components/FileCard/FileCard.d.ts +5 -2
- package/dist/components/FileCard/index.cjs +1 -1
- package/dist/components/FileCard/index.js +1 -1
- package/dist/components/FileUploader/FileUploader.d.cts +5 -5
- package/dist/components/FileUploader/FileUploader.d.ts +5 -5
- package/dist/components/FileUploader/index.cjs +1 -1
- package/dist/components/FileUploader/index.js +1 -1
- package/dist/components/Flag/index.cjs +1 -1
- package/dist/components/Flag/index.js +1 -1
- package/dist/components/FloatingPanel/FloatingPanel.d.cts +6 -5
- package/dist/components/FloatingPanel/FloatingPanel.d.ts +6 -5
- package/dist/components/FullscreenToggle/index.cjs +1 -1
- package/dist/components/FullscreenToggle/index.js +1 -1
- package/dist/components/IconButton/index.cjs +1 -1
- package/dist/components/IconButton/index.js +1 -1
- package/dist/components/List/index.cjs +1 -1
- package/dist/components/List/index.js +2 -2
- package/dist/components/Loader/Loader.d.cts +1 -1
- package/dist/components/Loader/Loader.d.ts +1 -1
- package/dist/components/Loader/index.cjs +1 -1
- package/dist/components/Loader/index.js +1 -1
- package/dist/components/LocationPicker/index.cjs +1 -1
- package/dist/components/LocationPicker/index.js +1 -1
- package/dist/components/Modal/Modal.d.cts +1 -1
- package/dist/components/Modal/Modal.d.ts +1 -1
- package/dist/components/Modal/index.cjs +1 -1
- package/dist/components/Modal/index.js +1 -1
- package/dist/components/MultiSelect/index.cjs +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/NumberField/index.cjs +1 -1
- package/dist/components/NumberField/index.js +1 -1
- package/dist/components/OtpField/OtpField.d.cts +1 -1
- package/dist/components/OtpField/OtpField.d.ts +1 -1
- package/dist/components/OtpField/index.cjs +1 -1
- package/dist/components/OtpField/index.js +1 -1
- package/dist/components/PageError/index.cjs +1 -1
- package/dist/components/PageError/index.js +1 -1
- package/dist/components/PageLayout/PageLayout.d.cts +2 -2
- package/dist/components/PageLayout/PageLayout.d.ts +2 -2
- package/dist/components/PageLayout/index.cjs +1 -1
- package/dist/components/PageLayout/index.js +1 -1
- package/dist/components/PageNotFound/index.cjs +1 -1
- package/dist/components/PageNotFound/index.js +1 -1
- package/dist/components/Pagination/index.cjs +1 -1
- package/dist/components/Pagination/index.js +1 -1
- package/dist/components/PaletteField/index.cjs +1 -1
- package/dist/components/PaletteField/index.js +1 -1
- package/dist/components/PhoneField/index.cjs +1 -1
- package/dist/components/PhoneField/index.js +1 -1
- package/dist/components/Popconfirm/index.cjs +1 -1
- package/dist/components/Popconfirm/index.js +1 -1
- package/dist/components/Popover/Popover.d.cts +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Progress/index.cjs +1 -1
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/QrCode/QrCode.d.cts +5 -2
- package/dist/components/QrCode/QrCode.d.ts +5 -2
- package/dist/components/QrCode/index.cjs +1 -1
- package/dist/components/QrCode/index.js +1 -1
- package/dist/components/RemoveDialog/index.cjs +1 -1
- package/dist/components/RemoveDialog/index.js +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.d.cts +1 -1
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +1 -1
- package/dist/components/RichTextEditor/index.cjs +1 -1
- package/dist/components/RichTextEditor/index.js +1 -1
- package/dist/components/RootLayout/RootLayout.d.cts +12 -5
- package/dist/components/RootLayout/RootLayout.d.ts +12 -5
- 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/Slider.d.cts +2 -2
- package/dist/components/Slider/Slider.d.ts +2 -2
- 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/Stepper.d.cts +2 -2
- package/dist/components/Stepper/Stepper.d.ts +2 -2
- package/dist/components/Stepper/index.cjs +1 -1
- package/dist/components/Stepper/index.js +1 -1
- package/dist/components/Table/Table.d.cts +1 -1
- package/dist/components/Table/Table.d.ts +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/TagsField.d.cts +1 -1
- package/dist/components/TagsField/TagsField.d.ts +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/Toast/index.cjs +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/TranslatedFields/TranslatedFields.d.cts +1 -1
- package/dist/components/TranslatedFields/TranslatedFields.d.ts +1 -1
- package/dist/components/TranslatedFields/index.cjs +1 -1
- package/dist/components/TranslatedFields/index.js +1 -1
- package/dist/components/UserCard/UserCard.d.cts +6 -5
- package/dist/components/UserCard/UserCard.d.ts +6 -5
- package/dist/components/UserCard/index.cjs +1 -1
- package/dist/components/UserCard/index.js +1 -1
- 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 +56 -56
- package/dist/entries/i18n.cjs +1 -1
- package/dist/entries/i18n.js +2 -2
- package/dist/entries/theme.cjs +1 -1
- package/dist/entries/theme.js +1 -1
- package/dist/form/useForm.d.cts +1 -1
- package/dist/form/useForm.d.ts +1 -1
- package/dist/hooks/useMediaQuery.d.cts +3 -3
- package/dist/hooks/useMediaQuery.d.ts +3 -3
- package/dist/i18n/messages.d.cts +20 -0
- package/dist/i18n/messages.d.ts +20 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +3 -3
- package/dist/index.js +59 -59
- package/dist/{messages-BasxRpyx.js → messages-BiRLMy1E.js} +177 -37
- package/dist/messages-BiRLMy1E.js.map +1 -0
- package/dist/{messages-CElolVGm.cjs → messages-C_fRRCg6.cjs} +9 -9
- package/dist/messages-C_fRRCg6.cjs.map +1 -0
- package/dist/theme/ConfigProvider.d.cts +19 -10
- package/dist/theme/ConfigProvider.d.ts +19 -10
- package/dist/useForm-CGbJ44Gp.js.map +1 -1
- package/dist/useForm-CSw6r1n1.cjs.map +1 -1
- package/dist/{useHomeTo-BnjXms11.cjs → useHomeTo-BaM7kBDh.cjs} +2 -2
- package/dist/{useHomeTo-BnjXms11.cjs.map → useHomeTo-BaM7kBDh.cjs.map} +1 -1
- package/dist/{useHomeTo-Btkk0RSB.js → useHomeTo-DQj9tVZI.js} +2 -2
- package/dist/{useHomeTo-Btkk0RSB.js.map → useHomeTo-DQj9tVZI.js.map} +1 -1
- package/dist/useMediaQuery-CHMrI6Dy.cjs.map +1 -1
- package/dist/useMediaQuery-DrDUrkmJ.js.map +1 -1
- package/dist/{useOptionMenu-IebDGoqk.cjs → useOptionMenu-BKC1y6oj.cjs} +2 -2
- package/dist/{useOptionMenu-IebDGoqk.cjs.map → useOptionMenu-BKC1y6oj.cjs.map} +1 -1
- package/dist/{useOptionMenu-DeW68na-.js → useOptionMenu-Dom1-bqm.js} +5 -5
- package/dist/{useOptionMenu-DeW68na-.js.map → useOptionMenu-Dom1-bqm.js.map} +1 -1
- package/package.json +1 -1
- package/dist/AdminRoot-aOYQtzF0.js +0 -109
- package/dist/AdminRoot-aOYQtzF0.js.map +0 -1
- package/dist/AdminRoot-ajWIf94J.cjs +0 -2
- package/dist/AdminRoot-ajWIf94J.cjs.map +0 -1
- package/dist/Alert-5tpyGb2M.cjs +0 -2
- package/dist/Alert-5tpyGb2M.cjs.map +0 -1
- package/dist/Alert-Dz0sNGpz.js +0 -70
- package/dist/Alert-Dz0sNGpz.js.map +0 -1
- package/dist/Breadcrumbs-B6Pii2Y_.cjs.map +0 -1
- package/dist/Breadcrumbs-DKYJOdHZ.js.map +0 -1
- package/dist/Card-CIRGqg3P.cjs +0 -2
- package/dist/Card-CIRGqg3P.cjs.map +0 -1
- package/dist/Card-Co3A4Qgo.js +0 -128
- package/dist/Card-Co3A4Qgo.js.map +0 -1
- package/dist/Chip-BjSNgaAf.js.map +0 -1
- package/dist/Chip-Dp8skUZ2.cjs.map +0 -1
- package/dist/ChoiceCardGroup-143hR0v_.cjs +0 -2
- package/dist/ChoiceCardGroup-Cx8CtmPl.js +0 -180
- package/dist/ChoiceCardGroup-Cx8CtmPl.js.map +0 -1
- package/dist/CodeBlock-CcJjS0_q.js.map +0 -1
- package/dist/CodeBlock-o_VSkAek.cjs.map +0 -1
- package/dist/ColorPicker-DY6Vk1uS.cjs +0 -2
- package/dist/ConfigProvider-Bgu85MsI.js.map +0 -1
- package/dist/ConfigProvider-DELhJlqo.cjs.map +0 -1
- package/dist/DatePicker-CwZ_-ElE.cjs +0 -2
- package/dist/DateTimePicker-C2871cuc.js.map +0 -1
- package/dist/DateTimePicker-DdEPtw9U.cjs +0 -2
- package/dist/DateTimePicker-DdEPtw9U.cjs.map +0 -1
- package/dist/DescriptionList-BP4CDME5.js.map +0 -1
- package/dist/DescriptionList-BWw0Fe6U.cjs.map +0 -1
- package/dist/FileCard-COc4rHe-.cjs.map +0 -1
- package/dist/FileCard-CWwB8CWF.js.map +0 -1
- package/dist/FileUploader--WOmlhSh.js.map +0 -1
- package/dist/FileUploader-Bqy_fV7l.cjs.map +0 -1
- package/dist/ListItem-Qo1Tt6Fi.cjs +0 -2
- package/dist/Modal--5EbLfMz.cjs.map +0 -1
- package/dist/Modal-Dfwc9eIq.js.map +0 -1
- package/dist/OtpField-Dy-LKTi9.js +0 -174
- package/dist/OtpField-Dy-LKTi9.js.map +0 -1
- package/dist/OtpField-KHwdaajC.cjs +0 -2
- package/dist/OtpField-KHwdaajC.cjs.map +0 -1
- package/dist/PageLayout-Bt6U_80d.cjs.map +0 -1
- package/dist/PageLayout-Df1SOlr7.js.map +0 -1
- package/dist/Pagination-DDMq_7OZ.js +0 -139
- package/dist/Pagination-DDMq_7OZ.js.map +0 -1
- package/dist/Pagination-UMeckhmY.cjs +0 -2
- package/dist/Pagination-UMeckhmY.cjs.map +0 -1
- package/dist/QrCode-B9YbQNVc.js +0 -80
- package/dist/QrCode-B9YbQNVc.js.map +0 -1
- package/dist/QrCode-CNVYpz9j.cjs +0 -2
- package/dist/QrCode-CNVYpz9j.cjs.map +0 -1
- package/dist/RichTextEditor-Dv-LDsN-.js.map +0 -1
- package/dist/RichTextEditor-lmPGowSR.cjs +0 -2
- package/dist/RichTextEditor-lmPGowSR.cjs.map +0 -1
- package/dist/RootLayout-B_ZtI-L_.cjs +0 -2
- package/dist/RootLayout-B_ZtI-L_.cjs.map +0 -1
- package/dist/RootLayout-DIOquzrU.js +0 -642
- package/dist/RootLayout-DIOquzrU.js.map +0 -1
- package/dist/Sidebar-CfEx7W7i.cjs +0 -2
- package/dist/Slider-0joKXhPo.cjs +0 -2
- package/dist/Slider-0joKXhPo.cjs.map +0 -1
- package/dist/Slider-CwZYxDO0.js +0 -184
- package/dist/Slider-CwZYxDO0.js.map +0 -1
- package/dist/Stepper-D7An-ugU.cjs.map +0 -1
- package/dist/Stepper-DYpiLhzD.js.map +0 -1
- package/dist/Table-BhaH8EKZ.cjs.map +0 -1
- package/dist/Table-DK4GBKS3.js.map +0 -1
- package/dist/TagsField-Cg9YVl7G.js.map +0 -1
- package/dist/TagsField-DwZLCIeb.cjs +0 -2
- package/dist/TagsField-DwZLCIeb.cjs.map +0 -1
- package/dist/TimePicker-_Ak5yB_5.cjs +0 -2
- package/dist/TranslatedFields-B-BU17IV.cjs +0 -2
- package/dist/TranslatedFields-B-BU17IV.cjs.map +0 -1
- package/dist/TranslatedFields-JnqLgUiF.js +0 -86
- package/dist/TranslatedFields-JnqLgUiF.js.map +0 -1
- package/dist/UserCard-B9bzkZph.cjs.map +0 -1
- package/dist/UserCard-DYK6S-nr.js.map +0 -1
- package/dist/messages-BasxRpyx.js.map +0 -1
- package/dist/messages-CElolVGm.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Alert-Dz0sNGpz.js","sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../IconButton'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useT, type ThemeColor } from '../../theme'\nimport styles from './Alert.module.css'\n\nexport type AlertVariant = 'contained' | 'filled' | 'outlined' | 'text'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\n/** Default leading icon per semantic color (other colors fall back to `InfoCircle`). */\nconst DEFAULT_ICON: Partial<Record<ThemeColor, IconName>> = {\n success: 'TickCircle',\n error: 'CloseCircle',\n warning: 'Warning',\n info: 'InfoCircle',\n}\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color' | 'title'> {\n /** Tint style. Defaults to `filled` (the soft tint). */\n variant?: AlertVariant\n /** Brand / semantic palette token that tints the alert. Defaults to `info`. */\n color?: ThemeColor\n /**\n * Leading icon — a known `IconName`, any node, or `false` to hide it. Defaults to the semantic icon\n * for `color` (success → `TickCircle`, error → `CloseCircle`, warning → `Warning`, info → `InfoCircle`).\n */\n icon?: IconName | ReactNode | false\n /** Trailing action (e.g. an `UNDO` button), placed before the close button. */\n action?: ReactNode\n /** When provided, a trailing × close button appears that calls this. */\n onClose?: () => void\n /** Accessible label for the close button. Defaults to `\"Close\"`. */\n closeLabel?: string\n /** Alert message. */\n children?: ReactNode\n}\n\n/**\n * A message banner — the library's inline feedback surface (info, success, warning, error). Tinted by\n * `color` via the shared `--tz-btn-rgb` pattern across the 4 standard `variant`s; a semantic leading\n * `icon` is auto-picked per color (override with `icon`, or `icon={false}` to drop it). An optional\n * `action` slot (e.g. an `UNDO` button) and an `onClose` × button trail the message. `role=\"alert\"`.\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n variant = 'filled',\n color = 'info',\n icon,\n action,\n onClose,\n closeLabel,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const t = useT()\n const renderedIcon =\n icon === false ? null : icon == null ? (\n <Icon name={DEFAULT_ICON[color] ?? 'InfoCircle'} />\n ) : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={clsx(styles.alert, styles[variant], className)}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${color}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${color}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {renderedIcon != null && (\n <span className={styles.icon} aria-hidden>\n {renderedIcon}\n </span>\n )}\n <div className={styles.message}>{children}</div>\n {action != null && <div className={styles.action}>{action}</div>}\n {onClose && (\n <IconButton\n variant=\"text\"\n color={color}\n size=\"sm\"\n className={styles.close}\n aria-label={closeLabel ?? t('common.close')}\n onClick={onClose}\n >\n <Icon name=\"Close\" />\n </IconButton>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","DEFAULT_ICON","Alert","forwardRef","variant","color","icon","action","onClose","closeLabel","className","style","children","props","ref","t","useT","renderedIcon","jsx","Icon","jsxs","clsx","styles","IconButton"],"mappings":";;;;;;;;;;;;;;;;GAUMA,IAAgB,IAAI,IAAYC,CAAU,GAG1CC,IAAsD;AAAA,EAC1D,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AACR,GA4BaC,IAAQC,EAAuC,SAC1D;AAAA,EACE,SAAAC,IAAU;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAIC,EAAA,GACJC,IACJX,MAAS,KAAQ,OAAOA,KAAQ,OAC9B,gBAAAY,EAACC,GAAA,EAAK,MAAMlB,EAAaI,CAAK,KAAK,cAAc,IAC/C,OAAOC,KAAS,YAAYP,EAAc,IAAIO,CAAI,IACpD,gBAAAY,EAACC,GAAA,EAAK,MAAMb,EAAA,CAAkB,IAE9BA;AAGJ,SACE,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAK;AAAA,MACL,WAAWO,EAAKC,EAAO,OAAOA,EAAOlB,CAAO,GAAGM,CAAS;AAAA,MACxD,OACE;AAAA,QACE,gBAAgB,kBAAkBL,CAAK;AAAA,QACvC,eAAe,kBAAkBA,CAAK;AAAA,QACtC,GAAGM;AAAA,MAAA;AAAA,MAGN,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAI,KAAgB,0BACd,QAAA,EAAK,WAAWK,EAAO,MAAM,eAAW,IACtC,UAAAL,EAAA,CACH;AAAA,QAEF,gBAAAC,EAAC,OAAA,EAAI,WAAWI,EAAO,SAAU,UAAAV,GAAS;AAAA,QACzCL,KAAU,QAAQ,gBAAAW,EAAC,SAAI,WAAWI,EAAO,QAAS,UAAAf,GAAO;AAAA,QACzDC,KACC,gBAAAU;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAAlB;AAAA,YACA,MAAK;AAAA,YACL,WAAWiB,EAAO;AAAA,YAClB,cAAYb,KAAcM,EAAE,cAAc;AAAA,YAC1C,SAASP;AAAA,YAET,UAAA,gBAAAU,EAACC,GAAA,EAAK,MAAK,QAAA,CAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACrB;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs-B6Pii2Y_.cjs","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","useT","jsxs","Link","item","index","isLast"],"mappings":"4ZAQMA,EAAUC,GAAeA,EACzBC,EAAgB,IAAI,IAAYC,YAAU,EAUhD,SAASC,EAAU,CAAE,UAAAC,GAAkD,CACrE,OAAI,OAAOA,GAAc,UAAYH,EAAc,IAAIG,CAAS,EACvDC,MAACC,EAAAA,MAAK,KAAMF,EAAuB,KAAK,KAAK,UAAWG,EAAO,UAAW,QAGhF,OAAA,CAAK,UAAWA,EAAO,UAAW,cAAY,OAC5C,SAAAH,EACH,CAEJ,CASO,SAASI,EAAY,CAAE,UAAAJ,EAAY,aAAA,EAAoC,CAAA,EAAI,CAChF,KAAM,CAAE,OAAAK,EAAQ,MAAAC,CAAA,EAAUC,iBAAA,EACpB,EAAIC,EAAAA,KAAA,EACV,OAAIF,EAAM,SAAW,EAAU,KAG7BL,EAAAA,IAAC,MAAA,CAAI,aAAY,EAAE,mBAAmB,EAAG,UAAWE,EAAO,YACzD,SAAAM,EAAAA,KAAC,KAAA,CAAG,UAAWN,EAAO,KACpB,SAAA,CAAAF,EAAAA,IAAC,MAAG,UAAWE,EAAO,KACnB,SAAAE,EACCJ,EAAAA,IAACS,EAAAA,MAAK,GAAIf,EAAOU,CAAM,EAAG,UAAWF,EAAO,KAAM,aAAY,EAAE,kBAAkB,EAChF,eAACD,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,CAAA,CAC/B,QAEC,OAAA,CAAK,UAAWC,EAAO,KAAM,aAAY,EAAE,kBAAkB,EAC5D,eAACD,EAAAA,KAAA,CAAK,KAAK,QAAQ,KAAK,KAAK,EAC/B,CAAA,CAEJ,EACCI,EAAM,IAAI,CAACK,EAAMC,IAAU,CAC1B,MAAMC,EAASD,IAAUN,EAAM,OAAS,EACxC,OACEG,EAAAA,KAAC,KAAA,CAAG,UAAWN,EAAO,KACpB,SAAA,CAAAF,MAACF,GAAU,UAAAC,EAAsB,EAChCW,EAAK,IAAM,CAACE,EACXZ,EAAAA,IAACS,EAAAA,KAAA,CAAK,GAAIf,EAAOgB,EAAK,EAAE,EAAG,UAAWR,EAAO,KAC1C,SAAAQ,EAAK,KAAA,CACR,EAEAV,EAAAA,IAAC,OAAA,CAAK,UAAWE,EAAO,QAAS,eAAcU,EAAS,OAAS,OAC9D,SAAAF,EAAK,KAAA,CACR,CAAA,CAAA,EAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD,CAEJ,CAAC,CAAA,CAAA,CACH,CAAA,CACF,CAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumbs-DKYJOdHZ.js","sources":["../src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { Link, type LinkProps } from '@tanstack/react-router'\nimport { useT } from '../../theme'\nimport { Icon } from '../Icon'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { useBreadcrumbs } from '../Sidebar/Sidebar'\nimport styles from './Breadcrumbs.module.css'\n\nconst linkTo = (to: string) => to as LinkProps['to']\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface BreadcrumbsProps {\n /**\n * Separator between crumbs. A known `IconName` (the default `\"ArrowRight4\"`) renders as an icon; any\n * other string renders as plain text; or pass a node.\n */\n separator?: IconName | ReactNode\n}\n\nfunction Separator({ separator }: { separator: IconName | ReactNode }) {\n if (typeof separator === 'string' && ICON_NAME_SET.has(separator)) {\n return <Icon name={separator as IconName} size=\"sm\" className={styles.separator} />\n }\n return (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator}\n </span>\n )\n}\n\n/**\n * Auto-generated breadcrumb trail for the current route, rendered at the top of `RootLayout`'s\n * content. It always starts with a home icon that links to the first allowed menu page (the same\n * target as `FirstRouteRedirect`), followed by one crumb per matched route that declares a\n * `staticData.name`. Intermediate crumbs link to their page when navigable; the current page is\n * plain text. Renders nothing when the current route has no named matches. Token-only styling.\n */\nexport function Breadcrumbs({ separator = 'ArrowRight4' }: BreadcrumbsProps = {}) {\n const { homeTo, items } = useBreadcrumbs()\n const t = useT()\n if (items.length === 0) return null\n\n return (\n <nav aria-label={t('breadcrumbs.label')} className={styles.breadcrumbs}>\n <ol className={styles.list}>\n <li className={styles.item}>\n {homeTo ? (\n <Link to={linkTo(homeTo)} className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </Link>\n ) : (\n <span className={styles.home} aria-label={t('breadcrumbs.home')}>\n <Icon name=\"Home2\" size=\"sm\" />\n </span>\n )}\n </li>\n {items.map((item, index) => {\n const isLast = index === items.length - 1\n return (\n <li className={styles.item} key={`${item.label}-${index}`}>\n <Separator separator={separator} />\n {item.to && !isLast ? (\n <Link to={linkTo(item.to)} className={styles.link}>\n {item.label}\n </Link>\n ) : (\n <span className={styles.current} aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n"],"names":["linkTo","to","ICON_NAME_SET","ICON_NAMES","Separator","separator","jsx","Icon","styles","Breadcrumbs","homeTo","items","useBreadcrumbs","t","useT","jsxs","Link","item","index","isLast"],"mappings":";;;;;;;;;;;;;GAQMA,IAAS,CAACC,MAAeA,GACzBC,IAAgB,IAAI,IAAYC,CAAU;AAUhD,SAASC,EAAU,EAAE,WAAAC,KAAkD;AACrE,SAAI,OAAOA,KAAc,YAAYH,EAAc,IAAIG,CAAS,IACvD,gBAAAC,EAACC,KAAK,MAAMF,GAAuB,MAAK,MAAK,WAAWG,EAAO,WAAW,sBAGhF,QAAA,EAAK,WAAWA,EAAO,WAAW,eAAY,QAC5C,UAAAH,GACH;AAEJ;AASO,SAASI,EAAY,EAAE,WAAAJ,IAAY,cAAA,IAAoC,CAAA,GAAI;AAChF,QAAM,EAAE,QAAAK,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GACpBC,IAAIC,EAAA;AACV,SAAIH,EAAM,WAAW,IAAU,OAG7B,gBAAAL,EAAC,OAAA,EAAI,cAAYO,EAAE,mBAAmB,GAAG,WAAWL,EAAO,aACzD,UAAA,gBAAAO,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,IAAA,gBAAAF,EAAC,QAAG,WAAWE,EAAO,MACnB,UAAAE,IACC,gBAAAJ,EAACU,KAAK,IAAIhB,EAAOU,CAAM,GAAG,WAAWF,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAChF,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,EAAA,CAC/B,sBAEC,QAAA,EAAK,WAAWC,EAAO,MAAM,cAAYK,EAAE,kBAAkB,GAC5D,4BAACN,GAAA,EAAK,MAAK,SAAQ,MAAK,MAAK,GAC/B,EAAA,CAEJ;AAAA,IACCI,EAAM,IAAI,CAACM,GAAMC,MAAU;AAC1B,YAAMC,IAASD,MAAUP,EAAM,SAAS;AACxC,aACE,gBAAAI,EAAC,MAAA,EAAG,WAAWP,EAAO,MACpB,UAAA;AAAA,QAAA,gBAAAF,EAACF,KAAU,WAAAC,GAAsB;AAAA,QAChCY,EAAK,MAAM,CAACE,IACX,gBAAAb,EAACU,GAAA,EAAK,IAAIhB,EAAOiB,EAAK,EAAE,GAAG,WAAWT,EAAO,MAC1C,UAAAS,EAAK,MAAA,CACR,IAEA,gBAAAX,EAAC,QAAA,EAAK,WAAWE,EAAO,SAAS,gBAAcW,IAAS,SAAS,QAC9D,UAAAF,EAAK,MAAA,CACR;AAAA,MAAA,EAAA,GAT6B,GAAGA,EAAK,KAAK,IAAIC,CAAK,EAWvD;AAAA,IAEJ,CAAC;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
|
package/dist/Card-CIRGqg3P.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const s=require("react/jsx-runtime"),x=require("react"),h=require("clsx"),u=require("./Icon-B6lz-V0A.cjs"),O=require("./Skeleton-DK0lAjS9.cjs"),S=require("./IconButton-D3ZpI0XL.cjs"),R="_card_1b7xb_3",H="_flat_1b7xb_14",U="_header_1b7xb_18",G="_headerDivided_1b7xb_27",J="_headerMain_1b7xb_31",K="_icon_1b7xb_39",L="_headerText_1b7xb_43",P="_title_1b7xb_51",Q="_subtitle_1b7xb_64",V="_actions_1b7xb_78",W="_chevron_1b7xb_85",X="_collapsible_1b7xb_93",Y="_collapsed_1b7xb_98",Z="_collapsibleInner_1b7xb_101",$="_foldable_1b7xb_110",g="_body_1b7xb_114",ee="_footer_1b7xb_118",se="_stickyFooter_1b7xb_129",ne="_footerStart_1b7xb_144",le="_footerEnd_1b7xb_145",e={card:R,flat:H,header:U,headerDivided:G,headerMain:J,icon:K,headerText:L,title:P,subtitle:Q,actions:V,chevron:W,collapsible:X,collapsed:Y,collapsibleInner:Z,foldable:$,body:g,footer:ee,stickyFooter:se,footerStart:ne,footerEnd:le},te=new Set(u.ICON_NAMES),oe=x.forwardRef(function({title:o,subtitle:a,icon:l,color:k="accent",flat:E=!1,actions:c,footer:f,footerStart:v,stickyFooter:q=!1,collapsible:t=!1,collapsed:m,defaultCollapsed:M=!1,onCollapsedChange:r,loading:d=!1,className:D,children:i,...F},T){const j=m!==void 0,[B,C]=x.useState(M),n=t&&(j?m:B),N=x.useId(),w=()=>{const y=!n;j||C(y),r==null||r(y)},_=l==null?null:typeof l=="string"&&te.has(l)?s.jsx(u.Icon,{name:l}):l,A=o!=null||a!=null||_!=null||c!=null||t,I=d||i!=null&&i!=="",b=f!=null||v!=null,p=I||b,z=p&&!n;return s.jsxs("div",{ref:T,className:h.clsx(e.card,E&&e.flat,n&&e.collapsed,q&&b&&e.stickyFooter,D),"aria-busy":d||void 0,...F,children:[A&&s.jsxs("div",{className:h.clsx(e.header,z&&e.headerDivided),children:[s.jsxs("div",{className:e.headerMain,children:[_!=null&&s.jsx(S.IconButton,{variant:"filled",size:"sm",color:k,nonClickable:!0,"aria-hidden":!0,className:e.icon,children:_}),(o!=null||a!=null)&&s.jsxs("div",{className:e.headerText,children:[o!=null&&s.jsx("div",{className:e.title,children:o}),a!=null&&s.jsx("div",{className:e.subtitle,children:a})]})]}),(c!=null||t)&&s.jsxs("div",{className:e.actions,children:[!n&&c,t&&s.jsx(S.IconButton,{variant:"text",size:"sm","aria-label":n?"Expand":"Collapse","aria-expanded":!n,"aria-controls":N,onClick:w,children:s.jsx(u.Icon,{name:"ArrowUp3",className:e.chevron,"data-collapsed":n?"true":"false"})})]})]}),p&&s.jsx("div",{id:N,className:h.clsx(e.collapsible,t&&e.foldable),children:s.jsxs("div",{className:e.collapsibleInner,children:[I&&s.jsx("div",{className:e.body,children:d?s.jsx(O.Skeleton,{lines:3}):i}),b&&s.jsxs("div",{className:e.footer,children:[s.jsx("div",{className:e.footerStart,children:v}),s.jsx("div",{className:e.footerEnd,children:f})]})]})})]})});exports.Card=oe;
|
|
2
|
-
//# sourceMappingURL=Card-CIRGqg3P.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Card-CIRGqg3P.cjs","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { Skeleton } from '../Skeleton'\nimport { IconButton } from '../IconButton'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /**\n * Keep the footer **pinned to the bottom of the screen** while the card is taller than the viewport — so a\n * long form's Save / Cancel stay reachable without scrolling to the end. It sits in its normal place once\n * the card's end scrolls into view. Needs no `overflow` on the scrolling ancestors (the admin shell has\n * none). Defaults to `false`.\n */\n stickyFooter?: boolean\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Replace the body with skeleton lines while its data loads (header + footer stay). Defaults to `false`. */\n loading?: boolean\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). `stickyFooter` pins the footer to the bottom\n * of the screen while the card scrolls. Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n stickyFooter = false,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n loading = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = loading || (children != null && children !== '')\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.card,\n flat && styles.flat,\n isCollapsed && styles.collapsed,\n stickyFooter && hasFooter && styles.stickyFooter,\n className,\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={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 && (\n <div className={styles.body}>{loading ? <Skeleton lines={3} /> : children}</div>\n )}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","stickyFooter","collapsible","collapsed","defaultCollapsed","onCollapsedChange","loading","className","children","props","ref","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton","Skeleton"],"mappings":"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"}
|
package/dist/Card-Co3A4Qgo.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { jsx as a, jsxs as s } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as H, useState as R, useId as U } from "react";
|
|
3
|
-
import { clsx as h } from "clsx";
|
|
4
|
-
import { b as S, a as q } from "./Icon-D5TxgfCc.js";
|
|
5
|
-
import { S as G } from "./Skeleton-_-uGax2j.js";
|
|
6
|
-
import { I as E } from "./IconButton-t1OhAMNc.js";
|
|
7
|
-
const J = "_card_1b7xb_3", K = "_flat_1b7xb_14", L = "_header_1b7xb_18", P = "_headerDivided_1b7xb_27", Q = "_headerMain_1b7xb_31", V = "_icon_1b7xb_39", W = "_headerText_1b7xb_43", X = "_title_1b7xb_51", Y = "_subtitle_1b7xb_64", Z = "_actions_1b7xb_78", $ = "_chevron_1b7xb_85", g = "_collapsible_1b7xb_93", ee = "_collapsed_1b7xb_98", ae = "_collapsibleInner_1b7xb_101", le = "_foldable_1b7xb_110", se = "_body_1b7xb_114", oe = "_footer_1b7xb_118", te = "_stickyFooter_1b7xb_129", ne = "_footerStart_1b7xb_144", re = "_footerEnd_1b7xb_145", e = {
|
|
8
|
-
card: J,
|
|
9
|
-
flat: K,
|
|
10
|
-
header: L,
|
|
11
|
-
headerDivided: P,
|
|
12
|
-
headerMain: Q,
|
|
13
|
-
icon: V,
|
|
14
|
-
headerText: W,
|
|
15
|
-
title: X,
|
|
16
|
-
subtitle: Y,
|
|
17
|
-
actions: Z,
|
|
18
|
-
chevron: $,
|
|
19
|
-
collapsible: g,
|
|
20
|
-
collapsed: ee,
|
|
21
|
-
collapsibleInner: ae,
|
|
22
|
-
foldable: le,
|
|
23
|
-
body: se,
|
|
24
|
-
footer: oe,
|
|
25
|
-
stickyFooter: te,
|
|
26
|
-
footerStart: ne,
|
|
27
|
-
footerEnd: re
|
|
28
|
-
}, ce = new Set(q), me = H(function({
|
|
29
|
-
title: n,
|
|
30
|
-
subtitle: r,
|
|
31
|
-
icon: o,
|
|
32
|
-
color: k = "accent",
|
|
33
|
-
flat: M = !1,
|
|
34
|
-
actions: c,
|
|
35
|
-
footer: x,
|
|
36
|
-
footerStart: m,
|
|
37
|
-
stickyFooter: D = !1,
|
|
38
|
-
collapsible: t = !1,
|
|
39
|
-
collapsed: v,
|
|
40
|
-
defaultCollapsed: F = !1,
|
|
41
|
-
onCollapsedChange: d,
|
|
42
|
-
loading: i = !1,
|
|
43
|
-
className: T,
|
|
44
|
-
children: _,
|
|
45
|
-
...C
|
|
46
|
-
}, w) {
|
|
47
|
-
const u = v !== void 0, [A, j] = R(F), l = t && (u ? v : A), p = U(), z = () => {
|
|
48
|
-
const y = !l;
|
|
49
|
-
u || j(y), d == null || d(y);
|
|
50
|
-
}, b = o == null ? null : typeof o == "string" && ce.has(o) ? /* @__PURE__ */ a(S, { name: o }) : o, B = n != null || r != null || b != null || c != null || t, N = i || _ != null && _ !== "", f = x != null || m != null, I = N || f, O = I && !l;
|
|
51
|
-
return /* @__PURE__ */ s(
|
|
52
|
-
"div",
|
|
53
|
-
{
|
|
54
|
-
ref: w,
|
|
55
|
-
className: h(
|
|
56
|
-
e.card,
|
|
57
|
-
M && e.flat,
|
|
58
|
-
l && e.collapsed,
|
|
59
|
-
D && f && e.stickyFooter,
|
|
60
|
-
T
|
|
61
|
-
),
|
|
62
|
-
"aria-busy": i || void 0,
|
|
63
|
-
...C,
|
|
64
|
-
children: [
|
|
65
|
-
B && /* @__PURE__ */ s("div", { className: h(e.header, O && e.headerDivided), children: [
|
|
66
|
-
/* @__PURE__ */ s("div", { className: e.headerMain, children: [
|
|
67
|
-
b != null && /* @__PURE__ */ a(
|
|
68
|
-
E,
|
|
69
|
-
{
|
|
70
|
-
variant: "filled",
|
|
71
|
-
size: "sm",
|
|
72
|
-
color: k,
|
|
73
|
-
nonClickable: !0,
|
|
74
|
-
"aria-hidden": !0,
|
|
75
|
-
className: e.icon,
|
|
76
|
-
children: b
|
|
77
|
-
}
|
|
78
|
-
),
|
|
79
|
-
(n != null || r != null) && /* @__PURE__ */ s("div", { className: e.headerText, children: [
|
|
80
|
-
n != null && /* @__PURE__ */ a("div", { className: e.title, children: n }),
|
|
81
|
-
r != null && /* @__PURE__ */ a("div", { className: e.subtitle, children: r })
|
|
82
|
-
] })
|
|
83
|
-
] }),
|
|
84
|
-
(c != null || t) && /* @__PURE__ */ s("div", { className: e.actions, children: [
|
|
85
|
-
!l && c,
|
|
86
|
-
t && /* @__PURE__ */ a(
|
|
87
|
-
E,
|
|
88
|
-
{
|
|
89
|
-
variant: "text",
|
|
90
|
-
size: "sm",
|
|
91
|
-
"aria-label": l ? "Expand" : "Collapse",
|
|
92
|
-
"aria-expanded": !l,
|
|
93
|
-
"aria-controls": p,
|
|
94
|
-
onClick: z,
|
|
95
|
-
children: /* @__PURE__ */ a(
|
|
96
|
-
S,
|
|
97
|
-
{
|
|
98
|
-
name: "ArrowUp3",
|
|
99
|
-
className: e.chevron,
|
|
100
|
-
"data-collapsed": l ? "true" : "false"
|
|
101
|
-
}
|
|
102
|
-
)
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
] })
|
|
106
|
-
] }),
|
|
107
|
-
I && /* @__PURE__ */ a(
|
|
108
|
-
"div",
|
|
109
|
-
{
|
|
110
|
-
id: p,
|
|
111
|
-
className: h(e.collapsible, t && e.foldable),
|
|
112
|
-
children: /* @__PURE__ */ s("div", { className: e.collapsibleInner, children: [
|
|
113
|
-
N && /* @__PURE__ */ a("div", { className: e.body, children: i ? /* @__PURE__ */ a(G, { lines: 3 }) : _ }),
|
|
114
|
-
f && /* @__PURE__ */ s("div", { className: e.footer, children: [
|
|
115
|
-
/* @__PURE__ */ a("div", { className: e.footerStart, children: m }),
|
|
116
|
-
/* @__PURE__ */ a("div", { className: e.footerEnd, children: x })
|
|
117
|
-
] })
|
|
118
|
-
] })
|
|
119
|
-
}
|
|
120
|
-
)
|
|
121
|
-
]
|
|
122
|
-
}
|
|
123
|
-
);
|
|
124
|
-
});
|
|
125
|
-
export {
|
|
126
|
-
me as C
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=Card-Co3A4Qgo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Card-Co3A4Qgo.js","sources":["../src/components/Card/Card.tsx"],"sourcesContent":["import { forwardRef, useId, useState, type HTMLAttributes, type ReactNode } from 'react'\nimport { clsx } from 'clsx'\nimport { Icon } from '../Icon'\nimport { Skeleton } from '../Skeleton'\nimport { IconButton } from '../IconButton'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport styles from './Card.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'color'> {\n /** Header title (left, next to the icon). */\n title?: ReactNode\n /** Secondary muted line shown under the `title` (e.g. a short description). */\n subtitle?: ReactNode\n /** Leading header icon — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n /** Theme color that tints the leading icon box. Defaults to `accent`. */\n color?: ThemeColor\n /** Marks the card flat (used by `PageLayout`). Cards are shadowless, so this currently adds no visual difference — it's a styling hook, not a distinct look. */\n flat?: boolean\n /** Header actions, placed at the end of the header row (before the collapse toggle). */\n actions?: ReactNode\n /** Footer content (e.g. actions), pinned to the **right** of the footer row. */\n footer?: ReactNode\n /** Footer content pinned to the **left** of the footer row (opposite `footer`). */\n footerStart?: ReactNode\n /**\n * Keep the footer **pinned to the bottom of the screen** while the card is taller than the viewport — so a\n * long form's Save / Cancel stay reachable without scrolling to the end. It sits in its normal place once\n * the card's end scrolls into view. Needs no `overflow` on the scrolling ancestors (the admin shell has\n * none). Defaults to `false`.\n */\n stickyFooter?: boolean\n /** Adds a collapse/expand toggle to the header that folds the body + footer. */\n collapsible?: boolean\n /** Controlled collapsed state. */\n collapsed?: boolean\n /** Initial collapsed state for uncontrolled use. Defaults to `false`. */\n defaultCollapsed?: boolean\n /** Fires with the next collapsed state when the toggle is clicked. */\n onCollapsedChange?: (collapsed: boolean) => void\n /** Replace the body with skeleton lines while its data loads (header + footer stay). Defaults to `false`. */\n loading?: boolean\n /** Card body. */\n children?: ReactNode\n}\n\n/**\n * A surface card with an optional header (icon + title + actions), a body, and a footer for actions.\n * `collapsible` adds a chevron that smoothly folds the body + footer (controlled via `collapsed`/\n * `onCollapsedChange`, or uncontrolled via `defaultCollapsed`). `stickyFooter` pins the footer to the bottom\n * of the screen while the card scrolls. Token-only styling.\n */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n title,\n subtitle,\n icon,\n color = 'accent',\n flat = false,\n actions,\n footer,\n footerStart,\n stickyFooter = false,\n collapsible = false,\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n loading = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const isControlled = collapsed !== undefined\n const [internal, setInternal] = useState(defaultCollapsed)\n const isCollapsed = collapsible && (isControlled ? collapsed! : internal)\n const collapsibleId = useId() // ties the toggle to the fold region via aria-controls\n\n const toggle = () => {\n const next = !isCollapsed\n if (!isControlled) setInternal(next)\n onCollapsedChange?.(next)\n }\n\n const renderedIcon =\n icon == null ? null : typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} />\n ) : (\n icon\n )\n\n const hasHeader =\n title != null || subtitle != null || renderedIcon != null || actions != null || collapsible\n const hasBody = loading || (children != null && children !== '')\n const hasFooter = footer != null || footerStart != null\n const hasCollapsibleContent = hasBody || hasFooter\n // The header is separated by a divider only while content is visible beneath it.\n const headerDivided = hasCollapsibleContent && !isCollapsed\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.card,\n flat && styles.flat,\n isCollapsed && styles.collapsed,\n stickyFooter && hasFooter && styles.stickyFooter,\n className,\n )}\n aria-busy={loading || undefined}\n {...props}\n >\n {hasHeader && (\n <div className={clsx(styles.header, headerDivided && styles.headerDivided)}>\n <div className={styles.headerMain}>\n {renderedIcon != null && (\n <IconButton\n variant=\"filled\"\n size=\"sm\"\n color={color}\n nonClickable\n aria-hidden\n className={styles.icon}\n >\n {renderedIcon}\n </IconButton>\n )}\n {(title != null || subtitle != null) && (\n <div className={styles.headerText}>\n {title != null && <div className={styles.title}>{title}</div>}\n {subtitle != null && <div className={styles.subtitle}>{subtitle}</div>}\n </div>\n )}\n </div>\n {(actions != null || collapsible) && (\n <div className={styles.actions}>\n {!isCollapsed && actions}\n {collapsible && (\n <IconButton\n variant=\"text\"\n size=\"sm\"\n aria-label={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 && (\n <div className={styles.body}>{loading ? <Skeleton lines={3} /> : children}</div>\n )}\n {hasFooter && (\n <div className={styles.footer}>\n <div className={styles.footerStart}>{footerStart}</div>\n <div className={styles.footerEnd}>{footer}</div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["ICON_NAME_SET","ICON_NAMES","Card","forwardRef","title","subtitle","icon","color","flat","actions","footer","footerStart","stickyFooter","collapsible","collapsed","defaultCollapsed","onCollapsedChange","loading","className","children","props","ref","isControlled","internal","setInternal","useState","isCollapsed","collapsibleId","useId","toggle","next","renderedIcon","jsx","Icon","hasHeader","hasBody","hasFooter","hasCollapsibleContent","headerDivided","jsxs","clsx","styles","IconButton","Skeleton"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-BjSNgaAf.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;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Chip-Dp8skUZ2.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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const s=require("react/jsx-runtime"),a=require("react"),$=require("clsx"),V=require("./formContext-bTWrqdEV.cjs"),P=require("./Typography-d97DdbNd.cjs"),w=require("./Icon-B6lz-V0A.cjs"),R=a.createContext(null);function H(){return a.useContext(R)}const J="_group_fjrqx_2",K="_groupLabel_fjrqx_8",Q="_required_fjrqx_13",U="_grid_fjrqx_17",W="_card_fjrqx_24",X="_disabled_fjrqx_42",Y="_selected_fjrqx_42",Z="_input_fjrqx_51",ee="_error_fjrqx_55",re="_left_fjrqx_67",se="_text_fjrqx_71",te="_sm_fjrqx_77",oe="_md_fjrqx_85",ce="_lg_fjrqx_93",le="_indicator_fjrqx_117",ne="_radioDot_fjrqx_162",ie="_iconBox_fjrqx_185",ae="_label_fjrqx_212",de="_description_fjrqx_219",r={group:J,groupLabel:K,required:Q,grid:U,card:W,disabled:X,selected:Y,input:Z,error:ee,left:re,text:se,sm:te,md:oe,lg:ce,indicator:le,radioDot:ne,iconBox:ie,label:ae,description:de},_e=new Set(w.ICON_NAMES),T=a.forwardRef(function({value:c,label:d,description:_,icon:o,align:l,color:h,size:b,error:g,checked:x,onChange:f,name:S,disabled:I,className:z,style:A,...B},D){const e=H(),p=h??(e==null?void 0:e.color)??"primary",C=b??(e==null?void 0:e.size)??"md",v=g??(e==null?void 0:e.error)??!1,u=I??(e==null?void 0:e.disabled)??!1,i=S??(e==null?void 0:e.name),N=l??(e==null?void 0:e.align)??(o==null?"left":"center"),[j,y]=a.useState(!1),m=e?e.isSelected(c):x!==void 0?x:j,E=n=>{if(!u){if(e){e.toggle(c);return}x===void 0&&y(n.target.checked),f==null||f(n.target.checked)}},G=typeof o=="string"&&_e.has(o)?s.jsx(w.Icon,{name:o,size:C}):o;return s.jsxs("label",{className:$.clsx(r.card,r[C],N==="left"&&r.left,m&&r.selected,v&&r.error,u&&r.disabled,z),style:{"--tz-btn-rgb":`var(--tz-color-${p}-rgb)`,"--tz-btn-on":`var(--tz-color-${p}-contrast, #fff)`,...A},children:[s.jsx("input",{ref:D,type:e!=null&&e.exclusive?"radio":"checkbox",className:r.input,name:i,value:c,checked:m,onChange:E,disabled:u,"aria-invalid":v||void 0,...B}),s.jsx("span",{className:$.clsx(r.indicator,(e==null?void 0:e.exclusive)&&r.radioDot),"aria-hidden":"true"}),o!=null&&s.jsx("span",{className:r.iconBox,"aria-hidden":"true",children:G}),(d!=null||_!=null)&&s.jsxs("span",{className:r.text,children:[d!=null&&s.jsx("span",{className:r.label,children:d}),_!=null&&s.jsx("span",{className:r.description,children:_})]})]})}),xe=a.forwardRef(function({exclusive:c=!1,value:d,defaultValue:_,onChange:o,name:l,options:h,label:b,minCardWidth:g=160,align:x,size:f="md",color:S="primary",error:I,required:z=!1,disabled:A=!1,children:B,className:D,style:e,...p},C){const v=a.useId(),u=l??`choice-${v}`,i=V.useFormContext(),N=!!(i&&l),j=i&&l?i.field(l):void 0,y=d!==void 0?d:N?i.values[l]:void 0,m=y!==void 0,[E,G]=a.useState(_),n=m?y:E,k=I??(j==null?void 0:j.error)??!1,M={name:u,exclusive:c,isSelected:t=>c?n===t:Array.isArray(n)&&n.includes(t),toggle:t=>{let q;if(c)q=t;else{const L=Array.isArray(n)?n:[];q=L.includes(t)?L.filter(O=>O!==t):[...L,t]}m||G(q),N&&i.setValue(l,q),o==null||o(q)},size:f,align:x,color:S,disabled:A,error:k};return s.jsxs("div",{ref:C,role:c?"radiogroup":"group","aria-invalid":k||void 0,className:$.clsx(r.group,D),style:e,...p,children:[b!=null&&s.jsxs("span",{className:r.groupLabel,children:[s.jsx(P.Typography,{as:"span",variant:"bodySmall",color:"muted",children:b}),z&&s.jsx("span",{className:r.required,"aria-hidden":"true",children:"*"})]}),s.jsx("div",{className:r.grid,style:{"--cc-min":`${g}px`},children:s.jsx(R.Provider,{value:M,children:h?h.map(t=>s.jsx(T,{value:t.value,label:t.label,description:t.description,icon:t.icon,disabled:t.disabled},t.value)):B})})]})});exports.ChoiceCard=T;exports.ChoiceCardGroup=xe;
|
|
2
|
-
//# sourceMappingURL=ChoiceCardGroup-143hR0v_.cjs.map
|
|
@@ -1,180 +0,0 @@
|
|
|
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-ChSuxgkc.js";
|
|
6
|
-
import { b as Q, a as U } from "./Icon-D5TxgfCc.js";
|
|
7
|
-
const F = R(null);
|
|
8
|
-
function W() {
|
|
9
|
-
return P(F);
|
|
10
|
-
}
|
|
11
|
-
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 = {
|
|
12
|
-
group: X,
|
|
13
|
-
groupLabel: Y,
|
|
14
|
-
required: Z,
|
|
15
|
-
grid: ee,
|
|
16
|
-
card: re,
|
|
17
|
-
disabled: se,
|
|
18
|
-
selected: te,
|
|
19
|
-
input: oe,
|
|
20
|
-
error: le,
|
|
21
|
-
left: ae,
|
|
22
|
-
text: ce,
|
|
23
|
-
sm: ie,
|
|
24
|
-
md: ne,
|
|
25
|
-
lg: de,
|
|
26
|
-
indicator: _e,
|
|
27
|
-
radioDot: fe,
|
|
28
|
-
iconBox: me,
|
|
29
|
-
label: ue,
|
|
30
|
-
description: xe
|
|
31
|
-
}, pe = new Set(U), be = T(function({
|
|
32
|
-
value: l,
|
|
33
|
-
label: n,
|
|
34
|
-
description: d,
|
|
35
|
-
icon: o,
|
|
36
|
-
align: a,
|
|
37
|
-
color: b,
|
|
38
|
-
size: q,
|
|
39
|
-
error: g,
|
|
40
|
-
checked: _,
|
|
41
|
-
onChange: f,
|
|
42
|
-
name: S,
|
|
43
|
-
disabled: z,
|
|
44
|
-
className: A,
|
|
45
|
-
style: I,
|
|
46
|
-
...B
|
|
47
|
-
}, D) {
|
|
48
|
-
const e = W(), h = b ?? (e == null ? void 0 : e.color) ?? "primary", j = q ?? (e == null ? void 0 : e.size) ?? "md", v = g ?? (e == null ? void 0 : e.error) ?? !1, m = z ?? (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) => {
|
|
49
|
-
if (!m) {
|
|
50
|
-
if (e) {
|
|
51
|
-
e.toggle(l);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
_ === void 0 && C(c.target.checked), f == null || f(c.target.checked);
|
|
55
|
-
}
|
|
56
|
-
}, G = typeof o == "string" && pe.has(o) ? /* @__PURE__ */ t(Q, { name: o, size: j }) : o;
|
|
57
|
-
return /* @__PURE__ */ y(
|
|
58
|
-
"label",
|
|
59
|
-
{
|
|
60
|
-
className: $(
|
|
61
|
-
r.card,
|
|
62
|
-
r[j],
|
|
63
|
-
N === "left" && r.left,
|
|
64
|
-
x && r.selected,
|
|
65
|
-
v && r.error,
|
|
66
|
-
m && r.disabled,
|
|
67
|
-
A
|
|
68
|
-
),
|
|
69
|
-
style: {
|
|
70
|
-
"--tz-btn-rgb": `var(--tz-color-${h}-rgb)`,
|
|
71
|
-
"--tz-btn-on": `var(--tz-color-${h}-contrast, #fff)`,
|
|
72
|
-
...I
|
|
73
|
-
},
|
|
74
|
-
children: [
|
|
75
|
-
/* @__PURE__ */ t(
|
|
76
|
-
"input",
|
|
77
|
-
{
|
|
78
|
-
ref: D,
|
|
79
|
-
type: e != null && e.exclusive ? "radio" : "checkbox",
|
|
80
|
-
className: r.input,
|
|
81
|
-
name: i,
|
|
82
|
-
value: l,
|
|
83
|
-
checked: x,
|
|
84
|
-
onChange: E,
|
|
85
|
-
disabled: m,
|
|
86
|
-
"aria-invalid": v || void 0,
|
|
87
|
-
...B
|
|
88
|
-
}
|
|
89
|
-
),
|
|
90
|
-
/* @__PURE__ */ t(
|
|
91
|
-
"span",
|
|
92
|
-
{
|
|
93
|
-
className: $(r.indicator, (e == null ? void 0 : e.exclusive) && r.radioDot),
|
|
94
|
-
"aria-hidden": "true"
|
|
95
|
-
}
|
|
96
|
-
),
|
|
97
|
-
o != null && /* @__PURE__ */ t("span", { className: r.iconBox, "aria-hidden": "true", children: G }),
|
|
98
|
-
(n != null || d != null) && /* @__PURE__ */ y("span", { className: r.text, children: [
|
|
99
|
-
n != null && /* @__PURE__ */ t("span", { className: r.label, children: n }),
|
|
100
|
-
d != null && /* @__PURE__ */ t("span", { className: r.description, children: d })
|
|
101
|
-
] })
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
}), Se = T(
|
|
106
|
-
function({
|
|
107
|
-
exclusive: l = !1,
|
|
108
|
-
value: n,
|
|
109
|
-
defaultValue: d,
|
|
110
|
-
onChange: o,
|
|
111
|
-
name: a,
|
|
112
|
-
options: b,
|
|
113
|
-
label: q,
|
|
114
|
-
minCardWidth: g = 160,
|
|
115
|
-
align: _,
|
|
116
|
-
size: f = "md",
|
|
117
|
-
color: S = "primary",
|
|
118
|
-
error: z,
|
|
119
|
-
required: A = !1,
|
|
120
|
-
disabled: I = !1,
|
|
121
|
-
children: B,
|
|
122
|
-
className: D,
|
|
123
|
-
style: e,
|
|
124
|
-
...h
|
|
125
|
-
}, j) {
|
|
126
|
-
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 = z ?? (u == null ? void 0 : u.error) ?? !1, O = {
|
|
127
|
-
name: m,
|
|
128
|
-
exclusive: l,
|
|
129
|
-
isSelected: (s) => l ? c === s : Array.isArray(c) && c.includes(s),
|
|
130
|
-
toggle: (s) => {
|
|
131
|
-
let p;
|
|
132
|
-
if (l)
|
|
133
|
-
p = s;
|
|
134
|
-
else {
|
|
135
|
-
const L = Array.isArray(c) ? c : [];
|
|
136
|
-
p = L.includes(s) ? L.filter((V) => V !== s) : [...L, s];
|
|
137
|
-
}
|
|
138
|
-
x || G(p), N && i.setValue(a, p), o == null || o(p);
|
|
139
|
-
},
|
|
140
|
-
size: f,
|
|
141
|
-
align: _,
|
|
142
|
-
color: S,
|
|
143
|
-
disabled: I,
|
|
144
|
-
error: k
|
|
145
|
-
};
|
|
146
|
-
return /* @__PURE__ */ y(
|
|
147
|
-
"div",
|
|
148
|
-
{
|
|
149
|
-
ref: j,
|
|
150
|
-
role: l ? "radiogroup" : "group",
|
|
151
|
-
"aria-invalid": k || void 0,
|
|
152
|
-
className: $(r.group, D),
|
|
153
|
-
style: e,
|
|
154
|
-
...h,
|
|
155
|
-
children: [
|
|
156
|
-
q != null && /* @__PURE__ */ y("span", { className: r.groupLabel, children: [
|
|
157
|
-
/* @__PURE__ */ t(K, { as: "span", variant: "bodySmall", color: "muted", children: q }),
|
|
158
|
-
A && /* @__PURE__ */ t("span", { className: r.required, "aria-hidden": "true", children: "*" })
|
|
159
|
-
] }),
|
|
160
|
-
/* @__PURE__ */ t("div", { className: r.grid, style: { "--cc-min": `${g}px` }, children: /* @__PURE__ */ t(F.Provider, { value: O, children: b ? b.map((s) => /* @__PURE__ */ t(
|
|
161
|
-
be,
|
|
162
|
-
{
|
|
163
|
-
value: s.value,
|
|
164
|
-
label: s.label,
|
|
165
|
-
description: s.description,
|
|
166
|
-
icon: s.icon,
|
|
167
|
-
disabled: s.disabled
|
|
168
|
-
},
|
|
169
|
-
s.value
|
|
170
|
-
)) : B }) })
|
|
171
|
-
]
|
|
172
|
-
}
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
);
|
|
176
|
-
export {
|
|
177
|
-
be as C,
|
|
178
|
-
Se as a
|
|
179
|
-
};
|
|
180
|
-
//# sourceMappingURL=ChoiceCardGroup-Cx8CtmPl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChoiceCardGroup-Cx8CtmPl.js","sources":["../src/components/ChoiceCard/choiceCardContext.ts","../src/components/ChoiceCard/ChoiceCard.tsx","../src/components/ChoiceCard/ChoiceCardGroup.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { ThemeColor } from '../../theme'\nimport type { ChoiceCardAlign, ChoiceCardSize } from './ChoiceCard'\n\n/** Shared state a `<ChoiceCardGroup>` hands down to its `<ChoiceCard>` children via context. */\nexport interface ChoiceCardGroupContextValue {\n /** Shared input `name` — in `exclusive` mode the cards are native radios and must share one. */\n name?: string\n /** Single-selection (radio semantics) vs multiple (checkbox semantics). */\n exclusive: boolean\n /** Whether a card's value is currently selected. */\n isSelected: (value: string) => boolean\n /** Select / toggle a value — called by a child `<ChoiceCard>` on change. */\n toggle: (value: string) => void\n size?: ChoiceCardSize\n align?: ChoiceCardAlign\n color?: ThemeColor\n disabled?: boolean\n error?: boolean\n}\n\nexport const ChoiceCardGroupContext = createContext<ChoiceCardGroupContextValue | null>(null)\n\n/** Read the surrounding `<ChoiceCardGroup>` so a `<ChoiceCard>` can wire itself in (or `null` when standalone). */\nexport function useChoiceCardGroupContext(): ChoiceCardGroupContextValue | null {\n return useContext(ChoiceCardGroupContext)\n}\n","import {\n forwardRef,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport type { ThemeColor } from '../../theme'\nimport { ICON_NAMES, type IconName } from '../../icons/names'\nimport { Icon } from '../Icon'\nimport { useChoiceCardGroupContext } from './choiceCardContext'\nimport styles from './ChoiceCard.module.css'\n\nconst ICON_NAME_SET = new Set<string>(ICON_NAMES)\n\nexport type ChoiceCardSize = 'sm' | 'md' | 'lg'\nexport type ChoiceCardAlign = 'left' | 'center'\n\nexport interface ChoiceCardProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'color' | 'type' | 'onChange' | 'value'\n> {\n /** This card's value — selected when the surrounding `ChoiceCardGroup`'s value holds it. */\n value: string\n /** Card title. */\n label?: ReactNode\n /** Muted description line under the title. */\n description?: ReactNode\n /** Leading icon in a tinted circle — a known `IconName` or any node. Optional. */\n icon?: IconName | ReactNode\n /**\n * Content alignment. `center` centers the icon + text stack; `left` anchors the same stack to the\n * left edge (icon above left-aligned text). Defaults to the group's `align`, else `center` with an\n * icon and `left` without one.\n */\n align?: ChoiceCardAlign\n /** Theme palette token for the selected tint. Defaults to `primary` (inherits the group's `color`). */\n color?: ThemeColor\n /** Preset size — padding, icon circle and fonts. Inherits the group's `size` when omitted. */\n size?: ChoiceCardSize\n /** Marks the card invalid — reddens the border + indicator. Inherits the group's `error`. */\n error?: boolean\n /** Controlled selected state for standalone use (inside a `ChoiceCardGroup` the group drives this). */\n checked?: boolean\n /** Fires with the next selected state (standalone use). */\n onChange?: (checked: boolean) => void\n}\n\n/**\n * A selectable card — a rich checkbox/radio with an icon, title and description. The native input is\n * visually hidden but fully accessible (Space toggles; in an `exclusive` group the cards are real\n * radios, so Arrow keys rove between them); the card shows the state with a accent border + soft halo,\n * a top-right tick indicator, and an icon circle that fills with the color while selected. Designed to\n * live inside a `<ChoiceCardGroup>` (which supplies the selection, `exclusive` mode and\n * `size`/`color`/`disabled`/`error` via context), but also works standalone as a single fancy checkbox\n * (`checked` + `onChange`). Styling uses `--tz-*` tokens via the shared `--tz-btn-rgb` pattern.\n */\nexport const ChoiceCard = forwardRef<HTMLInputElement, ChoiceCardProps>(function ChoiceCard(\n {\n value,\n label,\n description,\n icon,\n align,\n color,\n size,\n error,\n checked,\n onChange,\n name,\n disabled,\n className,\n style,\n ...props\n },\n ref,\n) {\n const group = useChoiceCardGroupContext()\n\n const resolvedColor = color ?? group?.color ?? 'primary'\n const resolvedSize = size ?? group?.size ?? 'md'\n const resolvedError = error ?? group?.error ?? false\n const resolvedDisabled = disabled ?? group?.disabled ?? false\n const resolvedName = name ?? group?.name\n // explicit prop → group's align → smart default (an icon centers the card, no icon reads as a row)\n const resolvedAlign = align ?? group?.align ?? (icon == null ? 'left' : 'center')\n\n // In a group the selection comes from context; standalone it's controlled (`checked`) or local.\n const [internal, setInternal] = useState(false)\n const isChecked = group ? group.isSelected(value) : checked !== undefined ? checked : internal\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (resolvedDisabled) return\n if (group) {\n group.toggle(value)\n return\n }\n if (checked === undefined) setInternal(event.target.checked)\n onChange?.(event.target.checked)\n }\n\n const iconNode =\n typeof icon === 'string' && ICON_NAME_SET.has(icon) ? (\n <Icon name={icon as IconName} size={resolvedSize} />\n ) : (\n icon\n )\n\n return (\n <label\n className={clsx(\n styles.card,\n styles[resolvedSize],\n resolvedAlign === 'left' && styles.left,\n isChecked && styles.selected,\n resolvedError && styles.error,\n resolvedDisabled && styles.disabled,\n className,\n )}\n style={\n {\n '--tz-btn-rgb': `var(--tz-color-${resolvedColor}-rgb)`,\n '--tz-btn-on': `var(--tz-color-${resolvedColor}-contrast, #fff)`,\n ...style,\n } as CSSProperties\n }\n >\n <input\n ref={ref}\n type={group?.exclusive ? 'radio' : 'checkbox'}\n className={styles.input}\n name={resolvedName}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n disabled={resolvedDisabled}\n aria-invalid={resolvedError || undefined}\n {...props}\n />\n {/* top-right selection indicator — radio-style ring + dot in exclusive groups (mirrors Radio),\n else a circle that fills with the theme color + a CSS tick (checkbox semantics) */}\n <span\n className={clsx(styles.indicator, group?.exclusive && styles.radioDot)}\n aria-hidden=\"true\"\n />\n {icon != null && (\n <span className={styles.iconBox} aria-hidden=\"true\">\n {iconNode}\n </span>\n )}\n {(label != null || description != null) && (\n <span className={styles.text}>\n {label != null && <span className={styles.label}>{label}</span>}\n {description != null && <span className={styles.description}>{description}</span>}\n </span>\n )}\n </label>\n )\n})\n","import {\n forwardRef,\n useId,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useFormContext } from '../../form/formContext'\nimport type { ThemeColor } from '../../theme'\nimport type { IconName } from '../../icons/names'\nimport { Typography } from '../Typography'\nimport { ChoiceCard, type ChoiceCardAlign, type ChoiceCardSize } from './ChoiceCard'\nimport { ChoiceCardGroupContext, type ChoiceCardGroupContextValue } from './choiceCardContext'\nimport styles from './ChoiceCard.module.css'\n\n/** A single card for the data-driven `options` prop. */\nexport interface ChoiceCardOption {\n value: string\n /** Card title. */\n label?: ReactNode\n /** Muted description line under the title. */\n description?: ReactNode\n /** Leading icon in a tinted circle — a known `IconName` or any node. */\n icon?: IconName | ReactNode\n disabled?: boolean\n}\n\nexport interface ChoiceCardGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'color' | 'onChange' | 'defaultValue'\n> {\n /**\n * Single-selection (radio semantics — the cards are native radios, `value` is a `string | null`,\n * clicking the selected card keeps it selected) vs multiple (checkbox semantics — `value` is a\n * `string[]`). Defaults to `false` (multiple).\n */\n exclusive?: boolean\n /** Controlled value — a `string | null` when `exclusive`, else a `string[]`. */\n value?: string | string[] | null\n /** Initial value for uncontrolled use (same shape as `value`). */\n defaultValue?: string | string[] | null\n /** Fires with the next value (matches the `exclusive` shape). */\n onChange?: (value: string | string[] | null) => void\n /**\n * Input `name` — shared by the radios in `exclusive` mode, and the `<Form>` binding key (form value:\n * `string` when `exclusive`, else `string[]`). Auto-generated when omitted.\n */\n name?: string\n /** Data-driven cards — an alternative to passing `<ChoiceCard>` children. */\n options?: ChoiceCardOption[]\n /** Group label rendered above the cards. */\n label?: ReactNode\n /** Minimum card width in px — the grid fits as many per row as this allows. Defaults to `160`. */\n minCardWidth?: number\n /**\n * Content alignment for every card. `center` centers the icon + text stack; `left` anchors the same\n * stack to the left edge (icon above left-aligned text). Omit for the smart default — cards with an\n * icon center, icon-less cards left-align. A card's own `align` wins.\n */\n align?: ChoiceCardAlign\n /** Preset size for every card. Defaults to `md`. */\n size?: ChoiceCardSize\n /** Theme palette token for the selected tint. Defaults to `primary`. */\n color?: ThemeColor\n /** Marks the group invalid — reddens the card borders (no message text, like `RadioGroup`). */\n error?: boolean\n /** Adds a red asterisk after the label. */\n required?: boolean\n /** Disables every card in the group. */\n disabled?: boolean\n /** `<ChoiceCard>` children (used when `options` is not given). */\n children?: ReactNode\n}\n\n/**\n * A group of selectable cards — rich checkboxes/radios with icons, titles and descriptions (role\n * pickers, plan choices, permission sets). **`exclusive`** picks single-selection (radio semantics —\n * `value` is a `string | null` and Arrow keys rove between the cards) vs multiple (checkbox semantics —\n * `value` is a `string[]`); defaults to `false` (multiple). Controlled (`value` + `onChange`) or\n * uncontrolled (`defaultValue`); supply the cards via the data-driven `options` prop (`{ value, label,\n * description?, icon?, disabled? }[]`) or as `<ChoiceCard>` children. The cards lay out on a\n * **responsive grid** (`minCardWidth`, default `160` — as many per row as fit, wrapping below). Binds\n * to a surrounding `<Form>` by **`name`** — the form value is a `string` when `exclusive` (validate\n * with e.g. `z.string().min(1)`), else a `string[]` (`z.array(z.string()).min(1)`); the form's `error`\n * reddens the card borders (no message text, like `RadioGroup`). `role=\"radiogroup\"` / `\"group\"`;\n * styling uses `--tz-*` tokens via the shared `--tz-btn-rgb` pattern.\n */\nexport const ChoiceCardGroup = forwardRef<HTMLDivElement, ChoiceCardGroupProps>(\n function ChoiceCardGroup(\n {\n exclusive = false,\n value,\n defaultValue,\n onChange,\n name,\n options,\n label,\n minCardWidth = 160,\n align,\n size = 'md',\n color = 'primary',\n error,\n required = false,\n disabled = false,\n children,\n className,\n style,\n ...props\n },\n ref,\n ) {\n // exclusive cards are native radios — they need a shared input name even without a form\n const reactId = useId()\n const resolvedName = name ?? `choice-${reactId}`\n\n // Auto-bind to a surrounding <Form> by `name` — the form value mirrors the `exclusive` shape.\n const form = useFormContext()\n const isFormBound = Boolean(form && name)\n const bound = form && name ? form.field(name) : undefined\n\n const externalValue: string | string[] | null | undefined =\n value !== undefined\n ? value\n : isFormBound\n ? (form!.values[name!] as string | string[] | null | undefined)\n : undefined\n const isControlled = externalValue !== undefined\n const [internal, setInternal] = useState<string | string[] | null | undefined>(defaultValue)\n const current = isControlled ? externalValue : internal\n\n const resolvedError = error ?? bound?.error ?? false\n\n const isSelected = (v: string) =>\n exclusive ? current === v : Array.isArray(current) && current.includes(v)\n\n const toggle = (v: string) => {\n let next: string | string[] | null\n if (exclusive) {\n next = v // radio semantics — selecting again keeps it selected\n } else {\n const arr = Array.isArray(current) ? current : []\n next = arr.includes(v) ? arr.filter((x) => x !== v) : [...arr, v]\n }\n if (!isControlled) setInternal(next)\n if (isFormBound) form!.setValue(name!, next)\n onChange?.(next)\n }\n\n const ctx: ChoiceCardGroupContextValue = {\n name: resolvedName,\n exclusive,\n isSelected,\n toggle,\n size,\n align,\n color,\n disabled,\n error: resolvedError,\n }\n\n return (\n <div\n ref={ref}\n role={exclusive ? 'radiogroup' : 'group'}\n aria-invalid={resolvedError || undefined}\n className={clsx(styles.group, className)}\n style={style as CSSProperties}\n {...props}\n >\n {label != null && (\n <span className={styles.groupLabel}>\n <Typography as=\"span\" variant=\"bodySmall\" color=\"muted\">\n {label}\n </Typography>\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n )}\n\n <div className={styles.grid} style={{ '--cc-min': `${minCardWidth}px` } as CSSProperties}>\n <ChoiceCardGroupContext.Provider value={ctx}>\n {options\n ? options.map((option) => (\n <ChoiceCard\n key={option.value}\n value={option.value}\n label={option.label}\n description={option.description}\n icon={option.icon}\n disabled={option.disabled}\n />\n ))\n : children}\n </ChoiceCardGroupContext.Provider>\n </div>\n </div>\n )\n },\n)\n"],"names":["ChoiceCardGroupContext","createContext","useChoiceCardGroupContext","useContext","ICON_NAME_SET","ICON_NAMES","ChoiceCard","forwardRef","value","label","description","icon","align","color","size","error","checked","onChange","name","disabled","className","style","props","ref","group","resolvedColor","resolvedSize","resolvedError","resolvedDisabled","resolvedName","resolvedAlign","internal","setInternal","useState","isChecked","handleChange","event","iconNode","jsx","Icon","jsxs","clsx","styles","ChoiceCardGroup","exclusive","defaultValue","options","minCardWidth","required","children","reactId","useId","form","useFormContext","isFormBound","bound","externalValue","isControlled","current","ctx","v","next","arr","x","Typography","option"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock-CcJjS0_q.js","sources":["../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Tooltip } from '../Tooltip'\nimport styles from './CodeBlock.module.css'\n\n// how long the copy button shows the \"copied\" tick before reverting\nconst COPIED_RESET_MS = 1600\n\nexport interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'title'> {\n /** The source code to render. */\n code: string\n /** Shiki language id (`'tsx'`, `'json'`, `'bash'`, `'css'`, …). Defaults to `'tsx'`. */\n language?: string\n /**\n * Optional label shown on the left of the header bar (e.g. a filename). The header bar itself always\n * renders (whenever `copyable`), so the copy button lives in it with or without a `title`.\n */\n title?: ReactNode\n /** Show a copy-to-clipboard button (in the header bar). Defaults to `true`. */\n copyable?: boolean\n /** Show line numbers. Defaults to `true`. */\n showLineNumbers?: boolean\n /** Cap the block height in px — taller code scrolls inside. */\n maxHeight?: number\n /** Soft-wrap long lines instead of scrolling horizontally. Defaults to `false`. */\n wrap?: boolean\n}\n\n/**\n * A syntax-highlighted code block with **VS Code colors** — powered by **Shiki** (an optional peer,\n * `npm i shiki`), the actual VS Code highlighting engine, using its **`dark-plus`** theme. The block\n * is **always dark** (in both app modes) — code reads best on a dark surface, and the deep background\n * anchors it regardless of the surrounding light/dark theme. Highlighting is **async and lazy**\n * (`import('shiki')` on first render); until it lands — or if `shiki` isn't installed / the language\n * is unknown — the block shows the plain code (on the same dark surface), so nothing breaks. A header\n * bar always renders (whenever `copyable`, default `true`) and holds the copy button — which flips to a\n * tick on click — with an optional `title` (e.g. a filename) on its left; `showLineNumbers` (default\n * `true`), `maxHeight` (scrolls inside) and `wrap` shape the body. The whole block\n * keeps VS Code's own dark colors (a deliberate literal-color exception, like the Modal scrim); only\n * the outer border/radius uses `--tz-*` tokens.\n */\nexport const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(function CodeBlock(\n {\n code,\n language = 'tsx',\n title,\n copyable = true,\n showLineNumbers = true,\n maxHeight,\n wrap = false,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const [html, setHtml] = useState<string | null>(null)\n const [copied, setCopied] = useState(false)\n const copyTimer = useRef<number | undefined>(undefined)\n\n // highlight asynchronously — shiki is an optional peer, loaded lazily on first use; a missing\n // package or an unknown language just leaves the plain (unhighlighted) fallback in place\n useEffect(() => {\n let cancelled = false\n import('shiki')\n .then(({ codeToHtml }) =>\n codeToHtml(code, {\n lang: language,\n // always VS Code's dark theme — the block stays dark in both app modes\n theme: 'dark-plus',\n }),\n )\n .then((out) => {\n if (!cancelled) setHtml(out)\n })\n .catch(() => {\n if (!cancelled) setHtml(null)\n })\n return () => {\n cancelled = true\n }\n }, [code, language])\n\n useEffect(() => () => window.clearTimeout(copyTimer.current), [])\n\n const handleCopy = () => {\n navigator.clipboard\n ?.writeText(code)\n .then(() => {\n setCopied(true)\n window.clearTimeout(copyTimer.current)\n copyTimer.current = window.setTimeout(() => setCopied(false), COPIED_RESET_MS)\n })\n .catch(() => {})\n }\n\n const copyButton = copyable && (\n // the tooltip is hover/focus-driven; clicking flips `copied`, so its content updates to \"Copied!\"\n // while it's still open (the pointer is on the button). `left` keeps it inside the block's\n // `overflow: hidden` bounds.\n <Tooltip\n content={copied ? t('codeBlock.copied') : t('codeBlock.copy')}\n placement=\"left\"\n // always a white pill with dark text over the (always-dark) block — set via `style` so it beats\n // Tooltip's own color-derived --tz-btn-rgb (which is spread before the consumer `style`)\n style={{ '--tz-btn-rgb': '255, 255, 255', '--tz-btn-on': '#1e1e1e' } as CSSProperties}\n >\n <IconButton\n variant=\"text\"\n size=\"sm\"\n className={styles.copy}\n // force the button light over the dark surface — passed via `style` so it beats IconButton's\n // own inline `--tz-btn-rgb` (which is spread before the consumer `style`, so this wins)\n style={{ '--tz-btn-rgb': '255, 255, 255' } as CSSProperties}\n aria-label={copied ? t('codeBlock.copied') : t('codeBlock.copy')}\n onClick={handleCopy}\n >\n <Icon name={copied ? 'CopySuccess' : 'Copy'} />\n </IconButton>\n </Tooltip>\n )\n\n return (\n <div ref={ref} className={clsx(styles.root, className)} style={style} {...props}>\n {/* the header bar always renders whenever there's a title or a copy button — so the copy icon\n lives in the bar (top-right), never floating over the code */}\n {(title != null || copyButton) && (\n <div className={styles.header}>\n <span className={styles.title}>{title}</span>\n {copyButton}\n </div>\n )}\n <div\n className={clsx(styles.code, wrap && styles.wrap, showLineNumbers && styles.lineNumbers)}\n style={maxHeight != null ? ({ maxHeight } as CSSProperties) : undefined}\n >\n {html != null ? (\n // shiki output is trusted markup — it escapes the source code itself\n <div className={styles.highlighted} dangerouslySetInnerHTML={{ __html: html }} />\n ) : (\n <pre className={styles.plain}>\n <code>{code}</code>\n </pre>\n )}\n </div>\n </div>\n )\n})\n"],"names":["COPIED_RESET_MS","CodeBlock","forwardRef","code","language","title","copyable","showLineNumbers","maxHeight","wrap","className","style","props","ref","t","useT","html","setHtml","useState","copied","setCopied","copyTimer","useRef","useEffect","cancelled","codeToHtml","out","handleCopy","_a","copyButton","jsx","Tooltip","IconButton","styles","Icon","jsxs","clsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock-o_VSkAek.cjs","sources":["../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from 'react'\nimport { clsx } from 'clsx'\nimport { useT } from '../../theme'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { Tooltip } from '../Tooltip'\nimport styles from './CodeBlock.module.css'\n\n// how long the copy button shows the \"copied\" tick before reverting\nconst COPIED_RESET_MS = 1600\n\nexport interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'title'> {\n /** The source code to render. */\n code: string\n /** Shiki language id (`'tsx'`, `'json'`, `'bash'`, `'css'`, …). Defaults to `'tsx'`. */\n language?: string\n /**\n * Optional label shown on the left of the header bar (e.g. a filename). The header bar itself always\n * renders (whenever `copyable`), so the copy button lives in it with or without a `title`.\n */\n title?: ReactNode\n /** Show a copy-to-clipboard button (in the header bar). Defaults to `true`. */\n copyable?: boolean\n /** Show line numbers. Defaults to `true`. */\n showLineNumbers?: boolean\n /** Cap the block height in px — taller code scrolls inside. */\n maxHeight?: number\n /** Soft-wrap long lines instead of scrolling horizontally. Defaults to `false`. */\n wrap?: boolean\n}\n\n/**\n * A syntax-highlighted code block with **VS Code colors** — powered by **Shiki** (an optional peer,\n * `npm i shiki`), the actual VS Code highlighting engine, using its **`dark-plus`** theme. The block\n * is **always dark** (in both app modes) — code reads best on a dark surface, and the deep background\n * anchors it regardless of the surrounding light/dark theme. Highlighting is **async and lazy**\n * (`import('shiki')` on first render); until it lands — or if `shiki` isn't installed / the language\n * is unknown — the block shows the plain code (on the same dark surface), so nothing breaks. A header\n * bar always renders (whenever `copyable`, default `true`) and holds the copy button — which flips to a\n * tick on click — with an optional `title` (e.g. a filename) on its left; `showLineNumbers` (default\n * `true`), `maxHeight` (scrolls inside) and `wrap` shape the body. The whole block\n * keeps VS Code's own dark colors (a deliberate literal-color exception, like the Modal scrim); only\n * the outer border/radius uses `--tz-*` tokens.\n */\nexport const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(function CodeBlock(\n {\n code,\n language = 'tsx',\n title,\n copyable = true,\n showLineNumbers = true,\n maxHeight,\n wrap = false,\n className,\n style,\n ...props\n },\n ref,\n) {\n const t = useT()\n const [html, setHtml] = useState<string | null>(null)\n const [copied, setCopied] = useState(false)\n const copyTimer = useRef<number | undefined>(undefined)\n\n // highlight asynchronously — shiki is an optional peer, loaded lazily on first use; a missing\n // package or an unknown language just leaves the plain (unhighlighted) fallback in place\n useEffect(() => {\n let cancelled = false\n import('shiki')\n .then(({ codeToHtml }) =>\n codeToHtml(code, {\n lang: language,\n // always VS Code's dark theme — the block stays dark in both app modes\n theme: 'dark-plus',\n }),\n )\n .then((out) => {\n if (!cancelled) setHtml(out)\n })\n .catch(() => {\n if (!cancelled) setHtml(null)\n })\n return () => {\n cancelled = true\n }\n }, [code, language])\n\n useEffect(() => () => window.clearTimeout(copyTimer.current), [])\n\n const handleCopy = () => {\n navigator.clipboard\n ?.writeText(code)\n .then(() => {\n setCopied(true)\n window.clearTimeout(copyTimer.current)\n copyTimer.current = window.setTimeout(() => setCopied(false), COPIED_RESET_MS)\n })\n .catch(() => {})\n }\n\n const copyButton = copyable && (\n // the tooltip is hover/focus-driven; clicking flips `copied`, so its content updates to \"Copied!\"\n // while it's still open (the pointer is on the button). `left` keeps it inside the block's\n // `overflow: hidden` bounds.\n <Tooltip\n content={copied ? t('codeBlock.copied') : t('codeBlock.copy')}\n placement=\"left\"\n // always a white pill with dark text over the (always-dark) block — set via `style` so it beats\n // Tooltip's own color-derived --tz-btn-rgb (which is spread before the consumer `style`)\n style={{ '--tz-btn-rgb': '255, 255, 255', '--tz-btn-on': '#1e1e1e' } as CSSProperties}\n >\n <IconButton\n variant=\"text\"\n size=\"sm\"\n className={styles.copy}\n // force the button light over the dark surface — passed via `style` so it beats IconButton's\n // own inline `--tz-btn-rgb` (which is spread before the consumer `style`, so this wins)\n style={{ '--tz-btn-rgb': '255, 255, 255' } as CSSProperties}\n aria-label={copied ? t('codeBlock.copied') : t('codeBlock.copy')}\n onClick={handleCopy}\n >\n <Icon name={copied ? 'CopySuccess' : 'Copy'} />\n </IconButton>\n </Tooltip>\n )\n\n return (\n <div ref={ref} className={clsx(styles.root, className)} style={style} {...props}>\n {/* the header bar always renders whenever there's a title or a copy button — so the copy icon\n lives in the bar (top-right), never floating over the code */}\n {(title != null || copyButton) && (\n <div className={styles.header}>\n <span className={styles.title}>{title}</span>\n {copyButton}\n </div>\n )}\n <div\n className={clsx(styles.code, wrap && styles.wrap, showLineNumbers && styles.lineNumbers)}\n style={maxHeight != null ? ({ maxHeight } as CSSProperties) : undefined}\n >\n {html != null ? (\n // shiki output is trusted markup — it escapes the source code itself\n <div className={styles.highlighted} dangerouslySetInnerHTML={{ __html: html }} />\n ) : (\n <pre className={styles.plain}>\n <code>{code}</code>\n </pre>\n )}\n </div>\n </div>\n )\n})\n"],"names":["COPIED_RESET_MS","CodeBlock","forwardRef","code","language","title","copyable","showLineNumbers","maxHeight","wrap","className","style","props","ref","t","useT","html","setHtml","useState","copied","setCopied","copyTimer","useRef","useEffect","cancelled","codeToHtml","out","handleCopy","_a","copyButton","jsx","Tooltip","IconButton","styles","Icon","jsxs","clsx"],"mappings":"k6BAiBMA,EAAkB,KAmCXC,EAAYC,EAAAA,WAA2C,SAClE,CACE,KAAAC,EACA,SAAAC,EAAW,MACX,MAAAC,EACA,SAAAC,EAAW,GACX,gBAAAC,EAAkB,GAClB,UAAAC,EACA,KAAAC,EAAO,GACP,UAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAIC,EAAAA,KAAA,EACJ,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAwB,IAAI,EAC9C,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAS,EAAK,EACpCG,EAAYC,EAAAA,OAA2B,MAAS,EAItDC,EAAAA,UAAU,IAAM,CACd,IAAIC,EAAY,GAChB,cAAO,OAAO,EACX,KAAK,CAAC,CAAE,WAAAC,CAAA,IACPA,EAAWtB,EAAM,CACf,KAAMC,EAEN,MAAO,WAAA,CACR,CAAA,EAEF,KAAMsB,GAAQ,CACRF,GAAWP,EAAQS,CAAG,CAC7B,CAAC,EACA,MAAM,IAAM,CACNF,GAAWP,EAAQ,IAAI,CAC9B,CAAC,EACI,IAAM,CACXO,EAAY,EACd,CACF,EAAG,CAACrB,EAAMC,CAAQ,CAAC,EAEnBmB,EAAAA,UAAU,IAAM,IAAM,OAAO,aAAaF,EAAU,OAAO,EAAG,EAAE,EAEhE,MAAMM,EAAa,IAAM,QACvBC,EAAA,UAAU,YAAV,MAAAA,EACI,UAAUzB,GACX,KAAK,IAAM,CACViB,EAAU,EAAI,EACd,OAAO,aAAaC,EAAU,OAAO,EACrCA,EAAU,QAAU,OAAO,WAAW,IAAMD,EAAU,EAAK,EAAGpB,CAAe,CAC/E,GACC,MAAM,IAAM,CAAC,EAClB,EAEM6B,EAAavB,GAIjBwB,EAAAA,IAACC,EAAAA,QAAA,CACC,QAAkBjB,EAATK,EAAW,mBAAwB,gBAAN,EACtC,UAAU,OAGV,MAAO,CAAE,eAAgB,gBAAiB,cAAe,SAAA,EAEzD,SAAAW,EAAAA,IAACE,EAAAA,WAAA,CACC,QAAQ,OACR,KAAK,KACL,UAAWC,EAAO,KAGlB,MAAO,CAAE,eAAgB,eAAA,EACzB,aAAqBnB,EAATK,EAAW,mBAAwB,gBAAN,EACzC,QAASQ,EAET,SAAAG,EAAAA,IAACI,OAAA,CAAK,KAAMf,EAAS,cAAgB,MAAA,CAAQ,CAAA,CAAA,CAC/C,CAAA,EAIJ,OACEgB,EAAAA,KAAC,MAAA,CAAI,IAAAtB,EAAU,UAAWuB,EAAAA,KAAKH,EAAO,KAAMvB,CAAS,EAAG,MAAAC,EAAe,GAAGC,EAGtE,SAAA,EAAAP,GAAS,MAAQwB,IACjBM,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAO,OACrB,SAAA,CAAAH,EAAAA,IAAC,OAAA,CAAK,UAAWG,EAAO,MAAQ,SAAA5B,EAAM,EACrCwB,CAAA,EACH,EAEFC,EAAAA,IAAC,MAAA,CACC,UAAWM,EAAAA,KAAKH,EAAO,KAAMxB,GAAQwB,EAAO,KAAM1B,GAAmB0B,EAAO,WAAW,EACvF,MAAOzB,GAAa,KAAQ,CAAE,UAAAA,GAAgC,OAE7D,SAAAQ,GAAQ,KAEPc,MAAC,OAAI,UAAWG,EAAO,YAAa,wBAAyB,CAAE,OAAQjB,EAAK,CAAG,EAE/Ec,EAAAA,IAAC,OAAI,UAAWG,EAAO,MACrB,SAAAH,EAAAA,IAAC,OAAA,CAAM,WAAK,CAAA,CACd,CAAA,CAAA,CAEJ,EACF,CAEJ,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const r=require("react/jsx-runtime"),t=require("react"),p=require("clsx"),Y=require("./formContext-bTWrqdEV.cjs"),Z=require("./FloatingPanel-tGCG2nhA.cjs"),I=require("./Typography-d97DdbNd.cjs"),e=require("./ColorPickerPanel-CDrHbCfG.cjs"),ee=require("./ConfigProvider-DELhJlqo.cjs"),se=232,re=t.forwardRef(function({label:y,size:w="md",error:S,helperText:V,required:E=!1,fullWidth:O=!0,disabled:C=!1,value:P,defaultValue:H,onChange:f,swatches:W,alpha:D=!0,name:o,placeholder:g,id:L,className:U,style:_},a){const $=ee.useT(),z=t.useId(),x=L??z,j=`${x}-helper`,c=Y.useFormContext(),k=!!(c&&o),l=c&&o?c.field(o):void 0,T=P!==void 0?P:k?c.values[o]??"":void 0,q=T!==void 0,[A,G]=t.useState(H??""),R=q?T:A,i=e.parseColor(R||""),u=i?e.formatColor(i):null,J=u?u[0]==="#"?u.toUpperCase():u:null,v=S??(l==null?void 0:l.error)??!1,h=V??(l==null?void 0:l.helperText),K=s=>{q||G(s),k&&c.setValue(o,s),f==null||f(s)},d=t.useRef(null),N=t.useRef(null),[m,b]=t.useState(!1),M=t.useCallback(s=>{d.current=s,typeof a=="function"?a(s):a&&(a.current=s)},[a]),Q=t.useCallback(s=>{var n;b(!1),s&&((n=d.current)==null||n.focus())},[]),X=s=>{var B,F;const n=s.relatedTarget;n&&((B=N.current)!=null&&B.contains(n)||(F=d.current)!=null&&F.contains(n))||l==null||l.onBlur(s)};return r.jsxs("div",{className:p.clsx(e.styles.field,e.styles[w],O&&e.styles.fullWidth,v&&e.styles.error,C&&e.styles.disabled,U),style:_,children:[y!=null&&r.jsxs("label",{htmlFor:x,className:e.styles.label,children:[r.jsx(I.Typography,{as:"span",variant:"bodySmall",color:"muted",children:y}),E&&r.jsx("span",{className:e.styles.required,"aria-hidden":"true",children:"*"})]}),r.jsxs("button",{ref:M,id:x,name:o,type:"button",className:p.clsx(e.styles.control,m&&e.styles.open),disabled:C,"aria-haspopup":"dialog","aria-expanded":m,"aria-invalid":v||void 0,"aria-describedby":h!=null?j:void 0,"aria-label":y||i||g?void 0:$("colorPicker.pick"),onClick:()=>b(s=>!s),onBlur:X,children:[r.jsx("span",{className:p.clsx(e.styles.value,!i&&e.styles.placeholder),children:J??g}),r.jsx("span",{className:p.clsx(e.styles.preview,!i&&e.styles.previewEmpty),style:i?{"--cp-fill":u}:void 0,"aria-hidden":"true"})]}),r.jsx(Z.FloatingPanel,{ref:N,open:m,triggerRef:d,onClose:Q,role:"dialog",ariaLabel:"Color picker",width:se,children:r.jsx(e.ColorPickerPanel,{value:R,onChange:K,swatches:W,alpha:D})}),h!=null&&r.jsx(I.Typography,{as:"span",id:j,variant:"bodySmall",color:v?"error":"muted",className:e.styles.helper,children:h})]})});exports.ColorPicker=re;
|
|
2
|
-
//# sourceMappingURL=ColorPicker-DY6Vk1uS.cjs.map
|