erp-pro-ui 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.cjs +1 -1
- package/dist/accordion.mjs +1 -1
- package/dist/alert.cjs +1 -1
- package/dist/alert.mjs +1 -1
- package/dist/animated-content.cjs +1 -1
- package/dist/animated-content.mjs +1 -1
- package/dist/ascii-text.cjs +1 -1
- package/dist/ascii-text.mjs +1 -1
- package/dist/background-gradient-animation.cjs +1 -1
- package/dist/background-gradient-animation.mjs +1 -1
- package/dist/button-hover-border-gradient.cjs +1 -1
- package/dist/button-hover-border-gradient.mjs +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.mjs +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.mjs +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.mjs +1 -1
- package/dist/carousel.cjs +1 -1
- package/dist/carousel.mjs +1 -1
- package/dist/catalog.cjs +14 -0
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.ts +25 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.mjs +14 -0
- package/dist/catalog.mjs.map +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.mjs +1 -1
- package/dist/chip.cjs +1 -1
- package/dist/chip.mjs +1 -1
- package/dist/chroma-grid.cjs +1 -1
- package/dist/chroma-grid.mjs +1 -1
- package/dist/chunks/{drawer-D07dGN6R.cjs → Drawer-D72Xi2Gq.cjs} +2 -2
- package/dist/chunks/{drawer-D07dGN6R.cjs.map → Drawer-D72Xi2Gq.cjs.map} +1 -1
- package/dist/chunks/{drawer-DaoAXL-w.mjs → Drawer-Y0_sJni5.mjs} +2 -2
- package/dist/chunks/{drawer-DaoAXL-w.mjs.map → Drawer-Y0_sJni5.mjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-BtTOri-A.mjs → DropdownMenu-BQ4WlaGp.mjs} +1 -1
- package/dist/chunks/{DropdownMenu-BtTOri-A.mjs.map → DropdownMenu-BQ4WlaGp.mjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs → DropdownMenu-yh04burS.cjs} +1 -1
- package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs.map → DropdownMenu-yh04burS.cjs.map} +1 -1
- package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs +51 -0
- package/dist/chunks/EllipsisVerticalIcon-BJw3MNkg.cjs.map +1 -0
- package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs +45 -0
- package/dist/chunks/EllipsisVerticalIcon-C2b2KMfE.mjs.map +1 -0
- package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs → HoverBorderGradient-DEtm3owk.mjs} +1 -1
- package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs.map → HoverBorderGradient-DEtm3owk.mjs.map} +1 -1
- package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs → HoverBorderGradient-DMMyr2L3.cjs} +1 -1
- package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs.map → HoverBorderGradient-DMMyr2L3.cjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs → SunToMoonButton-BOKHzC1H.mjs} +1 -1
- package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs.map → SunToMoonButton-BOKHzC1H.mjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs → SunToMoonButton-gX4Kk_5B.cjs} +1 -1
- package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs.map → SunToMoonButton-gX4Kk_5B.cjs.map} +1 -1
- package/dist/chunks/{Tooltip-DK3B879v.mjs → Tooltip-LbOKP__2.mjs} +10 -7
- package/dist/chunks/Tooltip-LbOKP__2.mjs.map +1 -0
- package/dist/chunks/{Tooltip-DD30yj3A.cjs → Tooltip-nnaiqJTT.cjs} +10 -7
- package/dist/chunks/Tooltip-nnaiqJTT.cjs.map +1 -0
- package/dist/chunks/{accordion-CmB6EidC.cjs → accordion-Bj3Sj0mC.cjs} +2 -2
- package/dist/chunks/{accordion-CmB6EidC.cjs.map → accordion-Bj3Sj0mC.cjs.map} +1 -1
- package/dist/chunks/{accordion-6zxJUYXr.mjs → accordion-CLcjNX_X.mjs} +2 -2
- package/dist/chunks/{accordion-6zxJUYXr.mjs.map → accordion-CLcjNX_X.mjs.map} +1 -1
- package/dist/chunks/{alert-C5KEeQqh.cjs → alert-BBA4Sh4e.cjs} +2 -2
- package/dist/chunks/{alert-C5KEeQqh.cjs.map → alert-BBA4Sh4e.cjs.map} +1 -1
- package/dist/chunks/{alert-XVmYJgds.mjs → alert-oUz79MGc.mjs} +2 -2
- package/dist/chunks/{alert-XVmYJgds.mjs.map → alert-oUz79MGc.mjs.map} +1 -1
- package/dist/chunks/{animated-content-CLsFnjgr.cjs → animated-content-B3wbiWQI.cjs} +1 -1
- package/dist/chunks/{animated-content-CLsFnjgr.cjs.map → animated-content-B3wbiWQI.cjs.map} +1 -1
- package/dist/chunks/{animated-content-bK6xp-vc.mjs → animated-content-CiNJLgbq.mjs} +1 -1
- package/dist/chunks/{animated-content-bK6xp-vc.mjs.map → animated-content-CiNJLgbq.mjs.map} +1 -1
- package/dist/chunks/{ascii-text-Bdy4C5rU.mjs → ascii-text-C6JegLhP.mjs} +1 -1
- package/dist/chunks/{ascii-text-Bdy4C5rU.mjs.map → ascii-text-C6JegLhP.mjs.map} +1 -1
- package/dist/chunks/{ascii-text-BFnpVur6.cjs → ascii-text-KwVE41Hw.cjs} +1 -1
- package/dist/chunks/{ascii-text-BFnpVur6.cjs.map → ascii-text-KwVE41Hw.cjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs → background-gradient-animation-1LZY3DYT.cjs} +1 -1
- package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs.map → background-gradient-animation-1LZY3DYT.cjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs → background-gradient-animation-CTc2ZR74.mjs} +1 -1
- package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs.map → background-gradient-animation-CTc2ZR74.mjs.map} +1 -1
- package/dist/chunks/{button-A6UTvrOu.mjs → button-IDShmQqA.mjs} +3 -2
- package/dist/chunks/button-IDShmQqA.mjs.map +1 -0
- package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs → button-hover-border-gradient-B2ebbDek.mjs} +2 -2
- package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs.map → button-hover-border-gradient-B2ebbDek.mjs.map} +1 -1
- package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs → button-hover-border-gradient-DGZqd8je.cjs} +2 -2
- package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs.map → button-hover-border-gradient-DGZqd8je.cjs.map} +1 -1
- package/dist/chunks/{button-C4MXPxsC.cjs → button-uD87K76W.cjs} +3 -2
- package/dist/chunks/button-uD87K76W.cjs.map +1 -0
- package/dist/chunks/{calendar-CQJgQ5H_.cjs → calendar-DCkikZYb.cjs} +2 -2
- package/dist/chunks/{calendar-CQJgQ5H_.cjs.map → calendar-DCkikZYb.cjs.map} +1 -1
- package/dist/chunks/{calendar-5XzPqKbE.mjs → calendar-FxAmm_ao.mjs} +2 -2
- package/dist/chunks/{calendar-5XzPqKbE.mjs.map → calendar-FxAmm_ao.mjs.map} +1 -1
- package/dist/chunks/{card-RrT68nvu.cjs → card-Cuud0jIt.cjs} +1 -1
- package/dist/chunks/{card-RrT68nvu.cjs.map → card-Cuud0jIt.cjs.map} +1 -1
- package/dist/chunks/{card-BId1_zHw.mjs → card-DNeC6jqk.mjs} +1 -1
- package/dist/chunks/{card-BId1_zHw.mjs.map → card-DNeC6jqk.mjs.map} +1 -1
- package/dist/chunks/{carousel-Dd4rp-jr.mjs → carousel-Dpe5QLJK.mjs} +2 -2
- package/dist/chunks/{carousel-Dd4rp-jr.mjs.map → carousel-Dpe5QLJK.mjs.map} +1 -1
- package/dist/chunks/{carousel-Cv0m1Pp5.cjs → carousel-xHkrV_pt.cjs} +2 -2
- package/dist/chunks/{carousel-Cv0m1Pp5.cjs.map → carousel-xHkrV_pt.cjs.map} +1 -1
- package/dist/chunks/chartStyles-BADmRKZo.cjs +108 -0
- package/dist/chunks/chartStyles-BADmRKZo.cjs.map +1 -0
- package/dist/chunks/chartStyles-DPXgYmGn.mjs +55 -0
- package/dist/chunks/chartStyles-DPXgYmGn.mjs.map +1 -0
- package/dist/chunks/{charts-DkVu0rFc.mjs → charts-C-KQ3Nk5.mjs} +3 -54
- package/dist/chunks/charts-C-KQ3Nk5.mjs.map +1 -0
- package/dist/chunks/{charts-BmIV-mJy.cjs → charts-COx3IbI2.cjs} +42 -93
- package/dist/chunks/charts-COx3IbI2.cjs.map +1 -0
- package/dist/chunks/{checkbox-D8ivRZ1x.cjs → checkbox-CDknzh89.cjs} +1 -1
- package/dist/chunks/{checkbox-D8ivRZ1x.cjs.map → checkbox-CDknzh89.cjs.map} +1 -1
- package/dist/chunks/{checkbox-3aB7XC9_.mjs → checkbox-Y04NlzB8.mjs} +1 -1
- package/dist/chunks/{checkbox-3aB7XC9_.mjs.map → checkbox-Y04NlzB8.mjs.map} +1 -1
- package/dist/chunks/{chip-CqcdcSs2.mjs → chip-B3j6R6sO.mjs} +3 -3
- package/dist/chunks/{chip-CqcdcSs2.mjs.map → chip-B3j6R6sO.mjs.map} +1 -1
- package/dist/chunks/{chip-B0YzBwkz.cjs → chip-sfQlzrbo.cjs} +3 -3
- package/dist/chunks/{chip-B0YzBwkz.cjs.map → chip-sfQlzrbo.cjs.map} +1 -1
- package/dist/chunks/{chroma-grid-opB2DBtS.mjs → chroma-grid-BHS9qAn_.mjs} +1 -1
- package/dist/chunks/{chroma-grid-opB2DBtS.mjs.map → chroma-grid-BHS9qAn_.mjs.map} +1 -1
- package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs → chroma-grid-Bp55pKEm.cjs} +1 -1
- package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs.map → chroma-grid-Bp55pKEm.cjs.map} +1 -1
- package/dist/chunks/{color-palette-C3lesasJ.mjs → color-palette-D9Qlw2Cx.mjs} +1 -1
- package/dist/chunks/{color-palette-C3lesasJ.mjs.map → color-palette-D9Qlw2Cx.mjs.map} +1 -1
- package/dist/chunks/{color-palette-pLh6En3n.cjs → color-palette-Duud5Iqq.cjs} +1 -1
- package/dist/chunks/{color-palette-pLh6En3n.cjs.map → color-palette-Duud5Iqq.cjs.map} +1 -1
- package/dist/chunks/{combobox-CtNrGmuR.cjs → combobox-C3a2iogC.cjs} +4 -4
- package/dist/chunks/{combobox-CtNrGmuR.cjs.map → combobox-C3a2iogC.cjs.map} +1 -1
- package/dist/chunks/{combobox-B6yk5U82.mjs → combobox-neBItbtz.mjs} +4 -4
- package/dist/chunks/{combobox-B6yk5U82.mjs.map → combobox-neBItbtz.mjs.map} +1 -1
- package/dist/chunks/dashboard-cards-BnPt0gDW.mjs +2428 -0
- package/dist/chunks/dashboard-cards-BnPt0gDW.mjs.map +1 -0
- package/dist/chunks/dashboard-cards-DNWJPKRu.cjs +2524 -0
- package/dist/chunks/dashboard-cards-DNWJPKRu.cjs.map +1 -0
- package/dist/chunks/{data-table-fAEuevPn.cjs → data-table-BZEiSZI2.cjs} +48 -36
- package/dist/chunks/data-table-BZEiSZI2.cjs.map +1 -0
- package/dist/chunks/{data-table-Dtf6lKpp.mjs → data-table-EfGKkerd.mjs} +47 -35
- package/dist/chunks/data-table-EfGKkerd.mjs.map +1 -0
- package/dist/chunks/{date-picker-BmQ0rgwH.mjs → date-picker-3IDSmb9Z.mjs} +3 -3
- package/dist/chunks/{date-picker-BmQ0rgwH.mjs.map → date-picker-3IDSmb9Z.mjs.map} +1 -1
- package/dist/chunks/{date-picker-qpUZMtZC.cjs → date-picker-_EVYpGga.cjs} +3 -3
- package/dist/chunks/{date-picker-qpUZMtZC.cjs.map → date-picker-_EVYpGga.cjs.map} +1 -1
- package/dist/chunks/{dialog-DSyq6MS3.mjs → dialog-B60BjJz0.mjs} +3 -3
- package/dist/chunks/{dialog-DSyq6MS3.mjs.map → dialog-B60BjJz0.mjs.map} +1 -1
- package/dist/chunks/{dialog-J2ZTSTpL.cjs → dialog-i9LdkXmF.cjs} +3 -3
- package/dist/chunks/{dialog-J2ZTSTpL.cjs.map → dialog-i9LdkXmF.cjs.map} +1 -1
- package/dist/chunks/event-calendar-BbFOUDov.mjs +1191 -0
- package/dist/chunks/event-calendar-BbFOUDov.mjs.map +1 -0
- package/dist/chunks/event-calendar-Bljd_7PI.cjs +1209 -0
- package/dist/chunks/event-calendar-Bljd_7PI.cjs.map +1 -0
- package/dist/chunks/{form-CtZ6U-_B.mjs → form-CDc9UM3r.mjs} +1 -1
- package/dist/chunks/{form-CtZ6U-_B.mjs.map → form-CDc9UM3r.mjs.map} +1 -1
- package/dist/chunks/{form-X6Vyaavl.cjs → form-DGwdlSW2.cjs} +1 -1
- package/dist/chunks/{form-X6Vyaavl.cjs.map → form-DGwdlSW2.cjs.map} +1 -1
- package/dist/chunks/{gradual-blur-C6NOnjTw.cjs → gradual-blur-BNYVlqb1.cjs} +1 -1
- package/dist/chunks/{gradual-blur-C6NOnjTw.cjs.map → gradual-blur-BNYVlqb1.cjs.map} +1 -1
- package/dist/chunks/{gradual-blur-DXfxpCdB.mjs → gradual-blur-Bw2KNmXb.mjs} +1 -1
- package/dist/chunks/{gradual-blur-DXfxpCdB.mjs.map → gradual-blur-Bw2KNmXb.mjs.map} +1 -1
- package/dist/chunks/{hover-card--rplmsA_.cjs → hover-card-Dp6Y2h2J.cjs} +1 -1
- package/dist/chunks/{hover-card--rplmsA_.cjs.map → hover-card-Dp6Y2h2J.cjs.map} +1 -1
- package/dist/chunks/{hover-card-C88rU-nW.mjs → hover-card-G66SUyjq.mjs} +1 -1
- package/dist/chunks/{hover-card-C88rU-nW.mjs.map → hover-card-G66SUyjq.mjs.map} +1 -1
- package/dist/chunks/{icons-bx3nrxNv.mjs → icons-JzMKLygv.mjs} +2 -43
- package/dist/chunks/icons-JzMKLygv.mjs.map +1 -0
- package/dist/chunks/{icons-CRanVZB1.cjs → icons-ub9iu-JG.cjs} +1 -48
- package/dist/chunks/icons-ub9iu-JG.cjs.map +1 -0
- package/dist/chunks/{input-Bqo9Q5zF.mjs → input-CRc3MKb_.mjs} +3 -3
- package/dist/chunks/{input-Bqo9Q5zF.mjs.map → input-CRc3MKb_.mjs.map} +1 -1
- package/dist/chunks/{input-DkCPyWXi.cjs → input-DMTwz27q.cjs} +3 -3
- package/dist/chunks/{input-DkCPyWXi.cjs.map → input-DMTwz27q.cjs.map} +1 -1
- package/dist/chunks/{label-BKzqfAAq.cjs → label-B5Ugq0Nk.cjs} +1 -1
- package/dist/chunks/{label-BKzqfAAq.cjs.map → label-B5Ugq0Nk.cjs.map} +1 -1
- package/dist/chunks/{label-Drxg0cG2.mjs → label-Bc_r54NU.mjs} +1 -1
- package/dist/chunks/{label-Drxg0cG2.mjs.map → label-Bc_r54NU.mjs.map} +1 -1
- package/dist/chunks/{loading-BiM4mKh6.cjs → loading-DZKJc3e7.cjs} +2 -2
- package/dist/chunks/{loading-BiM4mKh6.cjs.map → loading-DZKJc3e7.cjs.map} +1 -1
- package/dist/chunks/{loading-Dtosnb4A.mjs → loading-ll2L6lc7.mjs} +2 -2
- package/dist/chunks/{loading-Dtosnb4A.mjs.map → loading-ll2L6lc7.mjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs → multi-select-combobox-CFJGq1hn.cjs} +3 -3
- package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs.map → multi-select-combobox-CFJGq1hn.cjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs → multi-select-combobox-C_8sxaiL.mjs} +3 -3
- package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs.map → multi-select-combobox-C_8sxaiL.mjs.map} +1 -1
- package/dist/chunks/{otp-input-CkhV-sGl.cjs → otp-input-B5-tuc0q.cjs} +1 -1
- package/dist/chunks/{otp-input-CkhV-sGl.cjs.map → otp-input-B5-tuc0q.cjs.map} +1 -1
- package/dist/chunks/{otp-input-JOysxKfD.mjs → otp-input-BpcTJOmU.mjs} +1 -1
- package/dist/chunks/{otp-input-JOysxKfD.mjs.map → otp-input-BpcTJOmU.mjs.map} +1 -1
- package/dist/chunks/{overlay-BzkUmjQ-.mjs → overlay-CG1dMYtO.mjs} +1 -1
- package/dist/chunks/{overlay-BzkUmjQ-.mjs.map → overlay-CG1dMYtO.mjs.map} +1 -1
- package/dist/chunks/{overlay-DNnZywyR.cjs → overlay-DzE_GyYf.cjs} +1 -1
- package/dist/chunks/{overlay-DNnZywyR.cjs.map → overlay-DzE_GyYf.cjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs → password-strength-meter-CH6uQAuK.mjs} +2 -2
- package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs.map → password-strength-meter-CH6uQAuK.mjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs → password-strength-meter-_o1T1HLO.cjs} +2 -2
- package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs.map → password-strength-meter-_o1T1HLO.cjs.map} +1 -1
- package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs → progress-bar-BAvRSW1b.mjs} +1 -1
- package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs.map → progress-bar-BAvRSW1b.mjs.map} +1 -1
- package/dist/chunks/{progress-bar-CYaBO_lS.cjs → progress-bar-FfdFVvTT.cjs} +1 -1
- package/dist/chunks/{progress-bar-CYaBO_lS.cjs.map → progress-bar-FfdFVvTT.cjs.map} +1 -1
- package/dist/chunks/{radio-CuiM_gDv.mjs → radio-BMOnxnUS.mjs} +1 -1
- package/dist/chunks/{radio-CuiM_gDv.mjs.map → radio-BMOnxnUS.mjs.map} +1 -1
- package/dist/chunks/{radio-zx9xEW_C.cjs → radio-wagafWwx.cjs} +1 -1
- package/dist/chunks/{radio-zx9xEW_C.cjs.map → radio-wagafWwx.cjs.map} +1 -1
- package/dist/chunks/{select-CUaSNR09.mjs → select--DeSgPdn.mjs} +4 -4
- package/dist/chunks/{select-CUaSNR09.mjs.map → select--DeSgPdn.mjs.map} +1 -1
- package/dist/chunks/{select-bZ9WqLOc.cjs → select-zFFyNmlY.cjs} +4 -4
- package/dist/chunks/{select-bZ9WqLOc.cjs.map → select-zFFyNmlY.cjs.map} +1 -1
- package/dist/chunks/{sidebar-Kkr45nuN.cjs → sidebar-Cq7UbKJT.cjs} +18 -21
- package/dist/chunks/sidebar-Cq7UbKJT.cjs.map +1 -0
- package/dist/chunks/{sidebar-DYEDFV2u.mjs → sidebar-oemmRzCL.mjs} +18 -21
- package/dist/chunks/sidebar-oemmRzCL.mjs.map +1 -0
- package/dist/chunks/{skeleton-nH1eAN96.mjs → skeleton-BsDMlWZG.mjs} +1 -1
- package/dist/chunks/{skeleton-nH1eAN96.mjs.map → skeleton-BsDMlWZG.mjs.map} +1 -1
- package/dist/chunks/{skeleton-DCBGLNAZ.cjs → skeleton-DWvVc17T.cjs} +1 -1
- package/dist/chunks/{skeleton-DCBGLNAZ.cjs.map → skeleton-DWvVc17T.cjs.map} +1 -1
- package/dist/chunks/{spinners-C9acUulz.cjs → spinners-DBAJliAj.cjs} +2 -2
- package/dist/chunks/{spinners-C9acUulz.cjs.map → spinners-DBAJliAj.cjs.map} +1 -1
- package/dist/chunks/{spinners-g6_Up5Rb.mjs → spinners-DlMcokJa.mjs} +2 -2
- package/dist/chunks/{spinners-g6_Up5Rb.mjs.map → spinners-DlMcokJa.mjs.map} +1 -1
- package/dist/chunks/{splash-cursor-N4FdnkOa.mjs → splash-cursor-Bb7LSzaO.mjs} +1 -1
- package/dist/chunks/{splash-cursor-N4FdnkOa.mjs.map → splash-cursor-Bb7LSzaO.mjs.map} +1 -1
- package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs → splash-cursor-CQ6_HwHV.cjs} +1 -1
- package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs.map → splash-cursor-CQ6_HwHV.cjs.map} +1 -1
- package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs → spotlight-card-Bs0iiSLc.mjs} +1 -1
- package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs.map → spotlight-card-Bs0iiSLc.mjs.map} +1 -1
- package/dist/chunks/{spotlight-card-BmsqC7wm.cjs → spotlight-card-COfSD7ns.cjs} +1 -1
- package/dist/chunks/{spotlight-card-BmsqC7wm.cjs.map → spotlight-card-COfSD7ns.cjs.map} +1 -1
- package/dist/chunks/{stepper-Jv5OS1nY.mjs → stepper-B9NdZ6ZV.mjs} +4 -4
- package/dist/chunks/{stepper-Jv5OS1nY.mjs.map → stepper-B9NdZ6ZV.mjs.map} +1 -1
- package/dist/chunks/{stepper-DepvEGfr.cjs → stepper-CTteR-Kj.cjs} +4 -4
- package/dist/chunks/{stepper-DepvEGfr.cjs.map → stepper-CTteR-Kj.cjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs → sun-to-moon-button-DWHDpP5B.mjs} +2 -2
- package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs.map → sun-to-moon-button-DWHDpP5B.mjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs → sun-to-moon-button-lt-1vmWm.cjs} +2 -2
- package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs.map → sun-to-moon-button-lt-1vmWm.cjs.map} +1 -1
- package/dist/chunks/{switch-iPsN1NS2.mjs → switch--68scepb.mjs} +1 -1
- package/dist/chunks/{switch-iPsN1NS2.mjs.map → switch--68scepb.mjs.map} +1 -1
- package/dist/chunks/{switch-X3l8xnle.cjs → switch-BbFl5b4t.cjs} +1 -1
- package/dist/chunks/{switch-X3l8xnle.cjs.map → switch-BbFl5b4t.cjs.map} +1 -1
- package/dist/chunks/{textarea-Bdo-Trvi.mjs → textarea-CEj9voUJ.mjs} +1 -1
- package/dist/chunks/{textarea-Bdo-Trvi.mjs.map → textarea-CEj9voUJ.mjs.map} +1 -1
- package/dist/chunks/{textarea-CGRl2hrM.cjs → textarea-U_JeSWI3.cjs} +1 -1
- package/dist/chunks/{textarea-CGRl2hrM.cjs.map → textarea-U_JeSWI3.cjs.map} +1 -1
- package/dist/chunks/{toast-DiFgv3IL.cjs → toast-2yq4Q7-q.cjs} +2 -2
- package/dist/chunks/{toast-DiFgv3IL.cjs.map → toast-2yq4Q7-q.cjs.map} +1 -1
- package/dist/chunks/{toast-BcBidy5n.mjs → toast-CyY8VZN7.mjs} +2 -2
- package/dist/chunks/{toast-BcBidy5n.mjs.map → toast-CyY8VZN7.mjs.map} +1 -1
- package/dist/chunks/{truncated-text-BIXqNfOL.cjs → truncated-text-CswjmrHZ.cjs} +1 -1
- package/dist/chunks/{truncated-text-BIXqNfOL.cjs.map → truncated-text-CswjmrHZ.cjs.map} +1 -1
- package/dist/chunks/{truncated-text-C9t9o9IA.mjs → truncated-text-DUYTW1KP.mjs} +1 -1
- package/dist/chunks/{truncated-text-C9t9o9IA.mjs.map → truncated-text-DUYTW1KP.mjs.map} +1 -1
- package/dist/chunks/{typography-LwwY_MOy.cjs → typography-CFIiYk1d.cjs} +1 -1
- package/dist/chunks/{typography-LwwY_MOy.cjs.map → typography-CFIiYk1d.cjs.map} +1 -1
- package/dist/chunks/{typography-Ct-jDJP3.mjs → typography-DHE9sUZ8.mjs} +1 -1
- package/dist/chunks/{typography-Ct-jDJP3.mjs.map → typography-DHE9sUZ8.mjs.map} +1 -1
- package/dist/color-palette.cjs +1 -1
- package/dist/color-palette.mjs +1 -1
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.mjs +1 -1
- package/dist/components/data-display/charts/chartPalette.d.ts +1 -1
- package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts +25 -0
- package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts +34 -0
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts +43 -0
- package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts +30 -0
- package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts +25 -0
- package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts +18 -0
- package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts +20 -0
- package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts +21 -0
- package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/index.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/index.d.ts.map +1 -1
- package/dist/components/data-display/data-table/DataTable.d.ts.map +1 -1
- package/dist/components/data-display/data-table/DataTableControls.d.ts.map +1 -1
- package/dist/components/data-display/event-calendar/AddEventPanel.d.ts +11 -0
- package/dist/components/data-display/event-calendar/AddEventPanel.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/CalendarHeader.d.ts +13 -0
- package/dist/components/data-display/event-calendar/CalendarHeader.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts +13 -0
- package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventCalendar.d.ts +3 -0
- package/dist/components/data-display/event-calendar/EventCalendar.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts +10 -0
- package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventFilterList.d.ts +9 -0
- package/dist/components/data-display/event-calendar/EventFilterList.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventPill.d.ts +10 -0
- package/dist/components/data-display/event-calendar/EventPill.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts +9 -0
- package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/calendarUtils.d.ts +27 -0
- package/dist/components/data-display/event-calendar/calendarUtils.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/index.d.ts +4 -0
- package/dist/components/data-display/event-calendar/index.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/types.d.ts +52 -0
- package/dist/components/data-display/event-calendar/types.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/DayView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/DayView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/ListView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/ListView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/MonthView.d.ts +11 -0
- package/dist/components/data-display/event-calendar/views/MonthView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/WeekView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/WeekView.d.ts.map +1 -0
- package/dist/components/forms/button/Button.d.ts.map +1 -1
- package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts +3 -1
- package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts.map +1 -1
- package/dist/components/navigation/sidebar/SidebarLinks.d.ts.map +1 -1
- package/dist/components/overlays/tooltip/Tooltip.d.ts +3 -1
- package/dist/components/overlays/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/dashboard-cards.cjs +18 -0
- package/dist/dashboard-cards.d.ts +2 -0
- package/dist/dashboard-cards.mjs +2 -0
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.mjs +1 -1
- package/dist/date-picker.cjs +1 -1
- package/dist/date-picker.mjs +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.mjs +1 -1
- package/dist/docs.cjs +31 -0
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.mjs +31 -0
- package/dist/docs.mjs.map +1 -1
- package/dist/drawer.cjs +2 -2
- package/dist/drawer.mjs +1 -1
- package/dist/event-calendar.cjs +5 -0
- package/dist/event-calendar.d.ts +2 -0
- package/dist/event-calendar.mjs +2 -0
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +1 -1
- package/dist/gradual-blur.cjs +1 -1
- package/dist/gradual-blur.mjs +1 -1
- package/dist/hover-border-gradient.cjs +1 -1
- package/dist/hover-border-gradient.mjs +1 -1
- package/dist/hover-card.cjs +1 -1
- package/dist/hover-card.mjs +1 -1
- package/dist/icons.cjs +3 -2
- package/dist/icons.mjs +2 -1
- package/dist/index.cjs +74 -330
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +55 -327
- package/dist/index.mjs.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.mjs +1 -1
- package/dist/label.cjs +1 -1
- package/dist/label.mjs +1 -1
- package/dist/loading.cjs +1 -1
- package/dist/loading.mjs +1 -1
- package/dist/multi-select-combobox.cjs +1 -1
- package/dist/multi-select-combobox.mjs +1 -1
- package/dist/otp-input.cjs +1 -1
- package/dist/otp-input.mjs +1 -1
- package/dist/password-strength-meter.cjs +1 -1
- package/dist/password-strength-meter.mjs +1 -1
- package/dist/progress-bar.cjs +1 -1
- package/dist/progress-bar.mjs +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.mjs +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.mjs +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.mjs +1 -1
- package/dist/spinners.cjs +1 -1
- package/dist/spinners.mjs +1 -1
- package/dist/splash-cursor.cjs +1 -1
- package/dist/splash-cursor.mjs +1 -1
- package/dist/spotlight-card.cjs +1 -1
- package/dist/spotlight-card.mjs +1 -1
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.mjs +1 -1
- package/dist/sun-to-moon-button.cjs +2 -2
- package/dist/sun-to-moon-button.mjs +2 -2
- package/dist/switch.cjs +1 -1
- package/dist/switch.mjs +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.mjs +1 -1
- package/dist/toast.cjs +1 -1
- package/dist/toast.mjs +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.mjs +1 -1
- package/dist/truncated-text.cjs +1 -1
- package/dist/truncated-text.mjs +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.mjs +1 -1
- package/package.json +17 -5
- package/dist/chunks/Tooltip-DD30yj3A.cjs.map +0 -1
- package/dist/chunks/Tooltip-DK3B879v.mjs.map +0 -1
- package/dist/chunks/button-A6UTvrOu.mjs.map +0 -1
- package/dist/chunks/button-C4MXPxsC.cjs.map +0 -1
- package/dist/chunks/charts-BmIV-mJy.cjs.map +0 -1
- package/dist/chunks/charts-DkVu0rFc.mjs.map +0 -1
- package/dist/chunks/data-table-Dtf6lKpp.mjs.map +0 -1
- package/dist/chunks/data-table-fAEuevPn.cjs.map +0 -1
- package/dist/chunks/icons-CRanVZB1.cjs.map +0 -1
- package/dist/chunks/icons-bx3nrxNv.mjs.map +0 -1
- package/dist/chunks/sidebar-DYEDFV2u.mjs.map +0 -1
- package/dist/chunks/sidebar-Kkr45nuN.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts-COx3IbI2.cjs","names":[],"sources":["../../src/components/data-display/charts/chartPalette.ts","../../src/components/data-display/charts/NeonLineChart.tsx","../../src/components/data-display/charts/MiniNeonSparkline.tsx","../../src/components/data-display/charts/StackedBarChart.tsx","../../src/components/data-display/charts/ThinBreakdownBar.tsx","../../src/components/data-display/charts/AreaChart.tsx","../../src/components/data-display/charts/BarChart.tsx","../../src/components/data-display/charts/PositiveNegativeBarChart.tsx","../../src/components/data-display/charts/PieChart.tsx"],"sourcesContent":["const chartColorSlots = [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n] as const;\n\nexport type ChartColorSlot = (typeof chartColorSlots)[number];\nexport type ChartColorToken = `chart-${ChartColorSlot}`;\n\nexport const chartColorTokens = chartColorSlots.map(\n (slot) => `chart-${slot}` as ChartColorToken,\n);\n\nconst chartPalette = chartColorSlots.map((slot) => `var(--ds-chart-${slot})`);\n\ntype RgbColor = {\n r: number;\n g: number;\n b: number;\n};\n\nconst resolvedColorCache = new Map<string, RgbColor | null>();\n\nconst chartTokenPattern = /^chart-(\\d+)$/i;\nconst chartVariablePattern = /^--((?:ds|color)-chart-(\\d+))$/i;\n\nconst getChartSlotValue = (slot: ChartColorSlot | ChartColorToken): number =>\n typeof slot === \"number\" ? slot : Number(slot.replace(\"chart-\", \"\"));\n\nexport const getChartColorVar = (\n slot: ChartColorSlot | ChartColorToken,\n namespace: \"ds\" | \"color\" = \"ds\",\n): string => `var(--${namespace}-chart-${getChartSlotValue(slot)})`;\n\nexport const normalizeChartColorValue = (\n value?: string,\n): string | undefined => {\n const normalizedValue = value?.trim();\n\n if (!normalizedValue) {\n return undefined;\n }\n\n const tokenMatch = normalizedValue.match(chartTokenPattern);\n if (tokenMatch) {\n return `var(--ds-chart-${tokenMatch[1]})`;\n }\n\n const variableMatch = normalizedValue.match(chartVariablePattern);\n if (variableMatch) {\n return `var(--${variableMatch[1]})`;\n }\n\n return normalizedValue;\n};\n\nconst getThemeSignature = (): string => {\n if (typeof document === \"undefined\") return \"\";\n\n const root = document.documentElement;\n return [\n root.getAttribute(\"data-brand\") ?? \"\",\n root.getAttribute(\"data-mode\") ?? \"\",\n root.getAttribute(\"data-theme\") ?? \"\",\n ].join(\"|\");\n};\n\nconst resolveColor = (value: string): RgbColor | null => {\n if (typeof document === \"undefined\") return null;\n\n const cacheKey = `${getThemeSignature()}::${value}`;\n const cached = resolvedColorCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const probe = document.createElement(\"span\");\n probe.style.color = value;\n probe.style.position = \"fixed\";\n probe.style.opacity = \"0\";\n probe.style.pointerEvents = \"none\";\n document.body.appendChild(probe);\n\n const computedColor = getComputedStyle(probe).color;\n document.body.removeChild(probe);\n\n const match = computedColor.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/i);\n\n const resolved = match\n ? {\n r: Number(match[1]),\n g: Number(match[2]),\n b: Number(match[3]),\n }\n : null;\n\n resolvedColorCache.set(cacheKey, resolved);\n return resolved;\n};\n\nconst getColorDistance = (left: RgbColor, right: RgbColor): number => {\n const deltaR = left.r - right.r;\n const deltaG = left.g - right.g;\n const deltaB = left.b - right.b;\n\n return Math.sqrt(deltaR ** 2 + deltaG ** 2 + deltaB ** 2);\n};\n\nconst isTooSimilar = (\n candidate: string,\n usedColors: readonly string[],\n minDistance = 84,\n): boolean => {\n if (usedColors.includes(candidate)) {\n return true;\n }\n\n const candidateRgb = resolveColor(candidate);\n if (!candidateRgb) {\n return false;\n }\n\n return usedColors.some((usedColor) => {\n const usedRgb = resolveColor(usedColor);\n return usedRgb\n ? getColorDistance(candidateRgb, usedRgb) < minDistance\n : false;\n });\n};\n\nexport const getChartPalette = (count = chartPalette.length): string[] =>\n Array.from(\n { length: count },\n (_, index) => chartPalette[index % chartPalette.length],\n );\n\nexport const normalizeChartColors = (\n requestedColors: readonly (string | undefined)[],\n): string[] => {\n const usedColors: string[] = [];\n let paletteIndex = 0;\n\n const getNextDistinctPaletteColor = (): string => {\n for (let attempt = 0; attempt < chartPalette.length; attempt++) {\n const candidate =\n chartPalette[(paletteIndex + attempt) % chartPalette.length];\n\n if (!isTooSimilar(candidate, usedColors)) {\n paletteIndex = (paletteIndex + attempt + 1) % chartPalette.length;\n return candidate;\n }\n }\n\n const fallback = chartPalette[paletteIndex % chartPalette.length];\n paletteIndex = (paletteIndex + 1) % chartPalette.length;\n return fallback;\n };\n\n return requestedColors.map((requestedColor) => {\n const normalizedRequestedColor = normalizeChartColorValue(requestedColor);\n const resolvedColor =\n normalizedRequestedColor &&\n !isTooSimilar(normalizedRequestedColor, usedColors)\n ? normalizedRequestedColor\n : getNextDistinctPaletteColor();\n\n usedColors.push(resolvedColor);\n return resolvedColor;\n });\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport {\n getChartColorVar,\n normalizeChartColorValue,\n normalizeChartColors,\n} from \"./chartPalette\";\nimport {\n chartLineHoverCursorStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n getChartActiveDotStyle,\n} from \"./chartStyles\";\n\ninterface DataPoint {\n name: string;\n value: number;\n}\n\ninterface NeonLineChartProps {\n data: DataPoint[];\n height?: number | string;\n lineColorStop1?: string;\n lineColorStop2?: string;\n className?: string;\n glowColor?: string;\n}\n\nexport const NeonLineChart: React.FC<NeonLineChartProps> = ({\n data,\n height = 300,\n lineColorStop1 = getChartColorVar(2),\n lineColorStop2 = getChartColorVar(1),\n glowColor = getChartColorVar(1),\n className = \"\",\n}) => {\n const [normalizedStop1, normalizedStop2] = React.useMemo(\n () => normalizeChartColors([lineColorStop1, lineColorStop2]),\n [lineColorStop1, lineColorStop2],\n );\n const normalizedGlowColor = React.useMemo(\n () => normalizeChartColorValue(glowColor) ?? getChartColorVar(1),\n [glowColor],\n );\n\n return (\n <div className={`w-full relative ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart\n data={data}\n margin={{ top: 20, right: 30, left: 10, bottom: 20 }}\n >\n <defs>\n {/* Linear Gradient for the Line */}\n <linearGradient id=\"neonGradient\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n <stop offset=\"0%\" stopColor={normalizedStop1} />\n <stop offset=\"100%\" stopColor={normalizedStop2} />\n </linearGradient>\n\n {/* Glowing Drop Shadow Filter */}\n <filter id=\"neonGlow\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\">\n <feDropShadow\n dx=\"0\"\n dy=\"6\"\n stdDeviation=\"8\"\n floodColor={normalizedGlowColor}\n floodOpacity=\"0.8\"\n />\n <feDropShadow\n dx=\"0\"\n dy=\"0\"\n stdDeviation=\"15\"\n floodColor={normalizedStop1}\n floodOpacity=\"0.3\"\n />\n </filter>\n </defs>\n\n {/* Minimal Grid */}\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--ds-color-border)\"\n opacity={0.5}\n />\n\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dx={-10}\n />\n\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartLineHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n\n {/* The Neon Line */}\n <Line\n type=\"monotone\"\n dataKey=\"value\"\n stroke=\"url(#neonGradient)\"\n strokeWidth={3}\n dot={false}\n activeDot={getChartActiveDotStyle(normalizedStop2)}\n filter=\"url(#neonGlow)\"\n />\n </LineChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport { Area, AreaChart, Line, ResponsiveContainer, Tooltip } from \"recharts\";\n\nimport { getChartColorVar, normalizeChartColorValue } from \"./chartPalette\";\n\nexport interface MiniNeonSparklinePoint {\n label: string;\n value: number;\n}\n\nexport type MiniNeonSparklineTone =\n | \"default\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\n\nexport interface MiniNeonSparklineProps {\n data: MiniNeonSparklinePoint[];\n height?: number;\n strokeWidth?: number;\n className?: string;\n showArea?: boolean;\n showTooltip?: boolean;\n tone?: MiniNeonSparklineTone;\n}\n\nconst toneColorMap: Record<MiniNeonSparklineTone, string> = {\n default: getChartColorVar(1),\n success: \"var(--ds-color-success)\",\n warning: \"var(--ds-color-warning)\",\n danger: \"var(--ds-color-danger)\",\n info: \"var(--ds-color-info)\",\n};\n\nconst tooltipContentStyle: React.CSSProperties = {\n borderRadius: \"12px\",\n border: \"1px solid var(--ds-border-2)\",\n background: \"var(--ds-surface-1)\",\n color: \"var(--ds-text-1)\",\n fontSize: \"12px\",\n};\n\nexport const MiniNeonSparkline: React.FC<MiniNeonSparklineProps> = ({\n data,\n height = 46,\n strokeWidth = 2,\n className = \"\",\n showArea = true,\n showTooltip = true,\n tone = \"default\",\n}) => {\n const resolvedTone = React.useMemo(\n () => normalizeChartColorValue(toneColorMap[tone]) ?? toneColorMap.default,\n [tone],\n );\n\n const chartGradientId = React.useId();\n const chartGlowId = React.useId();\n\n return (\n <div className={`ui:relative ui:w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart\n data={data}\n margin={{ top: 4, right: 2, left: 2, bottom: 4 }}\n >\n <defs>\n <linearGradient id={chartGradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={resolvedTone} stopOpacity={0.35} />\n <stop offset=\"100%\" stopColor={resolvedTone} stopOpacity={0.02} />\n </linearGradient>\n <filter\n id={chartGlowId}\n x=\"-20%\"\n y=\"-20%\"\n width=\"140%\"\n height=\"140%\"\n >\n <feDropShadow\n dx=\"0\"\n dy=\"2\"\n stdDeviation=\"3\"\n floodColor={resolvedTone}\n floodOpacity=\"0.45\"\n />\n </filter>\n </defs>\n\n {showArea ? (\n <Area\n type=\"monotone\"\n dataKey=\"value\"\n stroke=\"none\"\n fill={`url(#${chartGradientId})`}\n />\n ) : null}\n\n <Line\n type=\"monotone\"\n dataKey=\"value\"\n stroke={resolvedTone}\n strokeWidth={strokeWidth}\n dot={false}\n isAnimationActive={false}\n filter={`url(#${chartGlowId})`}\n />\n\n {showTooltip ? (\n <Tooltip\n contentStyle={tooltipContentStyle}\n labelStyle={{ color: \"var(--ds-text-2)\", marginBottom: \"4px\" }}\n itemStyle={{ color: \"var(--ds-text-1)\", fontWeight: 600 }}\n formatter={(value) => [String(value ?? \"\"), \"Value\"]}\n />\n ) : null}\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport { normalizeChartColors } from \"./chartPalette\";\nimport {\n chartBandHoverCursorStyle,\n chartLegendTextStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n} from \"./chartStyles\";\n\nexport interface StackedBarData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface StackedBarChartProps {\n data: StackedBarData[];\n categories: { key: string; color: string; label: string }[];\n height?: number | string;\n yAxisDomain?: [number, number];\n className?: string;\n}\n\nexport const StackedBarChart: React.FC<StackedBarChartProps> = ({\n data,\n categories,\n height = 300,\n yAxisDomain,\n className = \"\",\n}) => {\n const normalizedCategories = React.useMemo(() => {\n const normalizedColors = normalizeChartColors(\n categories.map((category) => category.color),\n );\n\n return categories.map((category, index) => ({\n ...category,\n color: normalizedColors[index] ?? category.color,\n }));\n }, [categories]);\n\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n margin={{ top: 20, right: 30, left: 20, bottom: 5 }}\n >\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--ds-color-border)\"\n opacity={0.4}\n />\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dx={-10}\n domain={yAxisDomain}\n />\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartBandHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n <Legend\n iconType=\"circle\"\n wrapperStyle={{\n ...chartLegendTextStyle,\n paddingTop: \"20px\",\n }}\n />\n\n {normalizedCategories.map((cat, index) => {\n // Apply rounded radius only to the top bar in the stack\n const isTop = index === normalizedCategories.length - 1;\n const radius: [number, number, number, number] = isTop\n ? [6, 6, 0, 0]\n : [0, 0, 0, 0];\n\n return (\n <Bar\n key={cat.key}\n dataKey={cat.key}\n name={cat.label}\n stackId=\"a\"\n fill={cat.color}\n radius={radius}\n barSize={32}\n />\n );\n })}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\n\nimport { TruncatedText } from \"../../typography/truncated-text\";\nimport { normalizeChartColors } from \"./chartPalette\";\nimport { chartPillTooltipStyle } from \"./chartStyles\";\n\nexport interface BreakdownSegment {\n id?: string;\n label: string;\n value: number; // The absolute value or percentage\n color: string;\n}\n\ninterface ThinBreakdownBarProps {\n data: BreakdownSegment[];\n className?: string;\n showLabels?: boolean;\n showSummary?: boolean;\n summaryLabel?: string;\n valueFormatter?: (value: number) => string;\n}\n\nconst defaultValueFormatter = (value: number): string =>\n new Intl.NumberFormat().format(value);\n\nexport const ThinBreakdownBar: React.FC<ThinBreakdownBarProps> = ({\n data: segments,\n className = \"\",\n showLabels = true,\n showSummary = false,\n summaryLabel = \"Total\",\n valueFormatter = defaultValueFormatter,\n}) => {\n const [activeSegmentKey, setActiveSegmentKey] = React.useState<string | null>(\n null,\n );\n\n const normalizedSegments = React.useMemo(() => {\n const normalizedColors = normalizeChartColors(\n segments.map((segment) => segment.color),\n );\n\n const totalValue = segments.reduce((sum, item) => sum + item.value, 0);\n\n return segments.map((segment, index) => ({\n ...segment,\n key: segment.id || `segment-${index}`,\n color: normalizedColors[index] ?? segment.color,\n widthPercent:\n totalValue > 0 ? Math.max((segment.value / totalValue) * 100, 0) : 0,\n }));\n }, [segments]);\n\n const segmentsWithMetrics = React.useMemo(() => {\n let runningPercent = 0;\n\n return normalizedSegments.map((segment) => {\n const nextSegment = {\n ...segment,\n centerPercent: runningPercent + segment.widthPercent / 2,\n };\n\n runningPercent += segment.widthPercent;\n return nextSegment;\n });\n }, [normalizedSegments]);\n\n const activeSegment = React.useMemo(\n () =>\n segmentsWithMetrics.find((segment) => segment.key === activeSegmentKey) ??\n null,\n [activeSegmentKey, segmentsWithMetrics],\n );\n const totalValue = React.useMemo(\n () => segments.reduce((sum, item) => sum + item.value, 0),\n [segments],\n );\n const summaryTitle = activeSegment?.label ?? summaryLabel;\n const summaryValue = activeSegment?.value ?? totalValue;\n const summaryMeta = activeSegment\n ? `${Math.round(activeSegment.widthPercent)}% of total`\n : `${segments.length} segments`;\n\n return (\n <div className={`w-full flex flex-col gap-3 ${className}`}>\n {showSummary && (activeSegment || totalValue > 0) ? (\n <div className=\"flex items-start justify-between gap-4 rounded-xl border border-ds-border-2/70 bg-ds-canvas/70 px-4 py-3 backdrop-blur-md\">\n <div className=\"min-w-0\">\n <TruncatedText\n as=\"p\"\n showTitleOnHover\n className=\"truncate text-[11px] font-medium tracking-[0.16em] text-ds-2 uppercase transition-colors duration-200\"\n style={activeSegment ? { color: activeSegment.color } : undefined}\n >\n {summaryTitle}\n </TruncatedText>\n <p className=\"mt-1 text-xs text-ds-2\">{summaryMeta}</p>\n </div>\n <p\n className=\"text-right text-lg font-semibold leading-none text-ds-1 transition-colors duration-200\"\n style={activeSegment ? { color: activeSegment.color } : undefined}\n >\n {valueFormatter(summaryValue)}\n </p>\n </div>\n ) : null}\n\n <div className=\"relative\">\n {activeSegment && !showSummary && (\n <div\n className=\"pointer-events-none absolute -top-10 z-10 -translate-x-1/2 rounded-full px-2.5 py-1 text-[11px] font-medium text-ds-1\"\n style={{\n ...chartPillTooltipStyle,\n left: `${activeSegment.centerPercent}%`,\n }}\n >\n <span>{activeSegment.label}</span>\n <span className=\"mx-1 text-ds-2\">•</span>\n <span style={{ color: activeSegment.color }}>\n {activeSegment.value}\n </span>\n </div>\n )}\n\n <div className=\"rounded-full bg-ds-surface-2/80 p-0.5\">\n <div\n className=\"flex w-full gap-1\"\n onMouseLeave={() => setActiveSegmentKey(null)}\n >\n {segmentsWithMetrics.map((segment) => {\n const isActive = activeSegmentKey === segment.key;\n\n return (\n <div\n key={segment.key}\n className=\"relative flex h-2.5 min-w-0 items-center\"\n style={{ width: `${segment.widthPercent}%` }}\n onMouseEnter={() => setActiveSegmentKey(segment.key)}\n >\n <div\n className=\"h-full w-full rounded-full transition-[transform,filter,box-shadow,opacity] duration-200 ease-out\"\n style={{\n backgroundColor: segment.color,\n opacity: activeSegmentKey && !isActive ? 0.72 : 1,\n transform: isActive ? \"scaleY(1.3)\" : \"scaleY(1)\",\n filter: isActive\n ? \"saturate(1.1) brightness(1.05)\"\n : \"none\",\n boxShadow: isActive\n ? `inset 0 1px 1px rgba(255,255,255,0.28), 0 0 0 1px color-mix(in srgb, ${segment.color} 35%, transparent), 0 0 14px color-mix(in srgb, ${segment.color} 45%, transparent)`\n : `inset 0 1px 1px rgba(255,255,255,0.2), 0 0 8px color-mix(in srgb, ${segment.color} 30%, transparent)`,\n }}\n title={`${segment.label}: ${segment.value}`}\n />\n </div>\n );\n })}\n </div>\n </div>\n </div>\n\n {showLabels && (\n <div className=\"flex w-full items-start gap-1 px-0.5\">\n {segmentsWithMetrics.map((segment) => {\n const isActive = activeSegmentKey === segment.key;\n\n return (\n <div\n key={`label-${segment.key}`}\n className=\"flex min-w-0 justify-center\"\n style={{ width: `${segment.widthPercent}%` }}\n >\n <span\n className=\"whitespace-nowrap px-1 text-center text-[11px] font-medium tracking-wide text-ds-2 transition-colors duration-200\"\n style={isActive ? { color: segment.color } : undefined}\n >\n {segment.label}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport { normalizeChartColors } from \"./chartPalette\";\nimport {\n chartLineHoverCursorStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n getChartActiveDotStyle,\n} from \"./chartStyles\";\n\nexport interface AreaChartData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface AreaChartProps {\n data: AreaChartData[];\n categories: { key: string; color: string }[];\n height?: number | string;\n className?: string;\n showGrid?: boolean;\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n categories,\n height = 300,\n className = \"\",\n showGrid = true,\n}) => {\n const normalizedCategories = React.useMemo(() => {\n const normalizedColors = normalizeChartColors(\n categories.map((category) => category.color),\n );\n\n return categories.map((category, index) => ({\n ...category,\n color: normalizedColors[index] ?? category.color,\n }));\n }, [categories]);\n\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart\n data={data}\n margin={{ top: 10, right: 30, left: 0, bottom: 0 }}\n >\n <defs>\n {normalizedCategories.map((cat) => (\n <linearGradient\n key={`gradient-${cat.key}`}\n id={`color-${cat.key}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor={cat.color} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={cat.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--ds-color-border)\"\n opacity={0.5}\n />\n )}\n\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dx={-10}\n />\n\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartLineHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n\n {normalizedCategories.map((cat) => (\n <Area\n key={cat.key}\n activeDot={getChartActiveDotStyle(cat.color)}\n type=\"monotone\"\n dataKey={cat.key}\n stroke={cat.color}\n strokeWidth={2}\n fillOpacity={1}\n fill={`url(#color-${cat.key})`}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport { normalizeChartColors } from \"./chartPalette\";\nimport {\n chartBandHoverCursorStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n} from \"./chartStyles\";\n\nexport interface BarChartData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface BarChartProps {\n data: BarChartData[];\n categories: { key: string; color: string }[];\n height?: number | string;\n className?: string;\n layout?: \"horizontal\" | \"vertical\";\n maxBarSize?: number;\n /**\n * Compact mode — strips axes, grid, tooltip, and margins.\n * Designed for small sparkline-style zones (e.g. StatCard md, ~130×68 px).\n */\n compact?: boolean;\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n categories,\n height = 300,\n className = \"\",\n layout = \"horizontal\",\n maxBarSize,\n compact = false,\n}) => {\n const resolvedMaxBarSize = maxBarSize ?? (compact ? 8 : layout === \"horizontal\" ? 40 : 22);\n\n const normalizedCategories = React.useMemo(() => {\n const normalizedColors = normalizeChartColors(\n categories.map((category) => category.color),\n );\n\n return categories.map((category, index) => ({\n ...category,\n color: normalizedColors[index] ?? category.color,\n }));\n }, [categories]);\n\n if (compact) {\n return (\n <div className={`w-full h-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n barCategoryGap=\"20%\"\n margin={{ top: 2, right: 2, left: 2, bottom: 2 }}\n >\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartBandHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n {normalizedCategories.map((cat) => (\n <Bar\n key={cat.key}\n dataKey={cat.key}\n fill={cat.color}\n maxBarSize={resolvedMaxBarSize}\n radius={[3, 3, 0, 0]}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n }\n\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n barCategoryGap={data.length <= 4 ? \"28%\" : \"18%\"}\n margin={{ top: 20, right: 30, left: 20, bottom: 5 }}\n >\n <CartesianGrid\n strokeDasharray=\"3 3\"\n horizontal={layout === \"horizontal\"}\n vertical={layout === \"vertical\"}\n stroke=\"var(--ds-color-border)\"\n opacity={0.4}\n />\n\n {layout === \"horizontal\" ? (\n <>\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dx={-10}\n />\n </>\n ) : (\n <>\n <XAxis\n type=\"number\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n dataKey=\"name\"\n type=\"category\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dx={-10}\n />\n </>\n )}\n\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartBandHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n\n {normalizedCategories.map((cat) => (\n <Bar\n key={cat.key}\n dataKey={cat.key}\n fill={cat.color}\n maxBarSize={resolvedMaxBarSize}\n radius={layout === \"horizontal\" ? [4, 4, 0, 0] : [0, 4, 4, 0]}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n Bar,\n BarChart as RechartsBarChart,\n CartesianGrid,\n Cell,\n Rectangle,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\n\nimport { getChartColorVar, normalizeChartColorValue } from \"./chartPalette\";\nimport {\n chartBandHoverCursorStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n} from \"./chartStyles\";\n\nexport interface PositiveNegativeBarChartData {\n name: string;\n value: number;\n}\n\ninterface PositiveNegativeBarChartProps {\n data: PositiveNegativeBarChartData[];\n height?: number | string;\n className?: string;\n layout?: \"horizontal\" | \"vertical\";\n positiveColor?: string;\n negativeColor?: string;\n neutralColor?: string;\n showGrid?: boolean;\n seriesLabel?: string;\n valueFormatter?: (value: number) => string;\n tickFormatter?: (value: number) => string;\n}\n\nconst defaultValueFormatter = (value: number): string =>\n new Intl.NumberFormat().format(value);\n\nconst getBarRadius = (\n value: number,\n layout: \"horizontal\" | \"vertical\",\n): [number, number, number, number] => {\n if (value === 0) {\n return [6, 6, 6, 6];\n }\n\n if (layout === \"horizontal\") {\n return [6, 6, 0, 0];\n }\n\n return value > 0 ? [0, 6, 6, 0] : [6, 0, 0, 6];\n};\n\nexport const PositiveNegativeBarChart: React.FC<\n PositiveNegativeBarChartProps\n> = ({\n data,\n height = 320,\n className = \"\",\n layout = \"horizontal\",\n positiveColor = getChartColorVar(3),\n negativeColor = getChartColorVar(5),\n neutralColor = getChartColorVar(15),\n showGrid = true,\n seriesLabel = \"Variance\",\n valueFormatter = defaultValueFormatter,\n tickFormatter,\n}) => {\n const resolvedPositiveColor = React.useMemo(\n () => normalizeChartColorValue(positiveColor) ?? getChartColorVar(3),\n [positiveColor],\n );\n const resolvedNegativeColor = React.useMemo(\n () => normalizeChartColorValue(negativeColor) ?? getChartColorVar(5),\n [negativeColor],\n );\n const resolvedNeutralColor = React.useMemo(\n () => normalizeChartColorValue(neutralColor) ?? getChartColorVar(15),\n [neutralColor],\n );\n\n const resolvedTickFormatter = React.useCallback(\n (value: number) => tickFormatter?.(value) ?? valueFormatter(value),\n [tickFormatter, valueFormatter],\n );\n\n const getBarFill = React.useCallback(\n (value: number) => {\n if (value > 0) {\n return resolvedPositiveColor;\n }\n\n if (value < 0) {\n return resolvedNegativeColor;\n }\n\n return resolvedNeutralColor;\n },\n [resolvedNegativeColor, resolvedNeutralColor, resolvedPositiveColor],\n );\n\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n margin={{ top: 20, right: 30, left: 20, bottom: 5 }}\n >\n {showGrid ? (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n horizontal={layout === \"horizontal\"}\n vertical={layout === \"vertical\"}\n stroke=\"var(--ds-color-border)\"\n opacity={0.35}\n />\n ) : null}\n\n {layout === \"horizontal\" ? (\n <>\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n tickFormatter={resolvedTickFormatter}\n dx={-10}\n />\n <ReferenceLine\n y={0}\n stroke=\"var(--ds-color-border-strong)\"\n strokeOpacity={0.95}\n />\n </>\n ) : (\n <>\n <XAxis\n type=\"number\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n tickFormatter={resolvedTickFormatter}\n dy={10}\n />\n <YAxis\n dataKey=\"name\"\n type=\"category\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--ds-color-fg-muted)\", fontSize: 12 }}\n width={96}\n dx={-6}\n />\n <ReferenceLine\n x={0}\n stroke=\"var(--ds-color-border-strong)\"\n strokeOpacity={0.95}\n />\n </>\n )}\n\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n cursor={chartBandHoverCursorStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n formatter={(value) => [\n valueFormatter(Number(value ?? 0)),\n seriesLabel,\n ]}\n />\n\n <Bar\n dataKey=\"value\"\n radius={6}\n barSize={layout === \"horizontal\" ? 30 : 22}\n shape={(props) => {\n const barValue = Array.isArray(props.value)\n ? props.value[1] - props.value[0]\n : props.value;\n\n return (\n <Rectangle {...props} radius={getBarRadius(barValue, layout)} />\n );\n }}\n >\n {data.map((entry) => (\n <Cell\n key={`${entry.name}-${entry.value}`}\n fill={getBarFill(entry.value)}\n />\n ))}\n </Bar>\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport { normalizeChartColors } from \"./chartPalette\";\nimport {\n chartLegendTextStyle,\n chartTooltipContentStyle,\n chartTooltipItemStyle,\n chartTooltipLabelStyle,\n chartTooltipWrapperStyle,\n} from \"./chartStyles\";\n\nexport interface PieChartData {\n name: string;\n value: number;\n}\n\nexport interface PieChartCenterContentContext {\n activeColor?: string;\n activeIndex: number | null;\n activeSlice: PieChartData | null;\n data: PieChartData[];\n displayLabel: string;\n displayPercentageLabel: string;\n displayValue: number;\n normalizedColors: string[];\n totalValue: number;\n valueFormatter: (value: number) => string;\n variant: \"pie\" | \"donut\";\n}\n\nexport interface PieChartProps {\n data: PieChartData[];\n colors: string[];\n height?: number | string;\n className?: string;\n variant?: \"pie\" | \"donut\";\n showCenterSummary?: boolean;\n centerLabel?: string;\n valueFormatter?: (value: number) => string;\n renderCenterContent?: (\n context: PieChartCenterContentContext,\n ) => React.ReactNode;\n}\n\nconst defaultValueFormatter = (value: number): string =>\n new Intl.NumberFormat().format(value);\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n colors,\n height = 300,\n className = \"\",\n variant = \"donut\",\n showCenterSummary = variant === \"donut\",\n centerLabel = \"Total\",\n valueFormatter = defaultValueFormatter,\n renderCenterContent,\n}) => {\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const innerRadius = variant === \"donut\" ? \"60%\" : 0;\n const normalizedColors = React.useMemo(\n () => normalizeChartColors(colors),\n [colors],\n );\n const totalValue = React.useMemo(\n () => data.reduce((sum, item) => sum + item.value, 0),\n [data],\n );\n const activeSlice =\n activeIndex !== null && activeIndex >= 0 && activeIndex < data.length\n ? data[activeIndex]\n : null;\n const activePercentage =\n activeSlice && totalValue > 0\n ? `${Math.round((activeSlice.value / totalValue) * 100)}% of total`\n : `${data.length} categories`;\n const displayLabel = activeSlice?.name ?? centerLabel;\n const displayValue = activeSlice?.value ?? totalValue;\n const activeColor =\n activeIndex !== null\n ? normalizedColors[activeIndex % normalizedColors.length]\n : undefined;\n const centerContentContext: PieChartCenterContentContext = {\n activeColor,\n activeIndex,\n activeSlice,\n data,\n displayLabel,\n displayPercentageLabel: activePercentage,\n displayValue,\n normalizedColors,\n totalValue,\n valueFormatter,\n variant,\n };\n const shouldRenderCenterContent =\n variant === \"donut\" && (showCenterSummary || Boolean(renderCenterContent));\n\n return (\n <div className={`relative w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius=\"80%\"\n paddingAngle={variant === \"donut\" ? 2 : 0}\n dataKey=\"value\"\n stroke=\"none\"\n onMouseEnter={(_data: unknown, index: number) =>\n setActiveIndex(index)\n }\n onMouseLeave={() => setActiveIndex(null)}\n >\n {data.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={normalizedColors[index % normalizedColors.length]}\n />\n ))}\n </Pie>\n\n <Tooltip\n contentStyle={chartTooltipContentStyle}\n itemStyle={chartTooltipItemStyle}\n labelStyle={chartTooltipLabelStyle}\n wrapperStyle={chartTooltipWrapperStyle}\n />\n\n <Legend iconType=\"circle\" wrapperStyle={chartLegendTextStyle} />\n </RechartsPieChart>\n </ResponsiveContainer>\n\n {shouldRenderCenterContent ? (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n {renderCenterContent ? (\n renderCenterContent(centerContentContext)\n ) : (\n <div className=\"flex max-w-[42%] flex-col items-center text-center\">\n <p className=\"text-[11px] font-medium tracking-[0.16em] text-ds-2 uppercase\">\n {displayLabel}\n </p>\n <p className=\"mt-1 text-2xl font-semibold leading-none text-ds-1 sm:text-3xl\">\n {valueFormatter(displayValue)}\n </p>\n <p className=\"mt-2 text-xs leading-tight text-ds-2\">\n {activePercentage}\n </p>\n </div>\n )}\n </div>\n ) : null}\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAM,kBAAkB;CACtB;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAChD;AAKD,IAAa,mBAAmB,gBAAgB,KAC7C,SAAS,SAAS,OACpB;AAED,IAAM,eAAe,gBAAgB,KAAK,SAAS,kBAAkB,KAAK,GAAG;AAQ7E,IAAM,qCAAqB,IAAI,KAA8B;AAE7D,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAE7B,IAAM,qBAAqB,SACzB,OAAO,SAAS,WAAW,OAAO,OAAO,KAAK,QAAQ,UAAU,GAAG,CAAC;AAEtE,IAAa,oBACX,MACA,YAA4B,SACjB,SAAS,UAAU,SAAS,kBAAkB,KAAK,CAAC;AAEjE,IAAa,4BACX,UACuB;CACvB,MAAM,kBAAkB,OAAO,MAAM;AAErC,KAAI,CAAC,gBACH;CAGF,MAAM,aAAa,gBAAgB,MAAM,kBAAkB;AAC3D,KAAI,WACF,QAAO,kBAAkB,WAAW,GAAG;CAGzC,MAAM,gBAAgB,gBAAgB,MAAM,qBAAqB;AACjE,KAAI,cACF,QAAO,SAAS,cAAc,GAAG;AAGnC,QAAO;;AAGT,IAAM,0BAAkC;AACtC,KAAI,OAAO,aAAa,YAAa,QAAO;CAE5C,MAAM,OAAO,SAAS;AACtB,QAAO;EACL,KAAK,aAAa,aAAa,IAAI;EACnC,KAAK,aAAa,YAAY,IAAI;EAClC,KAAK,aAAa,aAAa,IAAI;EACpC,CAAC,KAAK,IAAI;;AAGb,IAAM,gBAAgB,UAAmC;AACvD,KAAI,OAAO,aAAa,YAAa,QAAO;CAE5C,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI;CAC5C,MAAM,SAAS,mBAAmB,IAAI,SAAS;AAC/C,KAAI,WAAW,KAAA,EACb,QAAO;CAGT,MAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,OAAM,MAAM,QAAQ;AACpB,OAAM,MAAM,WAAW;AACvB,OAAM,MAAM,UAAU;AACtB,OAAM,MAAM,gBAAgB;AAC5B,UAAS,KAAK,YAAY,MAAM;CAEhC,MAAM,gBAAgB,iBAAiB,MAAM,CAAC;AAC9C,UAAS,KAAK,YAAY,MAAM;CAEhC,MAAM,QAAQ,cAAc,MAAM,kCAAkC;CAEpE,MAAM,WAAW,QACb;EACE,GAAG,OAAO,MAAM,GAAG;EACnB,GAAG,OAAO,MAAM,GAAG;EACnB,GAAG,OAAO,MAAM,GAAG;EACpB,GACD;AAEJ,oBAAmB,IAAI,UAAU,SAAS;AAC1C,QAAO;;AAGT,IAAM,oBAAoB,MAAgB,UAA4B;CACpE,MAAM,SAAS,KAAK,IAAI,MAAM;CAC9B,MAAM,SAAS,KAAK,IAAI,MAAM;CAC9B,MAAM,SAAS,KAAK,IAAI,MAAM;AAE9B,QAAO,KAAK,KAAK,UAAU,IAAI,UAAU,IAAI,UAAU,EAAE;;AAG3D,IAAM,gBACJ,WACA,YACA,cAAc,OACF;AACZ,KAAI,WAAW,SAAS,UAAU,CAChC,QAAO;CAGT,MAAM,eAAe,aAAa,UAAU;AAC5C,KAAI,CAAC,aACH,QAAO;AAGT,QAAO,WAAW,MAAM,cAAc;EACpC,MAAM,UAAU,aAAa,UAAU;AACvC,SAAO,UACH,iBAAiB,cAAc,QAAQ,GAAG,cAC1C;GACJ;;AAGJ,IAAa,mBAAmB,QAAQ,aAAa,WACnD,MAAM,KACJ,EAAE,QAAQ,OAAO,GAChB,GAAG,UAAU,aAAa,QAAQ,aAAa,QACjD;AAEH,IAAa,wBACX,oBACa;CACb,MAAM,aAAuB,EAAE;CAC/B,IAAI,eAAe;CAEnB,MAAM,oCAA4C;AAChD,OAAK,IAAI,UAAU,GAAG,UAAU,aAAa,QAAQ,WAAW;GAC9D,MAAM,YACJ,cAAc,eAAe,WAAW,aAAa;AAEvD,OAAI,CAAC,aAAa,WAAW,WAAW,EAAE;AACxC,oBAAgB,eAAe,UAAU,KAAK,aAAa;AAC3D,WAAO;;;EAIX,MAAM,WAAW,aAAa,eAAe,aAAa;AAC1D,kBAAgB,eAAe,KAAK,aAAa;AACjD,SAAO;;AAGT,QAAO,gBAAgB,KAAK,mBAAmB;EAC7C,MAAM,2BAA2B,yBAAyB,eAAe;EACzE,MAAM,gBACJ,4BACA,CAAC,aAAa,0BAA0B,WAAW,GAC/C,2BACA,6BAA6B;AAEnC,aAAW,KAAK,cAAc;AAC9B,SAAO;GACP;;;;AC7HJ,IAAa,iBAA+C,EAC1D,MACA,SAAS,KACT,iBAAiB,iBAAiB,EAAE,EACpC,iBAAiB,iBAAiB,EAAE,EACpC,YAAY,iBAAiB,EAAE,EAC/B,YAAY,SACR;CACJ,MAAM,CAAC,iBAAiB,mBAAmB,MAAA,QAAM,cACzC,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,EAC5D,CAAC,gBAAgB,eAAe,CACjC;CACD,MAAM,sBAAsB,MAAA,QAAM,cAC1B,yBAAyB,UAAU,IAAI,iBAAiB,EAAE,EAChE,CAAC,UAAU,CACZ;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,mBAAmB;EAAa,OAAO,EAAE,QAAQ;YAC/D,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,WAAD;IACQ;IACN,QAAQ;KAAE,KAAK;KAAI,OAAO;KAAI,MAAM;KAAI,QAAQ;KAAI;cAFtD;KAIE,iBAAA,GAAA,kBAAA,MAAC,QAAD,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,MAAC,kBAAD;MAAgB,IAAG;MAAe,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAA1D,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAK,WAAW;OAAmB,CAAA,EAChD,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAO,WAAW;OAAmB,CAAA,CACnC;SAGjB,iBAAA,GAAA,kBAAA,MAAC,UAAD;MAAQ,IAAG;MAAW,GAAE;MAAO,GAAE;MAAO,OAAM;MAAO,QAAO;gBAA5D,CACE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;OACE,IAAG;OACH,IAAG;OACH,cAAa;OACb,YAAY;OACZ,cAAa;OACb,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,gBAAD;OACE,IAAG;OACH,IAAG;OACH,cAAa;OACb,YAAY;OACZ,cAAa;OACb,CAAA,CACK;QACJ,EAAA,CAAA;KAGP,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;MACE,iBAAgB;MAChB,UAAU;MACV,QAAO;MACP,SAAS;MACT,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,SAAQ;MACR,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc,oBAAA;MACd,QAAQ,oBAAA;MACR,WAAW,oBAAA;MACX,YAAY,oBAAA;MACZ,cAAc,oBAAA;MACd,CAAA;KAGF,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD;MACE,MAAK;MACL,SAAQ;MACR,QAAO;MACP,aAAa;MACb,KAAK;MACL,WAAW,oBAAA,uBAAuB,gBAAgB;MAClD,QAAO;MACP,CAAA;KACQ;;GACQ,CAAA;EAClB,CAAA;;;;ACzGV,IAAM,eAAsD;CAC1D,SAAS,iBAAiB,EAAE;CAC5B,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACP;AAED,IAAM,sBAA2C;CAC/C,cAAc;CACd,QAAQ;CACR,YAAY;CACZ,OAAO;CACP,UAAU;CACX;AAED,IAAa,qBAAuD,EAClE,MACA,SAAS,IACT,cAAc,GACd,YAAY,IACZ,WAAW,MACX,cAAc,MACd,OAAO,gBACH;CACJ,MAAM,eAAe,MAAA,QAAM,cACnB,yBAAyB,aAAa,MAAM,IAAI,aAAa,SACnE,CAAC,KAAK,CACP;CAED,MAAM,kBAAkB,MAAA,QAAM,OAAO;CACrC,MAAM,cAAc,MAAA,QAAM,OAAO;AAEjC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,yBAAyB;EAAa,OAAO,EAAE,QAAQ;YACrE,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,WAAD;IACQ;IACN,QAAQ;KAAE,KAAK;KAAG,OAAO;KAAG,MAAM;KAAG,QAAQ;KAAG;cAFlD;KAIE,iBAAA,GAAA,kBAAA,MAAC,QAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAAC,kBAAD;MAAgB,IAAI;MAAiB,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAA7D,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAK,WAAW;OAAc,aAAa;OAAQ,CAAA,EAChE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAO,WAAW;OAAc,aAAa;OAAQ,CAAA,CACnD;SACjB,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,IAAI;MACJ,GAAE;MACF,GAAE;MACF,OAAM;MACN,QAAO;gBAEP,iBAAA,GAAA,kBAAA,KAAC,gBAAD;OACE,IAAG;OACH,IAAG;OACH,cAAa;OACb,YAAY;OACZ,cAAa;OACb,CAAA;MACK,CAAA,CACJ,EAAA,CAAA;KAEN,WACC,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD;MACE,MAAK;MACL,SAAQ;MACR,QAAO;MACP,MAAM,QAAQ,gBAAgB;MAC9B,CAAA,GACA;KAEJ,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD;MACE,MAAK;MACL,SAAQ;MACR,QAAQ;MACK;MACb,KAAK;MACL,mBAAmB;MACnB,QAAQ,QAAQ,YAAY;MAC5B,CAAA;KAED,cACC,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc;MACd,YAAY;OAAE,OAAO;OAAoB,cAAc;OAAO;MAC9D,WAAW;OAAE,OAAO;OAAoB,YAAY;OAAK;MACzD,YAAY,UAAU,CAAC,OAAO,SAAS,GAAG,EAAE,QAAQ;MACpD,CAAA,GACA;KACM;;GACQ,CAAA;EAClB,CAAA;;;;ACnFV,IAAa,mBAAmD,EAC9D,MACA,YACA,SAAS,KACT,aACA,YAAY,SACR;CACJ,MAAM,uBAAuB,MAAA,QAAM,cAAc;EAC/C,MAAM,mBAAmB,qBACvB,WAAW,KAAK,aAAa,SAAS,MAAM,CAC7C;AAED,SAAO,WAAW,KAAK,UAAU,WAAW;GAC1C,GAAG;GACH,OAAO,iBAAiB,UAAU,SAAS;GAC5C,EAAE;IACF,CAAC,WAAW,CAAC;AAEhB,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,UAAU;EAAa,OAAO,EAAE,QAAQ;YACtD,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,UAAD;IACQ;IACN,QAAQ;KAAE,KAAK;KAAI,OAAO;KAAI,MAAM;KAAI,QAAQ;KAAG;cAFrD;KAIE,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;MACE,iBAAgB;MAChB,UAAU;MACV,QAAO;MACP,SAAS;MACT,CAAA;KACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,SAAQ;MACR,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA;KACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,QAAQ;MACR,CAAA;KACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc,oBAAA;MACd,QAAQ,oBAAA;MACR,WAAW,oBAAA;MACX,YAAY,oBAAA;MACZ,cAAc,oBAAA;MACd,CAAA;KACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,QAAD;MACE,UAAS;MACT,cAAc;OACZ,GAAG,oBAAA;OACH,YAAY;OACb;MACD,CAAA;KAED,qBAAqB,KAAK,KAAK,UAAU;MAGxC,MAAM,SADQ,UAAU,qBAAqB,SAAS,IAElD;OAAC;OAAG;OAAG;OAAG;OAAE,GACZ;OAAC;OAAG;OAAG;OAAG;OAAE;AAEhB,aACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,KAAD;OAEE,SAAS,IAAI;OACb,MAAM,IAAI;OACV,SAAQ;OACR,MAAM,IAAI;OACF;OACR,SAAS;OACT,EAPK,IAAI,IAOT;OAEJ;KACe;;GACC,CAAA;EAClB,CAAA;;;;AC9FV,IAAM,2BAAyB,UAC7B,IAAI,KAAK,cAAc,CAAC,OAAO,MAAM;AAEvC,IAAa,oBAAqD,EAChE,MAAM,UACN,YAAY,IACZ,aAAa,MACb,cAAc,OACd,eAAe,SACf,iBAAiB,8BACb;CACJ,MAAM,CAAC,kBAAkB,uBAAuB,MAAA,QAAM,SACpD,KACD;CAED,MAAM,qBAAqB,MAAA,QAAM,cAAc;EAC7C,MAAM,mBAAmB,qBACvB,SAAS,KAAK,YAAY,QAAQ,MAAM,CACzC;EAED,MAAM,aAAa,SAAS,QAAQ,KAAK,SAAS,MAAM,KAAK,OAAO,EAAE;AAEtE,SAAO,SAAS,KAAK,SAAS,WAAW;GACvC,GAAG;GACH,KAAK,QAAQ,MAAM,WAAW;GAC9B,OAAO,iBAAiB,UAAU,QAAQ;GAC1C,cACE,aAAa,IAAI,KAAK,IAAK,QAAQ,QAAQ,aAAc,KAAK,EAAE,GAAG;GACtE,EAAE;IACF,CAAC,SAAS,CAAC;CAEd,MAAM,sBAAsB,MAAA,QAAM,cAAc;EAC9C,IAAI,iBAAiB;AAErB,SAAO,mBAAmB,KAAK,YAAY;GACzC,MAAM,cAAc;IAClB,GAAG;IACH,eAAe,iBAAiB,QAAQ,eAAe;IACxD;AAED,qBAAkB,QAAQ;AAC1B,UAAO;IACP;IACD,CAAC,mBAAmB,CAAC;CAExB,MAAM,gBAAgB,MAAA,QAAM,cAExB,oBAAoB,MAAM,YAAY,QAAQ,QAAQ,iBAAiB,IACvE,MACF,CAAC,kBAAkB,oBAAoB,CACxC;CACD,MAAM,aAAa,MAAA,QAAM,cACjB,SAAS,QAAQ,KAAK,SAAS,MAAM,KAAK,OAAO,EAAE,EACzD,CAAC,SAAS,CACX;CACD,MAAM,eAAe,eAAe,SAAS;CAC7C,MAAM,eAAe,eAAe,SAAS;CAC7C,MAAM,cAAc,gBAChB,GAAG,KAAK,MAAM,cAAc,aAAa,CAAC,cAC1C,GAAG,SAAS,OAAO;AAEvB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW,8BAA8B;YAA9C;GACG,gBAAgB,iBAAiB,aAAa,KAC7C,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,uBAAA,eAAD;MACE,IAAG;MACH,kBAAA;MACA,WAAU;MACV,OAAO,gBAAgB,EAAE,OAAO,cAAc,OAAO,GAAG,KAAA;gBAEvD;MACa,CAAA,EAChB,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAA0B;MAAgB,CAAA,CACnD;QACN,iBAAA,GAAA,kBAAA,KAAC,KAAD;KACE,WAAU;KACV,OAAO,gBAAgB,EAAE,OAAO,cAAc,OAAO,GAAG,KAAA;eAEvD,eAAe,aAAa;KAC3B,CAAA,CACA;QACJ;GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACG,iBAAiB,CAAC,eACjB,iBAAA,GAAA,kBAAA,MAAC,OAAD;KACE,WAAU;KACV,OAAO;MACL,GAAG,oBAAA;MACH,MAAM,GAAG,cAAc,cAAc;MACtC;eALH;MAOE,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAA,UAAO,cAAc,OAAa,CAAA;MAClC,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;iBAAiB;OAAQ,CAAA;MACzC,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,OAAO,EAAE,OAAO,cAAc,OAAO;iBACxC,cAAc;OACV,CAAA;MACH;QAGR,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;MACE,WAAU;MACV,oBAAoB,oBAAoB,KAAK;gBAE5C,oBAAoB,KAAK,YAAY;OACpC,MAAM,WAAW,qBAAqB,QAAQ;AAE9C,cACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAEE,WAAU;QACV,OAAO,EAAE,OAAO,GAAG,QAAQ,aAAa,IAAI;QAC5C,oBAAoB,oBAAoB,QAAQ,IAAI;kBAEpD,iBAAA,GAAA,kBAAA,KAAC,OAAD;SACE,WAAU;SACV,OAAO;UACL,iBAAiB,QAAQ;UACzB,SAAS,oBAAoB,CAAC,WAAW,MAAO;UAChD,WAAW,WAAW,gBAAgB;UACtC,QAAQ,WACJ,mCACA;UACJ,WAAW,WACP,wEAAwE,QAAQ,MAAM,kDAAkD,QAAQ,MAAM,sBACtJ,qEAAqE,QAAQ,MAAM;UACxF;SACD,OAAO,GAAG,QAAQ,MAAM,IAAI,QAAQ;SACpC,CAAA;QACE,EApBC,QAAQ,IAoBT;QAER;MACE,CAAA;KACF,CAAA,CACF;;GAEL,cACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,oBAAoB,KAAK,YAAY;KACpC,MAAM,WAAW,qBAAqB,QAAQ;AAE9C,YACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAEE,WAAU;MACV,OAAO,EAAE,OAAO,GAAG,QAAQ,aAAa,IAAI;gBAE5C,iBAAA,GAAA,kBAAA,KAAC,QAAD;OACE,WAAU;OACV,OAAO,WAAW,EAAE,OAAO,QAAQ,OAAO,GAAG,KAAA;iBAE5C,QAAQ;OACJ,CAAA;MACH,EAVC,SAAS,QAAQ,MAUlB;MAER;IACE,CAAA;GAEJ;;;;;ACrJV,IAAa,aAAuC,EAClD,MACA,YACA,SAAS,KACT,YAAY,IACZ,WAAW,WACP;CACJ,MAAM,uBAAuB,MAAA,QAAM,cAAc;EAC/C,MAAM,mBAAmB,qBACvB,WAAW,KAAK,aAAa,SAAS,MAAM,CAC7C;AAED,SAAO,WAAW,KAAK,UAAU,WAAW;GAC1C,GAAG;GACH,OAAO,iBAAiB,UAAU,SAAS;GAC5C,EAAE;IACF,CAAC,WAAW,CAAC;AAEhB,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,UAAU;EAAa,OAAO,EAAE,QAAQ;YACtD,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,WAAD;IACQ;IACN,QAAQ;KAAE,KAAK;KAAI,OAAO;KAAI,MAAM;KAAG,QAAQ;KAAG;cAFpD;KAIE,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAA,UACG,qBAAqB,KAAK,QACzB,iBAAA,GAAA,kBAAA,MAAC,kBAAD;MAEE,IAAI,SAAS,IAAI;MACjB,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG;gBANL,CAQE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAK,WAAW,IAAI;OAAO,aAAa;OAAO,CAAA,EAC5D,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,QAAO;OAAM,WAAW,IAAI;OAAO,aAAa;OAAK,CAAA,CAC5C;QATV,YAAY,IAAI,MASN,CACjB,EACG,CAAA;KAEN,YACC,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;MACE,iBAAgB;MAChB,UAAU;MACV,QAAO;MACP,SAAS;MACT,CAAA;KAGJ,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,SAAQ;MACR,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc,oBAAA;MACd,QAAQ,oBAAA;MACR,WAAW,oBAAA;MACX,YAAY,oBAAA;MACZ,cAAc,oBAAA;MACd,CAAA;KAED,qBAAqB,KAAK,QACzB,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD;MAEE,WAAW,oBAAA,uBAAuB,IAAI,MAAM;MAC5C,MAAK;MACL,SAAS,IAAI;MACb,QAAQ,IAAI;MACZ,aAAa;MACb,aAAa;MACb,MAAM,cAAc,IAAI,IAAI;MAC5B,EARK,IAAI,IAQT,CACF;KACgB;;GACA,CAAA;EAClB,CAAA;;;;AClFV,IAAa,YAAqC,EAChD,MACA,YACA,SAAS,KACT,YAAY,IACZ,SAAS,cACT,YACA,UAAU,YACN;CACJ,MAAM,qBAAqB,eAAe,UAAU,IAAI,WAAW,eAAe,KAAK;CAEvF,MAAM,uBAAuB,MAAA,QAAM,cAAc;EAC/C,MAAM,mBAAmB,qBACvB,WAAW,KAAK,aAAa,SAAS,MAAM,CAC7C;AAED,SAAO,WAAW,KAAK,UAAU,WAAW;GAC1C,GAAG;GACH,OAAO,iBAAiB,UAAU,SAAS;GAC5C,EAAE;IACF,CAAC,WAAW,CAAC;AAEhB,KAAI,QACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,iBAAiB;EAAa,OAAO,EAAE,QAAQ;YAC7D,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,UAAD;IACQ;IACE;IACR,gBAAe;IACf,QAAQ;KAAE,KAAK;KAAG,OAAO;KAAG,MAAM;KAAG,QAAQ;KAAG;cAJlD,CAME,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;KACE,cAAc,oBAAA;KACd,QAAQ,oBAAA;KACR,WAAW,oBAAA;KACX,YAAY,oBAAA;KACZ,cAAc,oBAAA;KACd,CAAA,EACD,qBAAqB,KAAK,QACzB,iBAAA,GAAA,kBAAA,KAAC,SAAA,KAAD;KAEE,SAAS,IAAI;KACb,MAAM,IAAI;KACV,YAAY;KACZ,QAAQ;MAAC;MAAG;MAAG;MAAG;MAAE;KACpB,EALK,IAAI,IAKT,CACF,CACe;;GACC,CAAA;EAClB,CAAA;AAIV,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,UAAU;EAAa,OAAO,EAAE,QAAQ;YACtD,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,UAAD;IACQ;IACE;IACR,gBAAgB,KAAK,UAAU,IAAI,QAAQ;IAC3C,QAAQ;KAAE,KAAK;KAAI,OAAO;KAAI,MAAM;KAAI,QAAQ;KAAG;cAJrD;KAME,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;MACE,iBAAgB;MAChB,YAAY,WAAW;MACvB,UAAU,WAAW;MACrB,QAAO;MACP,SAAS;MACT,CAAA;KAED,WAAW,eACV,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,SAAQ;MACR,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,MAAK;MACL,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;MACE,SAAQ;MACR,MAAK;MACL,UAAU;MACV,UAAU;MACV,MAAM;OAAE,MAAM;OAA4B,UAAU;OAAI;MACxD,IAAI;MACJ,CAAA,CACD,EAAA,CAAA;KAGL,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc,oBAAA;MACd,QAAQ,oBAAA;MACR,WAAW,oBAAA;MACX,YAAY,oBAAA;MACZ,cAAc,oBAAA;MACd,CAAA;KAED,qBAAqB,KAAK,QACzB,iBAAA,GAAA,kBAAA,KAAC,SAAA,KAAD;MAEE,SAAS,IAAI;MACb,MAAM,IAAI;MACV,YAAY;MACZ,QAAQ,WAAW,eAAe;OAAC;OAAG;OAAG;OAAG;OAAE,GAAG;OAAC;OAAG;OAAG;OAAG;OAAE;MAC7D,EALK,IAAI,IAKT,CACF;KACe;;GACC,CAAA;EAClB,CAAA;;;;AC3HV,IAAM,2BAAyB,UAC7B,IAAI,KAAK,cAAc,CAAC,OAAO,MAAM;AAEvC,IAAM,gBACJ,OACA,WACqC;AACrC,KAAI,UAAU,EACZ,QAAO;EAAC;EAAG;EAAG;EAAG;EAAE;AAGrB,KAAI,WAAW,aACb,QAAO;EAAC;EAAG;EAAG;EAAG;EAAE;AAGrB,QAAO,QAAQ,IAAI;EAAC;EAAG;EAAG;EAAG;EAAE,GAAG;EAAC;EAAG;EAAG;EAAG;EAAE;;AAGhD,IAAa,4BAER,EACH,MACA,SAAS,KACT,YAAY,IACZ,SAAS,cACT,gBAAgB,iBAAiB,EAAE,EACnC,gBAAgB,iBAAiB,EAAE,EACnC,eAAe,iBAAiB,GAAG,EACnC,WAAW,MACX,cAAc,YACd,iBAAiB,yBACjB,oBACI;CACJ,MAAM,wBAAwB,MAAA,QAAM,cAC5B,yBAAyB,cAAc,IAAI,iBAAiB,EAAE,EACpE,CAAC,cAAc,CAChB;CACD,MAAM,wBAAwB,MAAA,QAAM,cAC5B,yBAAyB,cAAc,IAAI,iBAAiB,EAAE,EACpE,CAAC,cAAc,CAChB;CACD,MAAM,uBAAuB,MAAA,QAAM,cAC3B,yBAAyB,aAAa,IAAI,iBAAiB,GAAG,EACpE,CAAC,aAAa,CACf;CAED,MAAM,wBAAwB,MAAA,QAAM,aACjC,UAAkB,gBAAgB,MAAM,IAAI,eAAe,MAAM,EAClE,CAAC,eAAe,eAAe,CAChC;CAED,MAAM,aAAa,MAAA,QAAM,aACtB,UAAkB;AACjB,MAAI,QAAQ,EACV,QAAO;AAGT,MAAI,QAAQ,EACV,QAAO;AAGT,SAAO;IAET;EAAC;EAAuB;EAAsB;EAAsB,CACrE;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAW,UAAU;EAAa,OAAO,EAAE,QAAQ;YACtD,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,UAAD;IACQ;IACE;IACR,QAAQ;KAAE,KAAK;KAAI,OAAO;KAAI,MAAM;KAAI,QAAQ;KAAG;cAHrD;KAKG,WACC,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;MACE,iBAAgB;MAChB,YAAY,WAAW;MACvB,UAAU,WAAW;MACrB,QAAO;MACP,SAAS;MACT,CAAA,GACA;KAEH,WAAW,eACV,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;MACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;OACE,SAAQ;OACR,UAAU;OACV,UAAU;OACV,MAAM;QAAE,MAAM;QAA4B,UAAU;QAAI;OACxD,IAAI;OACJ,CAAA;MACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;OACE,UAAU;OACV,UAAU;OACV,MAAM;QAAE,MAAM;QAA4B,UAAU;QAAI;OACxD,eAAe;OACf,IAAI;OACJ,CAAA;MACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;OACE,GAAG;OACH,QAAO;OACP,eAAe;OACf,CAAA;MACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;MACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;OACE,MAAK;OACL,UAAU;OACV,UAAU;OACV,MAAM;QAAE,MAAM;QAA4B,UAAU;QAAI;OACxD,eAAe;OACf,IAAI;OACJ,CAAA;MACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,OAAD;OACE,SAAQ;OACR,MAAK;OACL,UAAU;OACV,UAAU;OACV,MAAM;QAAE,MAAM;QAA4B,UAAU;QAAI;OACxD,OAAO;OACP,IAAI;OACJ,CAAA;MACF,iBAAA,GAAA,kBAAA,KAAC,SAAA,eAAD;OACE,GAAG;OACH,QAAO;OACP,eAAe;OACf,CAAA;MACD,EAAA,CAAA;KAGL,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;MACE,cAAc,oBAAA;MACd,QAAQ,oBAAA;MACR,WAAW,oBAAA;MACX,YAAY,oBAAA;MACZ,cAAc,oBAAA;MACd,YAAY,UAAU,CACpB,eAAe,OAAO,SAAS,EAAE,CAAC,EAClC,YACD;MACD,CAAA;KAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,KAAD;MACE,SAAQ;MACR,QAAQ;MACR,SAAS,WAAW,eAAe,KAAK;MACxC,QAAQ,UAAU;OAChB,MAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,GACvC,MAAM,MAAM,KAAK,MAAM,MAAM,KAC7B,MAAM;AAEV,cACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,WAAD;QAAW,GAAI;QAAO,QAAQ,aAAa,UAAU,OAAO;QAAI,CAAA;;gBAInE,KAAK,KAAK,UACT,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD,EAEE,MAAM,WAAW,MAAM,MAAM,EAC7B,EAFK,GAAG,MAAM,KAAK,GAAG,MAAM,QAE5B,CACF;MACE,CAAA;KACW;;GACC,CAAA;EAClB,CAAA;;;;AC9JV,IAAM,yBAAyB,UAC7B,IAAI,KAAK,cAAc,CAAC,OAAO,MAAM;AAEvC,IAAa,YAAqC,EAChD,MACA,QACA,SAAS,KACT,YAAY,IACZ,UAAU,SACV,oBAAoB,YAAY,SAChC,cAAc,SACd,iBAAiB,uBACjB,0BACI;CACJ,MAAM,CAAC,aAAa,kBAAkB,MAAA,QAAM,SAAwB,KAAK;CACzE,MAAM,cAAc,YAAY,UAAU,QAAQ;CAClD,MAAM,mBAAmB,MAAA,QAAM,cACvB,qBAAqB,OAAO,EAClC,CAAC,OAAO,CACT;CACD,MAAM,aAAa,MAAA,QAAM,cACjB,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,OAAO,EAAE,EACrD,CAAC,KAAK,CACP;CACD,MAAM,cACJ,gBAAgB,QAAQ,eAAe,KAAK,cAAc,KAAK,SAC3D,KAAK,eACL;CACN,MAAM,mBACJ,eAAe,aAAa,IACxB,GAAG,KAAK,MAAO,YAAY,QAAQ,aAAc,IAAI,CAAC,cACtD,GAAG,KAAK,OAAO;CACrB,MAAM,eAAe,aAAa,QAAQ;CAC1C,MAAM,eAAe,aAAa,SAAS;CAK3C,MAAM,uBAAqD;EACzD,aAJA,gBAAgB,OACZ,iBAAiB,cAAc,iBAAiB,UAChD,KAAA;EAGJ;EACA;EACA;EACA;EACA,wBAAwB;EACxB;EACA;EACA;EACA;EACA;EACD;CACD,MAAM,4BACJ,YAAY,YAAY,qBAAqB,QAAQ,oBAAoB;AAE3E,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW,mBAAmB;EAAa,OAAO,EAAE,QAAQ;YAAjE,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,qBAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,iBAAA,GAAA,kBAAA,MAAC,SAAA,UAAD,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAC,SAAA,KAAD;KACQ;KACN,IAAG;KACH,IAAG;KACU;KACb,aAAY;KACZ,cAAc,YAAY,UAAU,IAAI;KACxC,SAAQ;KACR,QAAO;KACP,eAAe,OAAgB,UAC7B,eAAe,MAAM;KAEvB,oBAAoB,eAAe,KAAK;eAEvC,KAAK,KAAK,OAAO,UAChB,iBAAA,GAAA,kBAAA,KAAC,SAAA,MAAD,EAEE,MAAM,iBAAiB,QAAQ,iBAAiB,SAChD,EAFK,QAAQ,QAEb,CACF;KACE,CAAA;IAEN,iBAAA,GAAA,kBAAA,KAAC,SAAA,SAAD;KACE,cAAc,oBAAA;KACd,WAAW,oBAAA;KACX,YAAY,oBAAA;KACZ,cAAc,oBAAA;KACd,CAAA;IAEF,iBAAA,GAAA,kBAAA,KAAC,SAAA,QAAD;KAAQ,UAAS;KAAS,cAAc,oBAAA;KAAwB,CAAA;IAC/C,EAAA,CAAA;GACC,CAAA,EAErB,4BACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACZ,sBACC,oBAAoB,qBAAqB,GAEzC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA;KACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,eAAe,aAAa;MAC3B,CAAA;KACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA;KACA;;GAEJ,CAAA,GACJ,KACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-
|
|
1
|
+
{"version":3,"file":"checkbox-CDknzh89.cjs","names":[],"sources":["../../src/components/forms/checkbox/Checkbox.tsx"],"sourcesContent":["import type { CheckboxProps } from \"./types\";\nimport { forwardRef, useId } from \"react\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nconst colorClasses: Record<NonNullable<CheckboxProps[\"color\"]>, string> = {\n red: \"checked:bg-ds-state-danger\",\n blue: \"checked:bg-ds-state-info\",\n green: \"checked:bg-ds-state-success\",\n yellow: \"checked:bg-ds-state-warning\",\n teal: \"checked:bg-ds-brand-teal\",\n primary: \"checked:bg-ds-accent\",\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className = \"\",\n label,\n error,\n id,\n extra = \"\",\n color = \"primary\",\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const checkboxId = id || `checkbox-${sanitizeId(generatedId)}`;\n\n // Custom CheckIcon SVG (stroke-based design)\n const checkmarkIcon = `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M5 13l4 4L19 7'/%3e%3c/svg%3e\")`;\n\n // Check if color is a predefined color name or a custom value\n const isPredefinedColor = color in colorClasses;\n const customColorStyle = !isPredefinedColor ? color : undefined;\n\n return (\n <>\n <style>{`\n .checkbox-custom-${checkboxId}:checked {\n background-image: ${checkmarkIcon};\n background-size: 70%;\n background-position: center;\n background-repeat: no-repeat;\n ${customColorStyle ? `background-color: ${customColorStyle} !important;` : \"\"}\n }\n `}</style>\n <div className=\"flex items-center gap-2\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n className={`checkbox-custom-${checkboxId} peer relative flex h-5 min-h-[20px] w-5 min-w-[20px] appearance-none items-center justify-center rounded-md border border-ds-border-field transition duration-200 outline-none checked:border-none checked:text-ds-on-accent hover:cursor-pointer ${\n isPredefinedColor\n ? colorClasses[color as keyof typeof colorClasses]\n : \"\"\n } ${error ? \"border-ds-state-error-border\" : \"\"} ${extra} ${className}`}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium leading-none text-ds-1 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"mt-1 text-sm font-medium text-ds-state-error-text\">\n {error}\n </p>\n )}\n </div>\n </>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"mappings":";;;;AAGA,IAAM,cAAc,UAAkB,MAAM,QAAQ,mBAAmB,IAAI;AAE3E,IAAM,eAAoE;CACxE,KAAK;CACL,MAAM;CACN,OAAO;CACP,QAAQ;CACR,MAAM;CACN,SAAS;CACV;AAED,IAAa,YAAA,GAAA,MAAA,aAET,EACE,YAAY,IACZ,OACA,OACA,IACA,QAAQ,IACR,QAAQ,WACR,GAAG,SAEL,QACG;CACH,MAAM,eAAA,GAAA,MAAA,QAAqB;CAC3B,MAAM,aAAa,MAAM,YAAY,WAAW,YAAY;CAG5D,MAAM,gBAAgB;CAGtB,MAAM,oBAAoB,SAAS;CACnC,MAAM,mBAAmB,CAAC,oBAAoB,QAAQ,KAAA;AAEtD,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD,EAAA,UAAQ;6BACa,WAAW;gCACR,cAAc;;;;cAIhC,mBAAmB,qBAAqB,iBAAiB,gBAAgB,GAAG;;WAExE,CAAA,EACV,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;IACO;IACL,MAAK;IACL,IAAI;IACJ,WAAW,mBAAmB,WAAW,qPACvC,oBACI,aAAa,SACb,GACL,GAAG,QAAQ,iCAAiC,GAAG,GAAG,MAAM,GAAG;IAC5D,GAAI;IACJ,CAAA;GACD,SACC,iBAAA,GAAA,kBAAA,KAAC,SAAD;IACE,SAAS;IACT,WAAU;cAET;IACK,CAAA;GAET,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cACV;IACC,CAAA;GAEF;IACL,EAAA,CAAA;EAGR;AAED,SAAS,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-
|
|
1
|
+
{"version":3,"file":"checkbox-Y04NlzB8.mjs","names":[],"sources":["../../src/components/forms/checkbox/Checkbox.tsx"],"sourcesContent":["import type { CheckboxProps } from \"./types\";\nimport { forwardRef, useId } from \"react\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nconst colorClasses: Record<NonNullable<CheckboxProps[\"color\"]>, string> = {\n red: \"checked:bg-ds-state-danger\",\n blue: \"checked:bg-ds-state-info\",\n green: \"checked:bg-ds-state-success\",\n yellow: \"checked:bg-ds-state-warning\",\n teal: \"checked:bg-ds-brand-teal\",\n primary: \"checked:bg-ds-accent\",\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className = \"\",\n label,\n error,\n id,\n extra = \"\",\n color = \"primary\",\n ...props\n },\n ref,\n ) => {\n const generatedId = useId();\n const checkboxId = id || `checkbox-${sanitizeId(generatedId)}`;\n\n // Custom CheckIcon SVG (stroke-based design)\n const checkmarkIcon = `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M5 13l4 4L19 7'/%3e%3c/svg%3e\")`;\n\n // Check if color is a predefined color name or a custom value\n const isPredefinedColor = color in colorClasses;\n const customColorStyle = !isPredefinedColor ? color : undefined;\n\n return (\n <>\n <style>{`\n .checkbox-custom-${checkboxId}:checked {\n background-image: ${checkmarkIcon};\n background-size: 70%;\n background-position: center;\n background-repeat: no-repeat;\n ${customColorStyle ? `background-color: ${customColorStyle} !important;` : \"\"}\n }\n `}</style>\n <div className=\"flex items-center gap-2\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n className={`checkbox-custom-${checkboxId} peer relative flex h-5 min-h-[20px] w-5 min-w-[20px] appearance-none items-center justify-center rounded-md border border-ds-border-field transition duration-200 outline-none checked:border-none checked:text-ds-on-accent hover:cursor-pointer ${\n isPredefinedColor\n ? colorClasses[color as keyof typeof colorClasses]\n : \"\"\n } ${error ? \"border-ds-state-error-border\" : \"\"} ${extra} ${className}`}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium leading-none text-ds-1 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"mt-1 text-sm font-medium text-ds-state-error-text\">\n {error}\n </p>\n )}\n </div>\n </>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"mappings":";;;AAGA,IAAM,cAAc,UAAkB,MAAM,QAAQ,mBAAmB,IAAI;AAE3E,IAAM,eAAoE;CACxE,KAAK;CACL,MAAM;CACN,OAAO;CACP,QAAQ;CACR,MAAM;CACN,SAAS;CACV;AAED,IAAa,WAAW,YAEpB,EACE,YAAY,IACZ,OACA,OACA,IACA,QAAQ,IACR,QAAQ,WACR,GAAG,SAEL,QACG;CACH,MAAM,cAAc,OAAO;CAC3B,MAAM,aAAa,MAAM,YAAY,WAAW,YAAY;CAG5D,MAAM,gBAAgB;CAGtB,MAAM,oBAAoB,SAAS;CACnC,MAAM,mBAAmB,CAAC,oBAAoB,QAAQ,KAAA;AAEtD,QACE,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,SAAD,EAAA,UAAQ;6BACa,WAAW;gCACR,cAAc;;;;cAIhC,mBAAmB,qBAAqB,iBAAiB,gBAAgB,GAAG;;WAExE,CAAA,EACV,qBAAC,OAAD;EAAK,WAAU;YAAf;GACE,oBAAC,SAAD;IACO;IACL,MAAK;IACL,IAAI;IACJ,WAAW,mBAAmB,WAAW,qPACvC,oBACI,aAAa,SACb,GACL,GAAG,QAAQ,iCAAiC,GAAG,GAAG,MAAM,GAAG;IAC5D,GAAI;IACJ,CAAA;GACD,SACC,oBAAC,SAAD;IACE,SAAS;IACT,WAAU;cAET;IACK,CAAA;GAET,SACC,oBAAC,KAAD;IAAG,WAAU;cACV;IACC,CAAA;GAEF;IACL,EAAA,CAAA;EAGR;AAED,SAAS,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as mergeClassNames } from "./utils-7S0u48mU.mjs";
|
|
2
|
-
import { t as TruncatedText } from "./truncated-text-
|
|
3
|
-
import {
|
|
2
|
+
import { t as TruncatedText } from "./truncated-text-DUYTW1KP.mjs";
|
|
3
|
+
import { K as CloseIcon } from "./icons-JzMKLygv.mjs";
|
|
4
4
|
import { forwardRef } from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/data-display/chip/Chip.tsx
|
|
@@ -185,4 +185,4 @@ function StatusDotChip({ label, tone = "info", className }) {
|
|
|
185
185
|
//#endregion
|
|
186
186
|
export { StatusDotChip as n, Chip as r, SplitChip as t };
|
|
187
187
|
|
|
188
|
-
//# sourceMappingURL=chip-
|
|
188
|
+
//# sourceMappingURL=chip-B3j6R6sO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip-CqcdcSs2.mjs","names":[],"sources":["../../src/components/data-display/chip/Chip.tsx","../../src/components/data-display/chip/SpecialChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\n\nimport { CloseIcon } from \"../../icons\";\nimport { TruncatedText } from \"../../typography/truncated-text\";\n\nexport type ChipVariant = \"filled\" | \"outlined\" | \"soft\" | \"glass\";\nexport type ChipColor =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\nexport type ChipSize = \"xs\" |\"sm\" | \"md\" | \"lg\";\n\nexport interface ChipProps {\n /** The content of the chip */\n children: React.ReactNode;\n /** The variant style of the chip */\n variant?: ChipVariant;\n /** The color scheme of the chip */\n color?: ChipColor;\n /** The size of the chip */\n size?: ChipSize;\n /** Icon or element to display at the start */\n startIcon?: React.ReactNode;\n /** Icon or element to display at the end */\n endIcon?: React.ReactNode;\n /** Makes the chip removable with an X button */\n onRemove?: () => void;\n /** Makes the chip clickable */\n onClick?: () => void;\n /** Whether the chip is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /** Whether the chip should have a dot indicator */\n dot?: boolean;\n /** Dot color (uses chip color by default) */\n dotColor?: string;\n /** Maximum width for the chip - text will truncate with ellipsis if exceeded */\n maxWidth?: number | string;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n xs: \"px-1.5 py-0.5 text-xs gap-1\",\n sm: \"px-2.5 py-1 text-xs gap-1.5\",\n md: \"px-3 py-1.5 text-sm gap-2\",\n lg: \"px-4 py-2 text-base gap-2.5\",\n};\n\nconst dotSizeStyles: Record<ChipSize, string> = {\n xs: \"w-1 h-1\",\n sm: \"w-1.5 h-1.5\",\n md: \"w-2 h-2\",\n lg: \"w-2.5 h-2.5\",\n};\n\nconst iconSizeStyles: Record<ChipSize, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-3.5 h-3.5\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n};\n\nconst colorStyles: Record<ChipVariant, Record<ChipColor, string>> = {\n filled: {\n default: \"bg-ds-surface-2 text-ds-1 shadow-sm border border-ds-border-2\",\n primary:\n \"bg-ds-accent text-ds-on-accent shadow-md shadow-ds-accent/25 border border-ds-border-accent\",\n secondary:\n \"bg-ds-accent-subtle text-ds-1 shadow-sm border border-ds-border-accent\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text shadow-sm border border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text shadow-sm border border-ds-state-warning-border\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text shadow-sm border border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text shadow-sm border border-ds-state-info-border\",\n },\n outlined: {\n default:\n \"border-2 border-ds-border-3 text-ds-2 bg-transparent hover:bg-ds-surface-2\",\n primary:\n \"border-2 border-ds-border-accent bg-transparent text-ds-accent hover:bg-ds-accent-subtle\",\n secondary:\n \"border-2 border-ds-border-3 text-ds-1 bg-transparent hover:bg-ds-surface-2\",\n success:\n \"border-2 border-ds-state-success-border text-ds-state-success-text bg-transparent hover:bg-ds-state-success-surface\",\n warning:\n \"border-2 border-ds-state-warning-border text-ds-state-warning-text bg-transparent hover:bg-ds-state-warning-surface\",\n error:\n \"border-2 border-ds-state-error-border text-ds-state-error-text bg-transparent hover:bg-ds-state-error-surface\",\n info: \"border-2 border-ds-state-info-border text-ds-state-info-text bg-transparent hover:bg-ds-state-info-surface\",\n },\n soft: {\n default:\n \"bg-ds-surface-2 text-ds-1 backdrop-blur-sm border border-ds-border-2\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent-subtle text-ds-1 backdrop-blur-sm\",\n secondary:\n \"bg-ds-surface-3/30 text-ds-1 backdrop-blur-sm border border-ds-border-3/50\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text backdrop-blur-sm border border-ds-state-success-border/70\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text backdrop-blur-sm border border-ds-state-warning-border/70\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text backdrop-blur-sm border border-ds-state-error-border/70\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text backdrop-blur-sm border border-ds-state-info-border/70\",\n },\n glass: {\n default:\n \"bg-ds-surface-1/70 text-ds-1 backdrop-blur-xl border border-ds-border-2/40 shadow-lg\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent/15 text-ds-1 backdrop-blur-xl shadow-lg shadow-ds-accent/10\",\n secondary:\n \"bg-ds-surface-3/45 text-ds-1 backdrop-blur-xl border border-ds-border-3/50 shadow-lg\",\n success:\n \"bg-ds-state-success-surface/65 text-ds-state-success-text backdrop-blur-xl border border-ds-state-success-border/60 shadow-lg\",\n warning:\n \"bg-ds-state-warning-surface/65 text-ds-state-warning-text backdrop-blur-xl border border-ds-state-warning-border/60 shadow-lg\",\n error:\n \"bg-ds-state-error-surface/65 text-ds-state-error-text backdrop-blur-xl border border-ds-state-error-border/60 shadow-lg\",\n info: \"bg-ds-state-info-surface/65 text-ds-state-info-text backdrop-blur-xl border border-ds-state-info-border/60 shadow-lg\",\n },\n};\n\nconst dotColorStyles: Record<ChipColor, string> = {\n default: \"bg-ds-3\",\n primary: \"bg-ds-accent\",\n secondary: \"bg-ds-border-3\",\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n error: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n children,\n variant = \"soft\",\n color = \"default\",\n size = \"xs\",\n startIcon,\n endIcon,\n onRemove,\n onClick,\n disabled = false,\n className = \"\",\n dot = false,\n dotColor,\n maxWidth,\n },\n ref,\n ) => {\n const isClickable = onClick !== undefined;\n const isRemovable = onRemove !== undefined;\n\n const baseStyles = `\n inline-flex items-center font-medium rounded-md transition-all duration-200\n ${sizeStyles[size]}\n ${colorStyles[variant][color]}\n ${\n isClickable && !disabled\n ? \"cursor-pointer hover:scale-105 hover:shadow-lg active:scale-95\"\n : \"\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed grayscale\" : \"\"}\n ${maxWidth ? \"max-w-full\" : \"\"}\n ${className}\n `;\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onRemove) {\n onRemove();\n }\n };\n\n return (\n <span\n ref={ref}\n className={baseStyles}\n onClick={handleClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n style={\n maxWidth\n ? {\n maxWidth:\n typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }\n : undefined\n }\n onKeyDown={(e) => {\n if (\n isClickable &&\n !disabled &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {dot && (\n <span\n className={`rounded-full shrink-0 animate-pulse ${\n dotSizeStyles[size]\n } ${dotColor ? \"\" : dotColorStyles[color]}`}\n style={dotColor ? { backgroundColor: dotColor } : undefined}\n />\n )}\n {startIcon && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>\n {startIcon}\n </span>\n )}\n <TruncatedText\n as=\"span\"\n showTitleOnHover\n className=\"max-w-full font-semibold\"\n >\n {children}\n </TruncatedText>\n {endIcon && !isRemovable && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>{endIcon}</span>\n )}\n {isRemovable && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n shrink-0 rounded-full p-0.5 ml-1 transition-all duration-200\n hover:bg-ds-surface-3/35 hover:scale-110\n focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1\n ${disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n `}\n aria-label=\"Remove\"\n >\n <CloseIcon className={iconSizeStyles[size]} aria-hidden=\"true\" />\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\nexport { Chip };\n","import type { ReactNode } from \"react\";\n\nimport { TruncatedText } from \"../../typography/truncated-text\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SplitChipDirection = \"auto\" | \"ltr\" | \"rtl\";\n\nexport interface SplitChipProps {\n leftLabel: ReactNode;\n rightLabel: ReactNode;\n dir?: SplitChipDirection;\n rightLabelDir?: SplitChipDirection;\n truncateRight?: boolean;\n rightMaxWidth?: string | number;\n showRightTitleOnHover?: boolean;\n className?: string;\n leftClassName?: string;\n rightClassName?: string;\n}\n\nexport function SplitChip({\n leftLabel,\n rightLabel,\n dir = \"auto\",\n rightLabelDir = \"ltr\",\n truncateRight = false,\n rightMaxWidth = \"10rem\",\n showRightTitleOnHover = true,\n className,\n leftClassName,\n rightClassName,\n}: SplitChipProps) {\n const isRtl = dir === \"rtl\";\n\n return (\n <span\n dir={dir}\n className={mergeClassNames(\n \"inline-flex items-center overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-2\",\n className,\n )}\n >\n <span\n className={mergeClassNames(\n \"bg-ds-surface-3 px-2 py-1 text-xs font-medium uppercase tracking-[0.05em] text-ds-2\",\n isRtl ? \"border-l border-ds-border-2\" : \"border-r border-ds-border-2\",\n leftClassName,\n )}\n >\n {leftLabel}\n </span>\n <span\n dir={rightLabelDir}\n className={mergeClassNames(\n \"min-w-0 px-2 py-1 text-xs font-medium text-ds-1\",\n rightClassName,\n )}\n >\n {truncateRight ? (\n <TruncatedText\n maxWidth={rightMaxWidth}\n showTitleOnHover={showRightTitleOnHover}\n >\n {rightLabel}\n </TruncatedText>\n ) : (\n rightLabel\n )}\n </span>\n </span>\n );\n}\n\nexport type StatusDotChipTone = \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface StatusDotChipProps {\n label: string;\n tone?: StatusDotChipTone;\n className?: string;\n}\n\nconst toneClasses: Record<StatusDotChipTone, string> = {\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n danger:\n \"bg-ds-state-error-surface text-ds-state-error-text border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n};\n\nconst dotToneClasses: Record<StatusDotChipTone, string> = {\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n danger: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nexport function StatusDotChip({\n label,\n tone = \"info\",\n className,\n}: StatusDotChipProps) {\n return (\n <span\n className={mergeClassNames(\n \"inline-flex items-center gap-2 rounded-md border px-3 py-1 text-sm font-medium\",\n toneClasses[tone],\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full\",\n dotToneClasses[tone],\n )}\n />\n <span>{label}</span>\n </span>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chip-B3j6R6sO.mjs","names":[],"sources":["../../src/components/data-display/chip/Chip.tsx","../../src/components/data-display/chip/SpecialChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\n\nimport { CloseIcon } from \"../../icons\";\nimport { TruncatedText } from \"../../typography/truncated-text\";\n\nexport type ChipVariant = \"filled\" | \"outlined\" | \"soft\" | \"glass\";\nexport type ChipColor =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\nexport type ChipSize = \"xs\" |\"sm\" | \"md\" | \"lg\";\n\nexport interface ChipProps {\n /** The content of the chip */\n children: React.ReactNode;\n /** The variant style of the chip */\n variant?: ChipVariant;\n /** The color scheme of the chip */\n color?: ChipColor;\n /** The size of the chip */\n size?: ChipSize;\n /** Icon or element to display at the start */\n startIcon?: React.ReactNode;\n /** Icon or element to display at the end */\n endIcon?: React.ReactNode;\n /** Makes the chip removable with an X button */\n onRemove?: () => void;\n /** Makes the chip clickable */\n onClick?: () => void;\n /** Whether the chip is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /** Whether the chip should have a dot indicator */\n dot?: boolean;\n /** Dot color (uses chip color by default) */\n dotColor?: string;\n /** Maximum width for the chip - text will truncate with ellipsis if exceeded */\n maxWidth?: number | string;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n xs: \"px-1.5 py-0.5 text-xs gap-1\",\n sm: \"px-2.5 py-1 text-xs gap-1.5\",\n md: \"px-3 py-1.5 text-sm gap-2\",\n lg: \"px-4 py-2 text-base gap-2.5\",\n};\n\nconst dotSizeStyles: Record<ChipSize, string> = {\n xs: \"w-1 h-1\",\n sm: \"w-1.5 h-1.5\",\n md: \"w-2 h-2\",\n lg: \"w-2.5 h-2.5\",\n};\n\nconst iconSizeStyles: Record<ChipSize, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-3.5 h-3.5\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n};\n\nconst colorStyles: Record<ChipVariant, Record<ChipColor, string>> = {\n filled: {\n default: \"bg-ds-surface-2 text-ds-1 shadow-sm border border-ds-border-2\",\n primary:\n \"bg-ds-accent text-ds-on-accent shadow-md shadow-ds-accent/25 border border-ds-border-accent\",\n secondary:\n \"bg-ds-accent-subtle text-ds-1 shadow-sm border border-ds-border-accent\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text shadow-sm border border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text shadow-sm border border-ds-state-warning-border\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text shadow-sm border border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text shadow-sm border border-ds-state-info-border\",\n },\n outlined: {\n default:\n \"border-2 border-ds-border-3 text-ds-2 bg-transparent hover:bg-ds-surface-2\",\n primary:\n \"border-2 border-ds-border-accent bg-transparent text-ds-accent hover:bg-ds-accent-subtle\",\n secondary:\n \"border-2 border-ds-border-3 text-ds-1 bg-transparent hover:bg-ds-surface-2\",\n success:\n \"border-2 border-ds-state-success-border text-ds-state-success-text bg-transparent hover:bg-ds-state-success-surface\",\n warning:\n \"border-2 border-ds-state-warning-border text-ds-state-warning-text bg-transparent hover:bg-ds-state-warning-surface\",\n error:\n \"border-2 border-ds-state-error-border text-ds-state-error-text bg-transparent hover:bg-ds-state-error-surface\",\n info: \"border-2 border-ds-state-info-border text-ds-state-info-text bg-transparent hover:bg-ds-state-info-surface\",\n },\n soft: {\n default:\n \"bg-ds-surface-2 text-ds-1 backdrop-blur-sm border border-ds-border-2\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent-subtle text-ds-1 backdrop-blur-sm\",\n secondary:\n \"bg-ds-surface-3/30 text-ds-1 backdrop-blur-sm border border-ds-border-3/50\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text backdrop-blur-sm border border-ds-state-success-border/70\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text backdrop-blur-sm border border-ds-state-warning-border/70\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text backdrop-blur-sm border border-ds-state-error-border/70\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text backdrop-blur-sm border border-ds-state-info-border/70\",\n },\n glass: {\n default:\n \"bg-ds-surface-1/70 text-ds-1 backdrop-blur-xl border border-ds-border-2/40 shadow-lg\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent/15 text-ds-1 backdrop-blur-xl shadow-lg shadow-ds-accent/10\",\n secondary:\n \"bg-ds-surface-3/45 text-ds-1 backdrop-blur-xl border border-ds-border-3/50 shadow-lg\",\n success:\n \"bg-ds-state-success-surface/65 text-ds-state-success-text backdrop-blur-xl border border-ds-state-success-border/60 shadow-lg\",\n warning:\n \"bg-ds-state-warning-surface/65 text-ds-state-warning-text backdrop-blur-xl border border-ds-state-warning-border/60 shadow-lg\",\n error:\n \"bg-ds-state-error-surface/65 text-ds-state-error-text backdrop-blur-xl border border-ds-state-error-border/60 shadow-lg\",\n info: \"bg-ds-state-info-surface/65 text-ds-state-info-text backdrop-blur-xl border border-ds-state-info-border/60 shadow-lg\",\n },\n};\n\nconst dotColorStyles: Record<ChipColor, string> = {\n default: \"bg-ds-3\",\n primary: \"bg-ds-accent\",\n secondary: \"bg-ds-border-3\",\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n error: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n children,\n variant = \"soft\",\n color = \"default\",\n size = \"xs\",\n startIcon,\n endIcon,\n onRemove,\n onClick,\n disabled = false,\n className = \"\",\n dot = false,\n dotColor,\n maxWidth,\n },\n ref,\n ) => {\n const isClickable = onClick !== undefined;\n const isRemovable = onRemove !== undefined;\n\n const baseStyles = `\n inline-flex items-center font-medium rounded-md transition-all duration-200\n ${sizeStyles[size]}\n ${colorStyles[variant][color]}\n ${\n isClickable && !disabled\n ? \"cursor-pointer hover:scale-105 hover:shadow-lg active:scale-95\"\n : \"\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed grayscale\" : \"\"}\n ${maxWidth ? \"max-w-full\" : \"\"}\n ${className}\n `;\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onRemove) {\n onRemove();\n }\n };\n\n return (\n <span\n ref={ref}\n className={baseStyles}\n onClick={handleClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n style={\n maxWidth\n ? {\n maxWidth:\n typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }\n : undefined\n }\n onKeyDown={(e) => {\n if (\n isClickable &&\n !disabled &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {dot && (\n <span\n className={`rounded-full shrink-0 animate-pulse ${\n dotSizeStyles[size]\n } ${dotColor ? \"\" : dotColorStyles[color]}`}\n style={dotColor ? { backgroundColor: dotColor } : undefined}\n />\n )}\n {startIcon && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>\n {startIcon}\n </span>\n )}\n <TruncatedText\n as=\"span\"\n showTitleOnHover\n className=\"max-w-full font-semibold\"\n >\n {children}\n </TruncatedText>\n {endIcon && !isRemovable && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>{endIcon}</span>\n )}\n {isRemovable && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n shrink-0 rounded-full p-0.5 ml-1 transition-all duration-200\n hover:bg-ds-surface-3/35 hover:scale-110\n focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1\n ${disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n `}\n aria-label=\"Remove\"\n >\n <CloseIcon className={iconSizeStyles[size]} aria-hidden=\"true\" />\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\nexport { Chip };\n","import type { ReactNode } from \"react\";\n\nimport { TruncatedText } from \"../../typography/truncated-text\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SplitChipDirection = \"auto\" | \"ltr\" | \"rtl\";\n\nexport interface SplitChipProps {\n leftLabel: ReactNode;\n rightLabel: ReactNode;\n dir?: SplitChipDirection;\n rightLabelDir?: SplitChipDirection;\n truncateRight?: boolean;\n rightMaxWidth?: string | number;\n showRightTitleOnHover?: boolean;\n className?: string;\n leftClassName?: string;\n rightClassName?: string;\n}\n\nexport function SplitChip({\n leftLabel,\n rightLabel,\n dir = \"auto\",\n rightLabelDir = \"ltr\",\n truncateRight = false,\n rightMaxWidth = \"10rem\",\n showRightTitleOnHover = true,\n className,\n leftClassName,\n rightClassName,\n}: SplitChipProps) {\n const isRtl = dir === \"rtl\";\n\n return (\n <span\n dir={dir}\n className={mergeClassNames(\n \"inline-flex items-center overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-2\",\n className,\n )}\n >\n <span\n className={mergeClassNames(\n \"bg-ds-surface-3 px-2 py-1 text-xs font-medium uppercase tracking-[0.05em] text-ds-2\",\n isRtl ? \"border-l border-ds-border-2\" : \"border-r border-ds-border-2\",\n leftClassName,\n )}\n >\n {leftLabel}\n </span>\n <span\n dir={rightLabelDir}\n className={mergeClassNames(\n \"min-w-0 px-2 py-1 text-xs font-medium text-ds-1\",\n rightClassName,\n )}\n >\n {truncateRight ? (\n <TruncatedText\n maxWidth={rightMaxWidth}\n showTitleOnHover={showRightTitleOnHover}\n >\n {rightLabel}\n </TruncatedText>\n ) : (\n rightLabel\n )}\n </span>\n </span>\n );\n}\n\nexport type StatusDotChipTone = \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface StatusDotChipProps {\n label: string;\n tone?: StatusDotChipTone;\n className?: string;\n}\n\nconst toneClasses: Record<StatusDotChipTone, string> = {\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n danger:\n \"bg-ds-state-error-surface text-ds-state-error-text border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n};\n\nconst dotToneClasses: Record<StatusDotChipTone, string> = {\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n danger: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nexport function StatusDotChip({\n label,\n tone = \"info\",\n className,\n}: StatusDotChipProps) {\n return (\n <span\n className={mergeClassNames(\n \"inline-flex items-center gap-2 rounded-md border px-3 py-1 text-sm font-medium\",\n toneClasses[tone],\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full\",\n dotToneClasses[tone],\n )}\n />\n <span>{label}</span>\n </span>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("./chunk-B_GkZjkl.cjs");
|
|
2
2
|
const require_utils = require("./utils-LRbEQHYs.cjs");
|
|
3
|
-
const require_truncated_text = require("./truncated-text-
|
|
4
|
-
const require_icons = require("./icons-
|
|
3
|
+
const require_truncated_text = require("./truncated-text-CswjmrHZ.cjs");
|
|
4
|
+
const require_icons = require("./icons-ub9iu-JG.cjs");
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
7
|
//#region src/components/data-display/chip/Chip.tsx
|
|
@@ -203,4 +203,4 @@ Object.defineProperty(exports, "StatusDotChip", {
|
|
|
203
203
|
}
|
|
204
204
|
});
|
|
205
205
|
|
|
206
|
-
//# sourceMappingURL=chip-
|
|
206
|
+
//# sourceMappingURL=chip-sfQlzrbo.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip-B0YzBwkz.cjs","names":[],"sources":["../../src/components/data-display/chip/Chip.tsx","../../src/components/data-display/chip/SpecialChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\n\nimport { CloseIcon } from \"../../icons\";\nimport { TruncatedText } from \"../../typography/truncated-text\";\n\nexport type ChipVariant = \"filled\" | \"outlined\" | \"soft\" | \"glass\";\nexport type ChipColor =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\nexport type ChipSize = \"xs\" |\"sm\" | \"md\" | \"lg\";\n\nexport interface ChipProps {\n /** The content of the chip */\n children: React.ReactNode;\n /** The variant style of the chip */\n variant?: ChipVariant;\n /** The color scheme of the chip */\n color?: ChipColor;\n /** The size of the chip */\n size?: ChipSize;\n /** Icon or element to display at the start */\n startIcon?: React.ReactNode;\n /** Icon or element to display at the end */\n endIcon?: React.ReactNode;\n /** Makes the chip removable with an X button */\n onRemove?: () => void;\n /** Makes the chip clickable */\n onClick?: () => void;\n /** Whether the chip is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /** Whether the chip should have a dot indicator */\n dot?: boolean;\n /** Dot color (uses chip color by default) */\n dotColor?: string;\n /** Maximum width for the chip - text will truncate with ellipsis if exceeded */\n maxWidth?: number | string;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n xs: \"px-1.5 py-0.5 text-xs gap-1\",\n sm: \"px-2.5 py-1 text-xs gap-1.5\",\n md: \"px-3 py-1.5 text-sm gap-2\",\n lg: \"px-4 py-2 text-base gap-2.5\",\n};\n\nconst dotSizeStyles: Record<ChipSize, string> = {\n xs: \"w-1 h-1\",\n sm: \"w-1.5 h-1.5\",\n md: \"w-2 h-2\",\n lg: \"w-2.5 h-2.5\",\n};\n\nconst iconSizeStyles: Record<ChipSize, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-3.5 h-3.5\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n};\n\nconst colorStyles: Record<ChipVariant, Record<ChipColor, string>> = {\n filled: {\n default: \"bg-ds-surface-2 text-ds-1 shadow-sm border border-ds-border-2\",\n primary:\n \"bg-ds-accent text-ds-on-accent shadow-md shadow-ds-accent/25 border border-ds-border-accent\",\n secondary:\n \"bg-ds-accent-subtle text-ds-1 shadow-sm border border-ds-border-accent\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text shadow-sm border border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text shadow-sm border border-ds-state-warning-border\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text shadow-sm border border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text shadow-sm border border-ds-state-info-border\",\n },\n outlined: {\n default:\n \"border-2 border-ds-border-3 text-ds-2 bg-transparent hover:bg-ds-surface-2\",\n primary:\n \"border-2 border-ds-border-accent bg-transparent text-ds-accent hover:bg-ds-accent-subtle\",\n secondary:\n \"border-2 border-ds-border-3 text-ds-1 bg-transparent hover:bg-ds-surface-2\",\n success:\n \"border-2 border-ds-state-success-border text-ds-state-success-text bg-transparent hover:bg-ds-state-success-surface\",\n warning:\n \"border-2 border-ds-state-warning-border text-ds-state-warning-text bg-transparent hover:bg-ds-state-warning-surface\",\n error:\n \"border-2 border-ds-state-error-border text-ds-state-error-text bg-transparent hover:bg-ds-state-error-surface\",\n info: \"border-2 border-ds-state-info-border text-ds-state-info-text bg-transparent hover:bg-ds-state-info-surface\",\n },\n soft: {\n default:\n \"bg-ds-surface-2 text-ds-1 backdrop-blur-sm border border-ds-border-2\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent-subtle text-ds-1 backdrop-blur-sm\",\n secondary:\n \"bg-ds-surface-3/30 text-ds-1 backdrop-blur-sm border border-ds-border-3/50\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text backdrop-blur-sm border border-ds-state-success-border/70\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text backdrop-blur-sm border border-ds-state-warning-border/70\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text backdrop-blur-sm border border-ds-state-error-border/70\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text backdrop-blur-sm border border-ds-state-info-border/70\",\n },\n glass: {\n default:\n \"bg-ds-surface-1/70 text-ds-1 backdrop-blur-xl border border-ds-border-2/40 shadow-lg\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent/15 text-ds-1 backdrop-blur-xl shadow-lg shadow-ds-accent/10\",\n secondary:\n \"bg-ds-surface-3/45 text-ds-1 backdrop-blur-xl border border-ds-border-3/50 shadow-lg\",\n success:\n \"bg-ds-state-success-surface/65 text-ds-state-success-text backdrop-blur-xl border border-ds-state-success-border/60 shadow-lg\",\n warning:\n \"bg-ds-state-warning-surface/65 text-ds-state-warning-text backdrop-blur-xl border border-ds-state-warning-border/60 shadow-lg\",\n error:\n \"bg-ds-state-error-surface/65 text-ds-state-error-text backdrop-blur-xl border border-ds-state-error-border/60 shadow-lg\",\n info: \"bg-ds-state-info-surface/65 text-ds-state-info-text backdrop-blur-xl border border-ds-state-info-border/60 shadow-lg\",\n },\n};\n\nconst dotColorStyles: Record<ChipColor, string> = {\n default: \"bg-ds-3\",\n primary: \"bg-ds-accent\",\n secondary: \"bg-ds-border-3\",\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n error: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n children,\n variant = \"soft\",\n color = \"default\",\n size = \"xs\",\n startIcon,\n endIcon,\n onRemove,\n onClick,\n disabled = false,\n className = \"\",\n dot = false,\n dotColor,\n maxWidth,\n },\n ref,\n ) => {\n const isClickable = onClick !== undefined;\n const isRemovable = onRemove !== undefined;\n\n const baseStyles = `\n inline-flex items-center font-medium rounded-md transition-all duration-200\n ${sizeStyles[size]}\n ${colorStyles[variant][color]}\n ${\n isClickable && !disabled\n ? \"cursor-pointer hover:scale-105 hover:shadow-lg active:scale-95\"\n : \"\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed grayscale\" : \"\"}\n ${maxWidth ? \"max-w-full\" : \"\"}\n ${className}\n `;\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onRemove) {\n onRemove();\n }\n };\n\n return (\n <span\n ref={ref}\n className={baseStyles}\n onClick={handleClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n style={\n maxWidth\n ? {\n maxWidth:\n typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }\n : undefined\n }\n onKeyDown={(e) => {\n if (\n isClickable &&\n !disabled &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {dot && (\n <span\n className={`rounded-full shrink-0 animate-pulse ${\n dotSizeStyles[size]\n } ${dotColor ? \"\" : dotColorStyles[color]}`}\n style={dotColor ? { backgroundColor: dotColor } : undefined}\n />\n )}\n {startIcon && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>\n {startIcon}\n </span>\n )}\n <TruncatedText\n as=\"span\"\n showTitleOnHover\n className=\"max-w-full font-semibold\"\n >\n {children}\n </TruncatedText>\n {endIcon && !isRemovable && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>{endIcon}</span>\n )}\n {isRemovable && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n shrink-0 rounded-full p-0.5 ml-1 transition-all duration-200\n hover:bg-ds-surface-3/35 hover:scale-110\n focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1\n ${disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n `}\n aria-label=\"Remove\"\n >\n <CloseIcon className={iconSizeStyles[size]} aria-hidden=\"true\" />\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\nexport { Chip };\n","import type { ReactNode } from \"react\";\n\nimport { TruncatedText } from \"../../typography/truncated-text\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SplitChipDirection = \"auto\" | \"ltr\" | \"rtl\";\n\nexport interface SplitChipProps {\n leftLabel: ReactNode;\n rightLabel: ReactNode;\n dir?: SplitChipDirection;\n rightLabelDir?: SplitChipDirection;\n truncateRight?: boolean;\n rightMaxWidth?: string | number;\n showRightTitleOnHover?: boolean;\n className?: string;\n leftClassName?: string;\n rightClassName?: string;\n}\n\nexport function SplitChip({\n leftLabel,\n rightLabel,\n dir = \"auto\",\n rightLabelDir = \"ltr\",\n truncateRight = false,\n rightMaxWidth = \"10rem\",\n showRightTitleOnHover = true,\n className,\n leftClassName,\n rightClassName,\n}: SplitChipProps) {\n const isRtl = dir === \"rtl\";\n\n return (\n <span\n dir={dir}\n className={mergeClassNames(\n \"inline-flex items-center overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-2\",\n className,\n )}\n >\n <span\n className={mergeClassNames(\n \"bg-ds-surface-3 px-2 py-1 text-xs font-medium uppercase tracking-[0.05em] text-ds-2\",\n isRtl ? \"border-l border-ds-border-2\" : \"border-r border-ds-border-2\",\n leftClassName,\n )}\n >\n {leftLabel}\n </span>\n <span\n dir={rightLabelDir}\n className={mergeClassNames(\n \"min-w-0 px-2 py-1 text-xs font-medium text-ds-1\",\n rightClassName,\n )}\n >\n {truncateRight ? (\n <TruncatedText\n maxWidth={rightMaxWidth}\n showTitleOnHover={showRightTitleOnHover}\n >\n {rightLabel}\n </TruncatedText>\n ) : (\n rightLabel\n )}\n </span>\n </span>\n );\n}\n\nexport type StatusDotChipTone = \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface StatusDotChipProps {\n label: string;\n tone?: StatusDotChipTone;\n className?: string;\n}\n\nconst toneClasses: Record<StatusDotChipTone, string> = {\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n danger:\n \"bg-ds-state-error-surface text-ds-state-error-text border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n};\n\nconst dotToneClasses: Record<StatusDotChipTone, string> = {\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n danger: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nexport function StatusDotChip({\n label,\n tone = \"info\",\n className,\n}: StatusDotChipProps) {\n return (\n <span\n className={mergeClassNames(\n \"inline-flex items-center gap-2 rounded-md border px-3 py-1 text-sm font-medium\",\n toneClasses[tone],\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full\",\n dotToneClasses[tone],\n )}\n />\n <span>{label}</span>\n </span>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chip-sfQlzrbo.cjs","names":[],"sources":["../../src/components/data-display/chip/Chip.tsx","../../src/components/data-display/chip/SpecialChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\n\nimport { CloseIcon } from \"../../icons\";\nimport { TruncatedText } from \"../../typography/truncated-text\";\n\nexport type ChipVariant = \"filled\" | \"outlined\" | \"soft\" | \"glass\";\nexport type ChipColor =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\nexport type ChipSize = \"xs\" |\"sm\" | \"md\" | \"lg\";\n\nexport interface ChipProps {\n /** The content of the chip */\n children: React.ReactNode;\n /** The variant style of the chip */\n variant?: ChipVariant;\n /** The color scheme of the chip */\n color?: ChipColor;\n /** The size of the chip */\n size?: ChipSize;\n /** Icon or element to display at the start */\n startIcon?: React.ReactNode;\n /** Icon or element to display at the end */\n endIcon?: React.ReactNode;\n /** Makes the chip removable with an X button */\n onRemove?: () => void;\n /** Makes the chip clickable */\n onClick?: () => void;\n /** Whether the chip is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /** Whether the chip should have a dot indicator */\n dot?: boolean;\n /** Dot color (uses chip color by default) */\n dotColor?: string;\n /** Maximum width for the chip - text will truncate with ellipsis if exceeded */\n maxWidth?: number | string;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n xs: \"px-1.5 py-0.5 text-xs gap-1\",\n sm: \"px-2.5 py-1 text-xs gap-1.5\",\n md: \"px-3 py-1.5 text-sm gap-2\",\n lg: \"px-4 py-2 text-base gap-2.5\",\n};\n\nconst dotSizeStyles: Record<ChipSize, string> = {\n xs: \"w-1 h-1\",\n sm: \"w-1.5 h-1.5\",\n md: \"w-2 h-2\",\n lg: \"w-2.5 h-2.5\",\n};\n\nconst iconSizeStyles: Record<ChipSize, string> = {\n xs: \"w-2 h-2\",\n sm: \"w-3.5 h-3.5\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n};\n\nconst colorStyles: Record<ChipVariant, Record<ChipColor, string>> = {\n filled: {\n default: \"bg-ds-surface-2 text-ds-1 shadow-sm border border-ds-border-2\",\n primary:\n \"bg-ds-accent text-ds-on-accent shadow-md shadow-ds-accent/25 border border-ds-border-accent\",\n secondary:\n \"bg-ds-accent-subtle text-ds-1 shadow-sm border border-ds-border-accent\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text shadow-sm border border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text shadow-sm border border-ds-state-warning-border\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text shadow-sm border border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text shadow-sm border border-ds-state-info-border\",\n },\n outlined: {\n default:\n \"border-2 border-ds-border-3 text-ds-2 bg-transparent hover:bg-ds-surface-2\",\n primary:\n \"border-2 border-ds-border-accent bg-transparent text-ds-accent hover:bg-ds-accent-subtle\",\n secondary:\n \"border-2 border-ds-border-3 text-ds-1 bg-transparent hover:bg-ds-surface-2\",\n success:\n \"border-2 border-ds-state-success-border text-ds-state-success-text bg-transparent hover:bg-ds-state-success-surface\",\n warning:\n \"border-2 border-ds-state-warning-border text-ds-state-warning-text bg-transparent hover:bg-ds-state-warning-surface\",\n error:\n \"border-2 border-ds-state-error-border text-ds-state-error-text bg-transparent hover:bg-ds-state-error-surface\",\n info: \"border-2 border-ds-state-info-border text-ds-state-info-text bg-transparent hover:bg-ds-state-info-surface\",\n },\n soft: {\n default:\n \"bg-ds-surface-2 text-ds-1 backdrop-blur-sm border border-ds-border-2\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent-subtle text-ds-1 backdrop-blur-sm\",\n secondary:\n \"bg-ds-surface-3/30 text-ds-1 backdrop-blur-sm border border-ds-border-3/50\",\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text backdrop-blur-sm border border-ds-state-success-border/70\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text backdrop-blur-sm border border-ds-state-warning-border/70\",\n error:\n \"bg-ds-state-error-surface text-ds-state-error-text backdrop-blur-sm border border-ds-state-error-border/70\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text backdrop-blur-sm border border-ds-state-info-border/70\",\n },\n glass: {\n default:\n \"bg-ds-surface-1/70 text-ds-1 backdrop-blur-xl border border-ds-border-2/40 shadow-lg\",\n primary:\n \"border border-ds-border-accent/20 bg-ds-accent/15 text-ds-1 backdrop-blur-xl shadow-lg shadow-ds-accent/10\",\n secondary:\n \"bg-ds-surface-3/45 text-ds-1 backdrop-blur-xl border border-ds-border-3/50 shadow-lg\",\n success:\n \"bg-ds-state-success-surface/65 text-ds-state-success-text backdrop-blur-xl border border-ds-state-success-border/60 shadow-lg\",\n warning:\n \"bg-ds-state-warning-surface/65 text-ds-state-warning-text backdrop-blur-xl border border-ds-state-warning-border/60 shadow-lg\",\n error:\n \"bg-ds-state-error-surface/65 text-ds-state-error-text backdrop-blur-xl border border-ds-state-error-border/60 shadow-lg\",\n info: \"bg-ds-state-info-surface/65 text-ds-state-info-text backdrop-blur-xl border border-ds-state-info-border/60 shadow-lg\",\n },\n};\n\nconst dotColorStyles: Record<ChipColor, string> = {\n default: \"bg-ds-3\",\n primary: \"bg-ds-accent\",\n secondary: \"bg-ds-border-3\",\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n error: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n children,\n variant = \"soft\",\n color = \"default\",\n size = \"xs\",\n startIcon,\n endIcon,\n onRemove,\n onClick,\n disabled = false,\n className = \"\",\n dot = false,\n dotColor,\n maxWidth,\n },\n ref,\n ) => {\n const isClickable = onClick !== undefined;\n const isRemovable = onRemove !== undefined;\n\n const baseStyles = `\n inline-flex items-center font-medium rounded-md transition-all duration-200\n ${sizeStyles[size]}\n ${colorStyles[variant][color]}\n ${\n isClickable && !disabled\n ? \"cursor-pointer hover:scale-105 hover:shadow-lg active:scale-95\"\n : \"\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed grayscale\" : \"\"}\n ${maxWidth ? \"max-w-full\" : \"\"}\n ${className}\n `;\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onRemove) {\n onRemove();\n }\n };\n\n return (\n <span\n ref={ref}\n className={baseStyles}\n onClick={handleClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n style={\n maxWidth\n ? {\n maxWidth:\n typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }\n : undefined\n }\n onKeyDown={(e) => {\n if (\n isClickable &&\n !disabled &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {dot && (\n <span\n className={`rounded-full shrink-0 animate-pulse ${\n dotSizeStyles[size]\n } ${dotColor ? \"\" : dotColorStyles[color]}`}\n style={dotColor ? { backgroundColor: dotColor } : undefined}\n />\n )}\n {startIcon && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>\n {startIcon}\n </span>\n )}\n <TruncatedText\n as=\"span\"\n showTitleOnHover\n className=\"max-w-full font-semibold\"\n >\n {children}\n </TruncatedText>\n {endIcon && !isRemovable && (\n <span className={`inline-flex shrink-0 items-center justify-center ${iconSizeStyles[size]}`}>{endIcon}</span>\n )}\n {isRemovable && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n shrink-0 rounded-full p-0.5 ml-1 transition-all duration-200\n hover:bg-ds-surface-3/35 hover:scale-110\n focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1\n ${disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n `}\n aria-label=\"Remove\"\n >\n <CloseIcon className={iconSizeStyles[size]} aria-hidden=\"true\" />\n </button>\n )}\n </span>\n );\n },\n);\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\nexport { Chip };\n","import type { ReactNode } from \"react\";\n\nimport { TruncatedText } from \"../../typography/truncated-text\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SplitChipDirection = \"auto\" | \"ltr\" | \"rtl\";\n\nexport interface SplitChipProps {\n leftLabel: ReactNode;\n rightLabel: ReactNode;\n dir?: SplitChipDirection;\n rightLabelDir?: SplitChipDirection;\n truncateRight?: boolean;\n rightMaxWidth?: string | number;\n showRightTitleOnHover?: boolean;\n className?: string;\n leftClassName?: string;\n rightClassName?: string;\n}\n\nexport function SplitChip({\n leftLabel,\n rightLabel,\n dir = \"auto\",\n rightLabelDir = \"ltr\",\n truncateRight = false,\n rightMaxWidth = \"10rem\",\n showRightTitleOnHover = true,\n className,\n leftClassName,\n rightClassName,\n}: SplitChipProps) {\n const isRtl = dir === \"rtl\";\n\n return (\n <span\n dir={dir}\n className={mergeClassNames(\n \"inline-flex items-center overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-2\",\n className,\n )}\n >\n <span\n className={mergeClassNames(\n \"bg-ds-surface-3 px-2 py-1 text-xs font-medium uppercase tracking-[0.05em] text-ds-2\",\n isRtl ? \"border-l border-ds-border-2\" : \"border-r border-ds-border-2\",\n leftClassName,\n )}\n >\n {leftLabel}\n </span>\n <span\n dir={rightLabelDir}\n className={mergeClassNames(\n \"min-w-0 px-2 py-1 text-xs font-medium text-ds-1\",\n rightClassName,\n )}\n >\n {truncateRight ? (\n <TruncatedText\n maxWidth={rightMaxWidth}\n showTitleOnHover={showRightTitleOnHover}\n >\n {rightLabel}\n </TruncatedText>\n ) : (\n rightLabel\n )}\n </span>\n </span>\n );\n}\n\nexport type StatusDotChipTone = \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface StatusDotChipProps {\n label: string;\n tone?: StatusDotChipTone;\n className?: string;\n}\n\nconst toneClasses: Record<StatusDotChipTone, string> = {\n success:\n \"bg-ds-state-success-surface text-ds-state-success-text border-ds-state-success-border\",\n warning:\n \"bg-ds-state-warning-surface text-ds-state-warning-text border-ds-state-warning-border\",\n danger:\n \"bg-ds-state-error-surface text-ds-state-error-text border-ds-state-error-border\",\n info: \"bg-ds-state-info-surface text-ds-state-info-text border-ds-state-info-border\",\n};\n\nconst dotToneClasses: Record<StatusDotChipTone, string> = {\n success: \"bg-ds-state-success\",\n warning: \"bg-ds-state-warning\",\n danger: \"bg-ds-state-danger\",\n info: \"bg-ds-state-info\",\n};\n\nexport function StatusDotChip({\n label,\n tone = \"info\",\n className,\n}: StatusDotChipProps) {\n return (\n <span\n className={mergeClassNames(\n \"inline-flex items-center gap-2 rounded-md border px-3 py-1 text-sm font-medium\",\n toneClasses[tone],\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={mergeClassNames(\n \"h-2.5 w-2.5 rounded-full\",\n dotToneClasses[tone],\n )}\n />\n <span>{label}</span>\n </span>\n );\n}\n"],"mappings":";;;;;;;AA6CA,IAAM,aAAuC;CAC3C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAM,gBAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAM,iBAA2C;CAC/C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,IAAM,cAA8D;CAClE,QAAQ;EACN,SAAS;EACT,SACE;EACF,WACE;EACF,SACE;EACF,SACE;EACF,OACE;EACF,MAAM;EACP;CACD,UAAU;EACR,SACE;EACF,SACE;EACF,WACE;EACF,SACE;EACF,SACE;EACF,OACE;EACF,MAAM;EACP;CACD,MAAM;EACJ,SACE;EACF,SACE;EACF,WACE;EACF,SACE;EACF,SACE;EACF,OACE;EACF,MAAM;EACP;CACD,OAAO;EACL,SACE;EACF,SACE;EACF,WACE;EACF,SACE;EACF,SACE;EACF,OACE;EACF,MAAM;EACP;CACF;AAED,IAAM,iBAA4C;CAChD,SAAS;CACT,SAAS;CACT,WAAW;CACX,SAAS;CACT,SAAS;CACT,OAAO;CACP,MAAM;CACP;AAED,IAAM,QAAA,GAAA,MAAA,aAEF,EACE,UACA,UAAU,QACV,QAAQ,WACR,OAAO,MACP,WACA,SACA,UACA,SACA,WAAW,OACX,YAAY,IACZ,MAAM,OACN,UACA,YAEF,QACG;CACH,MAAM,cAAc,YAAY,KAAA;CAChC,MAAM,cAAc,aAAa,KAAA;CAEjC,MAAM,aAAa;;QAEf,WAAW,MAAM;QACjB,YAAY,SAAS,OAAO;QAE5B,eAAe,CAAC,WACZ,mEACA,GACL;QACC,WAAW,4CAA4C,GAAG;QAC1D,WAAW,eAAe,GAAG;QAC7B,UAAU;;CAGd,MAAM,oBAAoB;AACxB,MAAI,CAAC,YAAY,QACf,UAAS;;CAIb,MAAM,gBAAgB,MAAwB;AAC5C,IAAE,iBAAiB;AACnB,MAAI,CAAC,YAAY,SACf,WAAU;;AAId,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;EACO;EACL,WAAW;EACX,SAAS;EACT,MAAM,cAAc,WAAW,KAAA;EAC/B,UAAU,eAAe,CAAC,WAAW,IAAI,KAAA;EACzC,OACE,WACI,EACE,UACE,OAAO,aAAa,WAAW,GAAG,SAAS,MAAM,UACpD,GACD,KAAA;EAEN,YAAY,MAAM;AAChB,OACE,eACA,CAAC,aACA,EAAE,QAAQ,WAAW,EAAE,QAAQ,MAChC;AACA,MAAE,gBAAgB;AAClB,eAAW;;;YArBjB;GAyBG,OACC,iBAAA,GAAA,kBAAA,KAAC,QAAD;IACE,WAAW,uCACT,cAAc,MACf,GAAG,WAAW,KAAK,eAAe;IACnC,OAAO,WAAW,EAAE,iBAAiB,UAAU,GAAG,KAAA;IAClD,CAAA;GAEH,aACC,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAW,oDAAoD,eAAe;cACjF;IACI,CAAA;GAET,iBAAA,GAAA,kBAAA,KAAC,uBAAA,eAAD;IACE,IAAG;IACH,kBAAA;IACA,WAAU;IAET;IACa,CAAA;GACf,WAAW,CAAC,eACX,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAW,oDAAoD,eAAe;cAAU;IAAe,CAAA;GAE9G,eACC,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACE,MAAK;IACL,SAAS;IACC;IACV,WAAW;;;;gBAIP,WAAW,uBAAuB,iBAAiB;;IAEvD,cAAW;cAEX,iBAAA,GAAA,kBAAA,KAAC,cAAA,WAAD;KAAW,WAAW,eAAe;KAAO,eAAY;KAAS,CAAA;IAC1D,CAAA;GAEN;;EAGZ;AAED,KAAK,cAAc;;;AC7OnB,SAAgB,UAAU,EACxB,WACA,YACA,MAAM,QACN,gBAAgB,OAChB,gBAAgB,OAChB,gBAAgB,SAChB,wBAAwB,MACxB,WACA,eACA,kBACiB;CACjB,MAAM,QAAQ,QAAQ;AAEtB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;EACO;EACL,WAAW,cAAA,gBACT,iGACA,UACD;YALH,CAOE,iBAAA,GAAA,kBAAA,KAAC,QAAD;GACE,WAAW,cAAA,gBACT,uFACA,QAAQ,gCAAgC,+BACxC,cACD;aAEA;GACI,CAAA,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAD;GACE,KAAK;GACL,WAAW,cAAA,gBACT,mDACA,eACD;aAEA,gBACC,iBAAA,GAAA,kBAAA,KAAC,uBAAA,eAAD;IACE,UAAU;IACV,kBAAkB;cAEjB;IACa,CAAA,GAEhB;GAEG,CAAA,CACF;;;AAYX,IAAM,cAAiD;CACrD,SACE;CACF,SACE;CACF,QACE;CACF,MAAM;CACP;AAED,IAAM,iBAAoD;CACxD,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACP;AAED,SAAgB,cAAc,EAC5B,OACA,OAAO,QACP,aACqB;AACrB,QACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;EACE,WAAW,cAAA,gBACT,kFACA,YAAY,OACZ,UACD;YALH,CAOE,iBAAA,GAAA,kBAAA,KAAC,QAAD;GACE,eAAY;GACZ,WAAW,cAAA,gBACT,4BACA,eAAe,MAChB;GACD,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAA,UAAO,OAAa,CAAA,CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chroma-grid-opB2DBtS.mjs","names":[],"sources":["../../src/components/effects/chroma-grid/ChromaGrid.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { ChromaGridProps, ChromaGridItem } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n};\n\nconst defaultColors = [\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-info) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-success) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-warning) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-danger) 0%, var(--ds-color-warning) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent-hover) 0%, var(--ds-color-success) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-success) 100%)\",\n];\n\nconst getAnimation = (\n animation: string,\n index: number,\n staggerDelay: number,\n) => {\n const delay = (index * staggerDelay) / 1000;\n\n switch (animation) {\n case \"wave\":\n return {\n initial: { opacity: 0, y: 30, rotateX: -15 },\n animate: { opacity: 1, y: 0, rotateX: 0 },\n transition: { delay, duration: 0.6, ease: [0.23, 1, 0.32, 1] as const },\n };\n case \"pulse\":\n return {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 200,\n },\n };\n case \"fadeIn\":\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { delay, duration: 0.4 },\n };\n case \"scale\":\n return {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 300,\n damping: 20,\n },\n };\n default:\n return {};\n }\n};\n\nconst getHoverEffect = (effect: string) => {\n switch (effect) {\n case \"lift\":\n return { y: -8, transition: { duration: 0.3 } };\n case \"glow\":\n return {\n boxShadow:\n \"0 0 30px color-mix(in srgb, var(--ds-color-accent) 45%, transparent)\",\n transition: { duration: 0.3 },\n };\n case \"scale\":\n return { scale: 1.05, transition: { duration: 0.3 } };\n case \"tilt\":\n return { rotateY: 5, rotateX: 5, transition: { duration: 0.3 } };\n default:\n return {};\n }\n};\n\ninterface GridItemProps {\n item: ChromaGridItem;\n index: number;\n animation: string;\n staggerDelay: number;\n hoverEffect: string;\n variant: string;\n borderRadius: string;\n minHeight: number;\n spotlight: boolean;\n}\n\nconst GridItem = ({\n item,\n index,\n animation,\n staggerDelay,\n hoverEffect,\n variant,\n borderRadius,\n minHeight,\n spotlight,\n}: GridItemProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const color = item.color || defaultColors[index % defaultColors.length];\n const animationProps = getAnimation(animation, index, staggerDelay);\n const hoverProps = getHoverEffect(hoverEffect);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!itemRef.current || !spotlight) return;\n const rect = itemRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const gridSpan =\n item.size && item.size > 1\n ? { gridColumn: `span ${item.size}`, gridRow: `span ${item.size}` }\n : {};\n\n const variantStyles = {\n glass: {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n },\n solid: {},\n gradient: { background: color },\n };\n\n return (\n <motion.div\n ref={itemRef}\n className={mergeClassNames(\n \"relative overflow-hidden cursor-pointer transition-shadow\",\n borderRadiusMap[borderRadius as keyof typeof borderRadiusMap],\n variant === \"glass\" && \"border border-ds-border-2/50\",\n item.className,\n )}\n style={{\n minHeight:\n item.size && item.size > 1 ? minHeight * item.size : minHeight,\n ...gridSpan,\n ...variantStyles[variant as keyof typeof variantStyles],\n ...(variant !== \"glass\" && { background: color }),\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={item.onClick}\n {...animationProps}\n whileHover={hoverProps}\n >\n {/* Spotlight effect */}\n {spotlight && isHovered && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={{\n background: `radial-gradient(300px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.2), transparent 70%)`,\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Glass overlay for gradient variant */}\n {variant === \"gradient\" && (\n <div className=\"absolute inset-0 bg-ds-canvas/15\" />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 h-full flex flex-col justify-center items-center p-6 text-center\">\n {item.icon && (\n <div className=\"text-4xl text-ds-on-accent mb-3 drop-shadow-lg\">\n {item.icon}\n </div>\n )}\n {item.title && (\n <h3 className=\"text-lg font-bold text-ds-on-accent mb-1 drop-shadow-md\">\n {item.title}\n </h3>\n )}\n {item.description && (\n <p className=\"text-sm text-ds-on-accent/80 drop-shadow-sm\">\n {item.description}\n </p>\n )}\n {item.content}\n </div>\n </motion.div>\n );\n};\n\nexport const ChromaGrid = ({\n items,\n className,\n columns = 3,\n gap = 16,\n minHeight = 200,\n animation = \"wave\",\n staggerDelay = 100,\n hoverEffect = \"lift\",\n variant = \"gradient\",\n borderRadius = \"xl\",\n spotlight = true,\n style,\n}: ChromaGridProps) => {\n return (\n <div\n className={mergeClassNames(\"grid w-full\", className)}\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <GridItem\n key={item.id}\n item={item}\n index={index}\n animation={animation}\n staggerDelay={staggerDelay}\n hoverEffect={hoverEffect}\n variant={variant}\n borderRadius={borderRadius}\n minHeight={minHeight}\n spotlight={spotlight}\n />\n ))}\n </div>\n );\n};\n\nChromaGrid.displayName = \"ChromaGrid\";\n\nexport default ChromaGrid;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chroma-grid-BHS9qAn_.mjs","names":[],"sources":["../../src/components/effects/chroma-grid/ChromaGrid.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { ChromaGridProps, ChromaGridItem } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n};\n\nconst defaultColors = [\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-info) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-success) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-warning) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-danger) 0%, var(--ds-color-warning) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent-hover) 0%, var(--ds-color-success) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-success) 100%)\",\n];\n\nconst getAnimation = (\n animation: string,\n index: number,\n staggerDelay: number,\n) => {\n const delay = (index * staggerDelay) / 1000;\n\n switch (animation) {\n case \"wave\":\n return {\n initial: { opacity: 0, y: 30, rotateX: -15 },\n animate: { opacity: 1, y: 0, rotateX: 0 },\n transition: { delay, duration: 0.6, ease: [0.23, 1, 0.32, 1] as const },\n };\n case \"pulse\":\n return {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 200,\n },\n };\n case \"fadeIn\":\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { delay, duration: 0.4 },\n };\n case \"scale\":\n return {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 300,\n damping: 20,\n },\n };\n default:\n return {};\n }\n};\n\nconst getHoverEffect = (effect: string) => {\n switch (effect) {\n case \"lift\":\n return { y: -8, transition: { duration: 0.3 } };\n case \"glow\":\n return {\n boxShadow:\n \"0 0 30px color-mix(in srgb, var(--ds-color-accent) 45%, transparent)\",\n transition: { duration: 0.3 },\n };\n case \"scale\":\n return { scale: 1.05, transition: { duration: 0.3 } };\n case \"tilt\":\n return { rotateY: 5, rotateX: 5, transition: { duration: 0.3 } };\n default:\n return {};\n }\n};\n\ninterface GridItemProps {\n item: ChromaGridItem;\n index: number;\n animation: string;\n staggerDelay: number;\n hoverEffect: string;\n variant: string;\n borderRadius: string;\n minHeight: number;\n spotlight: boolean;\n}\n\nconst GridItem = ({\n item,\n index,\n animation,\n staggerDelay,\n hoverEffect,\n variant,\n borderRadius,\n minHeight,\n spotlight,\n}: GridItemProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const color = item.color || defaultColors[index % defaultColors.length];\n const animationProps = getAnimation(animation, index, staggerDelay);\n const hoverProps = getHoverEffect(hoverEffect);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!itemRef.current || !spotlight) return;\n const rect = itemRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const gridSpan =\n item.size && item.size > 1\n ? { gridColumn: `span ${item.size}`, gridRow: `span ${item.size}` }\n : {};\n\n const variantStyles = {\n glass: {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n },\n solid: {},\n gradient: { background: color },\n };\n\n return (\n <motion.div\n ref={itemRef}\n className={mergeClassNames(\n \"relative overflow-hidden cursor-pointer transition-shadow\",\n borderRadiusMap[borderRadius as keyof typeof borderRadiusMap],\n variant === \"glass\" && \"border border-ds-border-2/50\",\n item.className,\n )}\n style={{\n minHeight:\n item.size && item.size > 1 ? minHeight * item.size : minHeight,\n ...gridSpan,\n ...variantStyles[variant as keyof typeof variantStyles],\n ...(variant !== \"glass\" && { background: color }),\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={item.onClick}\n {...animationProps}\n whileHover={hoverProps}\n >\n {/* Spotlight effect */}\n {spotlight && isHovered && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={{\n background: `radial-gradient(300px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.2), transparent 70%)`,\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Glass overlay for gradient variant */}\n {variant === \"gradient\" && (\n <div className=\"absolute inset-0 bg-ds-canvas/15\" />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 h-full flex flex-col justify-center items-center p-6 text-center\">\n {item.icon && (\n <div className=\"text-4xl text-ds-on-accent mb-3 drop-shadow-lg\">\n {item.icon}\n </div>\n )}\n {item.title && (\n <h3 className=\"text-lg font-bold text-ds-on-accent mb-1 drop-shadow-md\">\n {item.title}\n </h3>\n )}\n {item.description && (\n <p className=\"text-sm text-ds-on-accent/80 drop-shadow-sm\">\n {item.description}\n </p>\n )}\n {item.content}\n </div>\n </motion.div>\n );\n};\n\nexport const ChromaGrid = ({\n items,\n className,\n columns = 3,\n gap = 16,\n minHeight = 200,\n animation = \"wave\",\n staggerDelay = 100,\n hoverEffect = \"lift\",\n variant = \"gradient\",\n borderRadius = \"xl\",\n spotlight = true,\n style,\n}: ChromaGridProps) => {\n return (\n <div\n className={mergeClassNames(\"grid w-full\", className)}\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <GridItem\n key={item.id}\n item={item}\n index={index}\n animation={animation}\n staggerDelay={staggerDelay}\n hoverEffect={hoverEffect}\n variant={variant}\n borderRadius={borderRadius}\n minHeight={minHeight}\n spotlight={spotlight}\n />\n ))}\n </div>\n );\n};\n\nChromaGrid.displayName = \"ChromaGrid\";\n\nexport default ChromaGrid;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chroma-grid-DcZ9f4Ui.cjs","names":[],"sources":["../../src/components/effects/chroma-grid/ChromaGrid.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { ChromaGridProps, ChromaGridItem } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n};\n\nconst defaultColors = [\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-info) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-success) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-warning) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-danger) 0%, var(--ds-color-warning) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent-hover) 0%, var(--ds-color-success) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-success) 100%)\",\n];\n\nconst getAnimation = (\n animation: string,\n index: number,\n staggerDelay: number,\n) => {\n const delay = (index * staggerDelay) / 1000;\n\n switch (animation) {\n case \"wave\":\n return {\n initial: { opacity: 0, y: 30, rotateX: -15 },\n animate: { opacity: 1, y: 0, rotateX: 0 },\n transition: { delay, duration: 0.6, ease: [0.23, 1, 0.32, 1] as const },\n };\n case \"pulse\":\n return {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 200,\n },\n };\n case \"fadeIn\":\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { delay, duration: 0.4 },\n };\n case \"scale\":\n return {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 300,\n damping: 20,\n },\n };\n default:\n return {};\n }\n};\n\nconst getHoverEffect = (effect: string) => {\n switch (effect) {\n case \"lift\":\n return { y: -8, transition: { duration: 0.3 } };\n case \"glow\":\n return {\n boxShadow:\n \"0 0 30px color-mix(in srgb, var(--ds-color-accent) 45%, transparent)\",\n transition: { duration: 0.3 },\n };\n case \"scale\":\n return { scale: 1.05, transition: { duration: 0.3 } };\n case \"tilt\":\n return { rotateY: 5, rotateX: 5, transition: { duration: 0.3 } };\n default:\n return {};\n }\n};\n\ninterface GridItemProps {\n item: ChromaGridItem;\n index: number;\n animation: string;\n staggerDelay: number;\n hoverEffect: string;\n variant: string;\n borderRadius: string;\n minHeight: number;\n spotlight: boolean;\n}\n\nconst GridItem = ({\n item,\n index,\n animation,\n staggerDelay,\n hoverEffect,\n variant,\n borderRadius,\n minHeight,\n spotlight,\n}: GridItemProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const color = item.color || defaultColors[index % defaultColors.length];\n const animationProps = getAnimation(animation, index, staggerDelay);\n const hoverProps = getHoverEffect(hoverEffect);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!itemRef.current || !spotlight) return;\n const rect = itemRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const gridSpan =\n item.size && item.size > 1\n ? { gridColumn: `span ${item.size}`, gridRow: `span ${item.size}` }\n : {};\n\n const variantStyles = {\n glass: {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n },\n solid: {},\n gradient: { background: color },\n };\n\n return (\n <motion.div\n ref={itemRef}\n className={mergeClassNames(\n \"relative overflow-hidden cursor-pointer transition-shadow\",\n borderRadiusMap[borderRadius as keyof typeof borderRadiusMap],\n variant === \"glass\" && \"border border-ds-border-2/50\",\n item.className,\n )}\n style={{\n minHeight:\n item.size && item.size > 1 ? minHeight * item.size : minHeight,\n ...gridSpan,\n ...variantStyles[variant as keyof typeof variantStyles],\n ...(variant !== \"glass\" && { background: color }),\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={item.onClick}\n {...animationProps}\n whileHover={hoverProps}\n >\n {/* Spotlight effect */}\n {spotlight && isHovered && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={{\n background: `radial-gradient(300px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.2), transparent 70%)`,\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Glass overlay for gradient variant */}\n {variant === \"gradient\" && (\n <div className=\"absolute inset-0 bg-ds-canvas/15\" />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 h-full flex flex-col justify-center items-center p-6 text-center\">\n {item.icon && (\n <div className=\"text-4xl text-ds-on-accent mb-3 drop-shadow-lg\">\n {item.icon}\n </div>\n )}\n {item.title && (\n <h3 className=\"text-lg font-bold text-ds-on-accent mb-1 drop-shadow-md\">\n {item.title}\n </h3>\n )}\n {item.description && (\n <p className=\"text-sm text-ds-on-accent/80 drop-shadow-sm\">\n {item.description}\n </p>\n )}\n {item.content}\n </div>\n </motion.div>\n );\n};\n\nexport const ChromaGrid = ({\n items,\n className,\n columns = 3,\n gap = 16,\n minHeight = 200,\n animation = \"wave\",\n staggerDelay = 100,\n hoverEffect = \"lift\",\n variant = \"gradient\",\n borderRadius = \"xl\",\n spotlight = true,\n style,\n}: ChromaGridProps) => {\n return (\n <div\n className={mergeClassNames(\"grid w-full\", className)}\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <GridItem\n key={item.id}\n item={item}\n index={index}\n animation={animation}\n staggerDelay={staggerDelay}\n hoverEffect={hoverEffect}\n variant={variant}\n borderRadius={borderRadius}\n minHeight={minHeight}\n spotlight={spotlight}\n />\n ))}\n </div>\n );\n};\n\nChromaGrid.displayName = \"ChromaGrid\";\n\nexport default ChromaGrid;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chroma-grid-Bp55pKEm.cjs","names":[],"sources":["../../src/components/effects/chroma-grid/ChromaGrid.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { ChromaGridProps, ChromaGridItem } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n};\n\nconst defaultColors = [\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent) 0%, var(--ds-color-info) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-accent-hover) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-success) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-warning) 0%, var(--ds-color-accent) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-danger) 0%, var(--ds-color-warning) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-accent-hover) 0%, var(--ds-color-success) 100%)\",\n \"linear-gradient(135deg, var(--ds-color-info) 0%, var(--ds-color-success) 100%)\",\n];\n\nconst getAnimation = (\n animation: string,\n index: number,\n staggerDelay: number,\n) => {\n const delay = (index * staggerDelay) / 1000;\n\n switch (animation) {\n case \"wave\":\n return {\n initial: { opacity: 0, y: 30, rotateX: -15 },\n animate: { opacity: 1, y: 0, rotateX: 0 },\n transition: { delay, duration: 0.6, ease: [0.23, 1, 0.32, 1] as const },\n };\n case \"pulse\":\n return {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 200,\n },\n };\n case \"fadeIn\":\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { delay, duration: 0.4 },\n };\n case \"scale\":\n return {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: {\n delay,\n duration: 0.5,\n type: \"spring\" as const,\n stiffness: 300,\n damping: 20,\n },\n };\n default:\n return {};\n }\n};\n\nconst getHoverEffect = (effect: string) => {\n switch (effect) {\n case \"lift\":\n return { y: -8, transition: { duration: 0.3 } };\n case \"glow\":\n return {\n boxShadow:\n \"0 0 30px color-mix(in srgb, var(--ds-color-accent) 45%, transparent)\",\n transition: { duration: 0.3 },\n };\n case \"scale\":\n return { scale: 1.05, transition: { duration: 0.3 } };\n case \"tilt\":\n return { rotateY: 5, rotateX: 5, transition: { duration: 0.3 } };\n default:\n return {};\n }\n};\n\ninterface GridItemProps {\n item: ChromaGridItem;\n index: number;\n animation: string;\n staggerDelay: number;\n hoverEffect: string;\n variant: string;\n borderRadius: string;\n minHeight: number;\n spotlight: boolean;\n}\n\nconst GridItem = ({\n item,\n index,\n animation,\n staggerDelay,\n hoverEffect,\n variant,\n borderRadius,\n minHeight,\n spotlight,\n}: GridItemProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const color = item.color || defaultColors[index % defaultColors.length];\n const animationProps = getAnimation(animation, index, staggerDelay);\n const hoverProps = getHoverEffect(hoverEffect);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!itemRef.current || !spotlight) return;\n const rect = itemRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const gridSpan =\n item.size && item.size > 1\n ? { gridColumn: `span ${item.size}`, gridRow: `span ${item.size}` }\n : {};\n\n const variantStyles = {\n glass: {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n },\n solid: {},\n gradient: { background: color },\n };\n\n return (\n <motion.div\n ref={itemRef}\n className={mergeClassNames(\n \"relative overflow-hidden cursor-pointer transition-shadow\",\n borderRadiusMap[borderRadius as keyof typeof borderRadiusMap],\n variant === \"glass\" && \"border border-ds-border-2/50\",\n item.className,\n )}\n style={{\n minHeight:\n item.size && item.size > 1 ? minHeight * item.size : minHeight,\n ...gridSpan,\n ...variantStyles[variant as keyof typeof variantStyles],\n ...(variant !== \"glass\" && { background: color }),\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={item.onClick}\n {...animationProps}\n whileHover={hoverProps}\n >\n {/* Spotlight effect */}\n {spotlight && isHovered && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={{\n background: `radial-gradient(300px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.2), transparent 70%)`,\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Glass overlay for gradient variant */}\n {variant === \"gradient\" && (\n <div className=\"absolute inset-0 bg-ds-canvas/15\" />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 h-full flex flex-col justify-center items-center p-6 text-center\">\n {item.icon && (\n <div className=\"text-4xl text-ds-on-accent mb-3 drop-shadow-lg\">\n {item.icon}\n </div>\n )}\n {item.title && (\n <h3 className=\"text-lg font-bold text-ds-on-accent mb-1 drop-shadow-md\">\n {item.title}\n </h3>\n )}\n {item.description && (\n <p className=\"text-sm text-ds-on-accent/80 drop-shadow-sm\">\n {item.description}\n </p>\n )}\n {item.content}\n </div>\n </motion.div>\n );\n};\n\nexport const ChromaGrid = ({\n items,\n className,\n columns = 3,\n gap = 16,\n minHeight = 200,\n animation = \"wave\",\n staggerDelay = 100,\n hoverEffect = \"lift\",\n variant = \"gradient\",\n borderRadius = \"xl\",\n spotlight = true,\n style,\n}: ChromaGridProps) => {\n return (\n <div\n className={mergeClassNames(\"grid w-full\", className)}\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <GridItem\n key={item.id}\n item={item}\n index={index}\n animation={animation}\n staggerDelay={staggerDelay}\n hoverEffect={hoverEffect}\n variant={variant}\n borderRadius={borderRadius}\n minHeight={minHeight}\n spotlight={spotlight}\n />\n ))}\n </div>\n );\n};\n\nChromaGrid.displayName = \"ChromaGrid\";\n\nexport default ChromaGrid;\n"],"mappings":"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"}
|
|
@@ -326,4 +326,4 @@ function ColorPalette({ groups, className }) {
|
|
|
326
326
|
//#endregion
|
|
327
327
|
export { brandGroup as a, surfaceGroup as c, borderGroup as i, textGroup as l, accentGroup as n, defaultGroups as o, accentScaleGroup as r, statusGroup as s, ColorPalette as t };
|
|
328
328
|
|
|
329
|
-
//# sourceMappingURL=color-palette-
|
|
329
|
+
//# sourceMappingURL=color-palette-D9Qlw2Cx.mjs.map
|