@senitix/ui 0.4.1 → 0.4.3
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-BcwB0wwz.cjs +2 -0
- package/dist/accordion-BcwB0wwz.cjs.map +1 -0
- package/dist/accordion-BwnJKrKm.js +360 -0
- package/dist/accordion-BwnJKrKm.js.map +1 -0
- package/dist/appointment-scheduler-BoQQO51F.cjs +2 -0
- package/dist/appointment-scheduler-BoQQO51F.cjs.map +1 -0
- package/dist/appointment-scheduler-DHAs-mF_.js +192 -0
- package/dist/appointment-scheduler-DHAs-mF_.js.map +1 -0
- package/dist/arrow-right-CM3nmiZe.js +15 -0
- package/dist/arrow-right-CM3nmiZe.js.map +1 -0
- package/dist/arrow-right-vDxRZOfm.cjs +7 -0
- package/dist/arrow-right-vDxRZOfm.cjs.map +1 -0
- package/dist/avatar-BlEcWE7T.js +191 -0
- package/dist/avatar-BlEcWE7T.js.map +1 -0
- package/dist/avatar-Cl38Ye4J.cjs +2 -0
- package/dist/avatar-Cl38Ye4J.cjs.map +1 -0
- package/dist/badge-BZcdBG5J.cjs +23 -0
- package/dist/badge-BZcdBG5J.cjs.map +1 -0
- package/dist/badge-D0C_rP2l.js +157 -0
- package/dist/badge-D0C_rP2l.js.map +1 -0
- package/dist/button-BP_ug5gP.js +126 -0
- package/dist/button-BP_ug5gP.js.map +1 -0
- package/dist/button-CPuCii0R.cjs +2 -0
- package/dist/button-CPuCii0R.cjs.map +1 -0
- package/dist/{calendar-DgnhzEfp.js → calendar-86qoSnO7.js} +368 -433
- package/dist/calendar-86qoSnO7.js.map +1 -0
- package/dist/{calendar-D3RWU0_G.cjs → calendar-BH-AuyiB.cjs} +2 -2
- package/dist/{calendar-D3RWU0_G.cjs.map → calendar-BH-AuyiB.cjs.map} +1 -1
- package/dist/calendar-CSJ060ym.cjs +2 -0
- package/dist/calendar-CSJ060ym.cjs.map +1 -0
- package/dist/{calendar-CUxm1K7J.js → calendar-JUSWONQ0.js} +2 -2
- package/dist/{calendar-CUxm1K7J.js.map → calendar-JUSWONQ0.js.map} +1 -1
- package/dist/{card-DISL3sPJ.cjs → card-CToWUN1K.cjs} +2 -2
- package/dist/{card-DISL3sPJ.cjs.map → card-CToWUN1K.cjs.map} +1 -1
- package/dist/{card-fId5vof_.js → card-yxbWFvZ1.js} +2 -2
- package/dist/{card-fId5vof_.js.map → card-yxbWFvZ1.js.map} +1 -1
- package/dist/checkbox-BmugT50K.cjs +2 -0
- package/dist/checkbox-BmugT50K.cjs.map +1 -0
- package/dist/{checkbox-BY2zxQVv.js → checkbox-CTa9e4SG.js} +95 -97
- package/dist/checkbox-CTa9e4SG.js.map +1 -0
- package/dist/chevron-left-5h87iFo_.cjs +7 -0
- package/dist/chevron-left-5h87iFo_.cjs.map +1 -0
- package/dist/chevron-left-DD5mQuvf.js +14 -0
- package/dist/chevron-left-DD5mQuvf.js.map +1 -0
- package/dist/{chevron-right-Bxf8i4gi.cjs → chevron-right-D-TdAZ7l.cjs} +2 -2
- package/dist/{chevron-right-Bxf8i4gi.cjs.map → chevron-right-D-TdAZ7l.cjs.map} +1 -1
- package/dist/{chevron-right-BLyGmyaF.js → chevron-right-Di90aqSn.js} +2 -2
- package/dist/{chevron-right-BLyGmyaF.js.map → chevron-right-Di90aqSn.js.map} +1 -1
- package/dist/chevron-up-Bq55Db6X.cjs +7 -0
- package/dist/{chevron-up-C3RClqXD.cjs.map → chevron-up-Bq55Db6X.cjs.map} +1 -1
- package/dist/{chevron-up-BmYZUtrk.js → chevron-up-Dr7EIn9V.js} +2 -2
- package/dist/{chevron-up-BmYZUtrk.js.map → chevron-up-Dr7EIn9V.js.map} +1 -1
- package/dist/clock-BjJE8PGr.js +15 -0
- package/dist/clock-BjJE8PGr.js.map +1 -0
- package/dist/clock-CnxBAA_O.cjs +7 -0
- package/dist/clock-CnxBAA_O.cjs.map +1 -0
- package/dist/command-BEpaOk-5.cjs +2 -0
- package/dist/command-BEpaOk-5.cjs.map +1 -0
- package/dist/command-CYhMM7gX.js +404 -0
- package/dist/command-CYhMM7gX.js.map +1 -0
- package/dist/components/builders/index.cjs.js +2 -0
- package/dist/components/builders/index.cjs.js.map +1 -0
- package/dist/components/builders/index.es.js +42 -0
- package/dist/components/builders/index.es.js.map +1 -0
- package/dist/components/charts/index.cjs.js +1 -1
- package/dist/components/charts/index.es.js +7 -6
- package/dist/components/charts/index.es.js.map +1 -1
- package/dist/components/data-display/index.cjs.js +1 -1
- package/dist/components/data-display/index.es.js +43 -20
- package/dist/components/dnd/index.cjs.js +1 -1
- package/dist/components/dnd/index.es.js +1 -1
- package/dist/components/feedback/index.cjs.js +1 -1
- package/dist/components/feedback/index.es.js +1 -1
- package/dist/components/forms/index.cjs.js +1 -1
- package/dist/components/forms/index.es.js +24 -23
- package/dist/components/forms/index.es.js.map +1 -1
- package/dist/components/layouts/index.cjs.js +1 -1
- package/dist/components/layouts/index.es.js +45 -21
- package/dist/components/messaging/index.cjs.js +2 -0
- package/dist/components/messaging/index.cjs.js.map +1 -0
- package/dist/components/messaging/index.es.js +15 -0
- package/dist/components/messaging/index.es.js.map +1 -0
- package/dist/components/navigation/index.cjs.js +1 -1
- package/dist/components/navigation/index.es.js +1 -1
- package/dist/components/scheduling/index.cjs.js +2 -0
- package/dist/components/scheduling/index.cjs.js.map +1 -0
- package/dist/components/scheduling/index.es.js +6 -0
- package/dist/components/scheduling/index.es.js.map +1 -0
- package/dist/components/ui/index.cjs.js +1 -1
- package/dist/components/ui/index.es.js +168 -158
- package/dist/components/ui/index.es.js.map +1 -1
- package/dist/dialog-Cr9SYCaD.cjs +6 -0
- package/dist/dialog-Cr9SYCaD.cjs.map +1 -0
- package/dist/dialog-MYAx3Qrc.js +387 -0
- package/dist/dialog-MYAx3Qrc.js.map +1 -0
- package/dist/dropdown-menu-CkCCV_tw.js +969 -0
- package/dist/dropdown-menu-CkCCV_tw.js.map +1 -0
- package/dist/dropdown-menu-ejikFvg2.cjs +7 -0
- package/dist/dropdown-menu-ejikFvg2.cjs.map +1 -0
- package/dist/{ellipsis-6eUne95u.js → ellipsis-CKhpjj5H.js} +2 -2
- package/dist/{ellipsis-6eUne95u.js.map → ellipsis-CKhpjj5H.js.map} +1 -1
- package/dist/{ellipsis-DkM3GBF5.cjs → ellipsis-Dk7Wfc4i.cjs} +3 -3
- package/dist/{ellipsis-DkM3GBF5.cjs.map → ellipsis-Dk7Wfc4i.cjs.map} +1 -1
- package/dist/external-link-CGBqsrbm.cjs +7 -0
- package/dist/external-link-CGBqsrbm.cjs.map +1 -0
- package/dist/external-link-UeWW0ty3.js +16 -0
- package/dist/external-link-UeWW0ty3.js.map +1 -0
- package/dist/eye-Cved4eAo.cjs +7 -0
- package/dist/eye-Cved4eAo.cjs.map +1 -0
- package/dist/eye-KdCUpmO8.js +21 -0
- package/dist/eye-KdCUpmO8.js.map +1 -0
- package/dist/{file-Cw_u_aJB.js → file-CHbdXCWO.js} +2 -2
- package/dist/{file-Cw_u_aJB.js.map → file-CHbdXCWO.js.map} +1 -1
- package/dist/{file-Cp5UoYUZ.cjs → file-CqYRamm8.cjs} +3 -3
- package/dist/{file-Cp5UoYUZ.cjs.map → file-CqYRamm8.cjs.map} +1 -1
- package/dist/file-spreadsheet-CpySxI0-.cjs +7 -0
- package/dist/file-spreadsheet-CpySxI0-.cjs.map +1 -0
- package/dist/file-spreadsheet-EqZMR-mM.js +19 -0
- package/dist/file-spreadsheet-EqZMR-mM.js.map +1 -0
- package/dist/form-preview-Bm5xHtkw.js +12075 -0
- package/dist/form-preview-Bm5xHtkw.js.map +1 -0
- package/dist/form-preview-IPEZdspX.cjs +111 -0
- package/dist/form-preview-IPEZdspX.cjs.map +1 -0
- package/dist/full-calendar-4Ut52QNO.cjs +18 -0
- package/dist/full-calendar-4Ut52QNO.cjs.map +1 -0
- package/dist/full-calendar-DD_tBy69.js +2631 -0
- package/dist/full-calendar-DD_tBy69.js.map +1 -0
- package/dist/funnel-chart-Dfj1pOyV.cjs +6 -0
- package/dist/funnel-chart-Dfj1pOyV.cjs.map +1 -0
- package/dist/funnel-chart-o9qcEMgg.js +2952 -0
- package/dist/funnel-chart-o9qcEMgg.js.map +1 -0
- package/dist/global-search-DcBKVaM4.cjs +22 -0
- package/dist/global-search-DcBKVaM4.cjs.map +1 -0
- package/dist/global-search-Dul9CD6-.js +1331 -0
- package/dist/global-search-Dul9CD6-.js.map +1 -0
- package/dist/hooks/index.cjs.js +1 -1
- package/dist/hooks/index.es.js +9 -7
- package/dist/hooks/index.es.js.map +1 -1
- package/dist/{index-DtaLkIY8.js → index-BGUveO6l.js} +84 -79
- package/dist/{index-DtaLkIY8.js.map → index-BGUveO6l.js.map} +1 -1
- package/dist/{index-gVbM3K4f.cjs → index-Bhee6XHk.cjs} +2 -2
- package/dist/{index-gVbM3K4f.cjs.map → index-Bhee6XHk.cjs.map} +1 -1
- package/dist/index-CrSlyWAA.js +1090 -0
- package/dist/index-CrSlyWAA.js.map +1 -0
- package/dist/{index-Dk_Et2WJ.js → index-D8-pHJim.js} +2 -2
- package/dist/{index-Dk_Et2WJ.js.map → index-D8-pHJim.js.map} +1 -1
- package/dist/index-Dy_9oyP3.cjs +2 -0
- package/dist/{index-D2U2F80P.cjs.map → index-Dy_9oyP3.cjs.map} +1 -1
- package/dist/index-hnbbvGmb.cjs +21 -0
- package/dist/index-hnbbvGmb.cjs.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +434 -319
- package/dist/index.es.js.map +1 -1
- package/dist/input-Pfq8fkiV.js +2718 -0
- package/dist/input-Pfq8fkiV.js.map +1 -0
- package/dist/input-UBp7V7li.cjs +52 -0
- package/dist/input-UBp7V7li.cjs.map +1 -0
- package/dist/label-CExiitfO.js +50 -0
- package/dist/label-CExiitfO.js.map +1 -0
- package/dist/label-F0zGAiI2.cjs +2 -0
- package/dist/label-F0zGAiI2.cjs.map +1 -0
- package/dist/loader-circle-CBVYGIRp.js +14 -0
- package/dist/loader-circle-CBVYGIRp.js.map +1 -0
- package/dist/loader-circle-IaJKvYsP.cjs +7 -0
- package/dist/loader-circle-IaJKvYsP.cjs.map +1 -0
- package/dist/locale-provider-BHGNO4j7.js +1786 -0
- package/dist/locale-provider-BHGNO4j7.js.map +1 -0
- package/dist/locale-provider-BScpm-eC.cjs +2 -0
- package/dist/locale-provider-BScpm-eC.cjs.map +1 -0
- package/dist/locale-selector-CRC0VBKl.cjs +12 -0
- package/dist/locale-selector-CRC0VBKl.cjs.map +1 -0
- package/dist/locale-selector-HuzfE0zZ.js +1740 -0
- package/dist/locale-selector-HuzfE0zZ.js.map +1 -0
- package/dist/map-pin-CHh0xl6i.js +46 -0
- package/dist/map-pin-CHh0xl6i.js.map +1 -0
- package/dist/map-pin-DGObSZ40.cjs +17 -0
- package/dist/map-pin-DGObSZ40.cjs.map +1 -0
- package/dist/message-square-B_xLey5D.js +14 -0
- package/dist/message-square-B_xLey5D.js.map +1 -0
- package/dist/message-square-_69ua8rH.cjs +7 -0
- package/dist/message-square-_69ua8rH.cjs.map +1 -0
- package/dist/minus-BUFkTM0k.cjs +7 -0
- package/dist/{minus-C0uyaz70.cjs.map → minus-BUFkTM0k.cjs.map} +1 -1
- package/dist/{minus-CiwV65ZG.js → minus-DJ0tmymW.js} +2 -2
- package/dist/{minus-CiwV65ZG.js.map → minus-DJ0tmymW.js.map} +1 -1
- package/dist/multi-container-CytCGxsc.cjs +7 -0
- package/dist/multi-container-CytCGxsc.cjs.map +1 -0
- package/dist/multi-container-DmkgnCJN.js +799 -0
- package/dist/multi-container-DmkgnCJN.js.map +1 -0
- package/dist/multi-select-Bj_kIDHE.cjs +7 -0
- package/dist/multi-select-Bj_kIDHE.cjs.map +1 -0
- package/dist/multi-select-CPF7w871.js +224 -0
- package/dist/multi-select-CPF7w871.js.map +1 -0
- package/dist/pencil-BJULwaDl.cjs +12 -0
- package/dist/pencil-BJULwaDl.cjs.map +1 -0
- package/dist/pencil-HL0trGIs.js +31 -0
- package/dist/pencil-HL0trGIs.js.map +1 -0
- package/dist/permission-matrix-BRqw2RPb.js +6128 -0
- package/dist/permission-matrix-BRqw2RPb.js.map +1 -0
- package/dist/permission-matrix-CqE8q8Hi.cjs +93 -0
- package/dist/permission-matrix-CqE8q8Hi.cjs.map +1 -0
- package/dist/phone-B0J1dGIE.js +31 -0
- package/dist/phone-B0J1dGIE.js.map +1 -0
- package/dist/phone-DPA6vucM.cjs +12 -0
- package/dist/phone-DPA6vucM.cjs.map +1 -0
- package/dist/plus-Bcuujcqd.cjs +7 -0
- package/dist/{plus-BsV82JJ5.cjs.map → plus-Bcuujcqd.cjs.map} +1 -1
- package/dist/{plus-DxD6rofl.js → plus-D7DMDKb8.js} +2 -2
- package/dist/{plus-DxD6rofl.js.map → plus-D7DMDKb8.js.map} +1 -1
- package/dist/popover-Bba1ELMX.cjs +2 -0
- package/dist/popover-Bba1ELMX.cjs.map +1 -0
- package/dist/popover-CZWAuYUL.js +281 -0
- package/dist/popover-CZWAuYUL.js.map +1 -0
- package/dist/progress-BPpsmZ48.js +218 -0
- package/dist/progress-BPpsmZ48.js.map +1 -0
- package/dist/progress-BrzjVhWG.cjs +22 -0
- package/dist/progress-BrzjVhWG.cjs.map +1 -0
- package/dist/providers/index.cjs.js +1 -1
- package/dist/providers/index.es.js +1 -1
- package/dist/radio-group-B9RM_c7e.js +244 -0
- package/dist/radio-group-B9RM_c7e.js.map +1 -0
- package/dist/radio-group-_n8TTqNQ.cjs +2 -0
- package/dist/radio-group-_n8TTqNQ.cjs.map +1 -0
- package/dist/record-dialog-footer-DbH9A6eA.js +2577 -0
- package/dist/record-dialog-footer-DbH9A6eA.js.map +1 -0
- package/dist/record-dialog-footer-DpDxH5wX.cjs +37 -0
- package/dist/record-dialog-footer-DpDxH5wX.cjs.map +1 -0
- package/dist/scroll-area-CGNbDUBQ.js +889 -0
- package/dist/scroll-area-CGNbDUBQ.js.map +1 -0
- package/dist/scroll-area-HsTSI_58.cjs +22 -0
- package/dist/scroll-area-HsTSI_58.cjs.map +1 -0
- package/dist/select-CEsYpjPi.cjs +2 -0
- package/dist/select-CEsYpjPi.cjs.map +1 -0
- package/dist/{select-BJpZrtep.js → select-Ce2C2acZ.js} +184 -179
- package/dist/select-Ce2C2acZ.js.map +1 -0
- package/dist/send-DIkOd-pu.js +21 -0
- package/dist/send-DIkOd-pu.js.map +1 -0
- package/dist/send-H6HC-rS8.cjs +7 -0
- package/dist/send-H6HC-rS8.cjs.map +1 -0
- package/dist/shared-inbox-Bv0AgLew.js +702 -0
- package/dist/shared-inbox-Bv0AgLew.js.map +1 -0
- package/dist/shared-inbox-DWEKfDX3.cjs +22 -0
- package/dist/shared-inbox-DWEKfDX3.cjs.map +1 -0
- package/dist/sheet-DTimb4SJ.cjs +2 -0
- package/dist/sheet-DTimb4SJ.cjs.map +1 -0
- package/dist/sheet-DgpAPCAp.js +147 -0
- package/dist/sheet-DgpAPCAp.js.map +1 -0
- package/dist/{skeleton-Bl6FAxHT.js → skeleton-C_dwS3_6.js} +2 -2
- package/dist/{skeleton-Bl6FAxHT.js.map → skeleton-C_dwS3_6.js.map} +1 -1
- package/dist/{skeleton-Cb6MWerF.cjs → skeleton-D3YsjVWD.cjs} +2 -2
- package/dist/{skeleton-Cb6MWerF.cjs.map → skeleton-D3YsjVWD.cjs.map} +1 -1
- package/dist/sparkline-chart-BP4bk24J.js +15881 -0
- package/dist/sparkline-chart-BP4bk24J.js.map +1 -0
- package/dist/sparkline-chart-D6SLZVjp.cjs +79 -0
- package/dist/sparkline-chart-D6SLZVjp.cjs.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/switch-AEZvZSRV.cjs +2 -0
- package/dist/switch-AEZvZSRV.cjs.map +1 -0
- package/dist/switch-BF4LLvaU.js +147 -0
- package/dist/switch-BF4LLvaU.js.map +1 -0
- package/dist/table-2-Bn-YjZ9s.cjs +17 -0
- package/dist/table-2-Bn-YjZ9s.cjs.map +1 -0
- package/dist/table-2-C7E_N72K.js +52 -0
- package/dist/table-2-C7E_N72K.js.map +1 -0
- package/dist/textarea-4qZDuQ-C.js +206 -0
- package/dist/textarea-4qZDuQ-C.js.map +1 -0
- package/dist/textarea-Bq_zyt0L.cjs +2 -0
- package/dist/textarea-Bq_zyt0L.cjs.map +1 -0
- package/dist/tooltip-Dd7le9EO.cjs +2 -0
- package/dist/tooltip-Dd7le9EO.cjs.map +1 -0
- package/dist/tooltip-Dee-pNPI.js +338 -0
- package/dist/tooltip-Dee-pNPI.js.map +1 -0
- package/dist/trash-2-B3EP3JfM.js +18 -0
- package/dist/trash-2-B3EP3JfM.js.map +1 -0
- package/dist/trash-2-DWEeKlWT.cjs +7 -0
- package/dist/trash-2-DWEeKlWT.cjs.map +1 -0
- package/dist/{trending-up-BHFXgLWy.js → trending-up-ljWtN4pj.js} +2 -2
- package/dist/{trending-up-BHFXgLWy.js.map → trending-up-ljWtN4pj.js.map} +1 -1
- package/dist/{trending-up-BBjz_E69.cjs → trending-up-mLgmkp--.cjs} +2 -2
- package/dist/{trending-up-BBjz_E69.cjs.map → trending-up-mLgmkp--.cjs.map} +1 -1
- package/dist/upload-2tm-XihE.cjs +7 -0
- package/dist/upload-2tm-XihE.cjs.map +1 -0
- package/dist/upload-C_JDP8O0.js +16 -0
- package/dist/upload-C_JDP8O0.js.map +1 -0
- package/dist/use-controllable-state-3ATd6Fqd.cjs +2 -0
- package/dist/use-controllable-state-3ATd6Fqd.cjs.map +1 -0
- package/dist/use-controllable-state-CEa-Zlq6.js +23 -0
- package/dist/use-controllable-state-CEa-Zlq6.js.map +1 -0
- package/dist/use-formatters-Bb0fX1lW.cjs +2 -0
- package/dist/{use-formatters-CObUgipW.cjs.map → use-formatters-Bb0fX1lW.cjs.map} +1 -1
- package/dist/{use-formatters-Bgj3JA4i.js → use-formatters-xeMS4gdV.js} +1160 -1165
- package/dist/{use-formatters-Bgj3JA4i.js.map → use-formatters-xeMS4gdV.js.map} +1 -1
- package/dist/utils/index.cjs.js +1 -1
- package/dist/utils/index.es.js +1 -1
- package/dist/welcome-card-Ccbl_miQ.js +1007 -0
- package/dist/welcome-card-Ccbl_miQ.js.map +1 -0
- package/dist/welcome-card-D-ShMkaS.cjs +37 -0
- package/dist/welcome-card-D-ShMkaS.cjs.map +1 -0
- package/dist/x-BBkgEhUv.js +15 -0
- package/dist/x-BBkgEhUv.js.map +1 -0
- package/dist/x-D-El5XAY.cjs +7 -0
- package/dist/x-D-El5XAY.cjs.map +1 -0
- package/package.json +20 -2
- package/dist/avatar-BT_SPwFW.cjs +0 -18
- package/dist/avatar-BT_SPwFW.cjs.map +0 -1
- package/dist/avatar-C5-ZWIqT.js +0 -305
- package/dist/avatar-C5-ZWIqT.js.map +0 -1
- package/dist/calendar-BF5drX5u.cjs +0 -12
- package/dist/calendar-BF5drX5u.cjs.map +0 -1
- package/dist/calendar-DgnhzEfp.js.map +0 -1
- package/dist/checkbox-BY2zxQVv.js.map +0 -1
- package/dist/checkbox-CL6u7vL6.cjs +0 -2
- package/dist/checkbox-CL6u7vL6.cjs.map +0 -1
- package/dist/chevron-down-BiUlxZA-.js +0 -14
- package/dist/chevron-down-BiUlxZA-.js.map +0 -1
- package/dist/chevron-down-Ce0kqXiD.cjs +0 -7
- package/dist/chevron-down-Ce0kqXiD.cjs.map +0 -1
- package/dist/chevron-up-C3RClqXD.cjs +0 -7
- package/dist/createLucideIcon-BC8wu-bu.js +0 -80
- package/dist/createLucideIcon-BC8wu-bu.js.map +0 -1
- package/dist/createLucideIcon-Cv8nC2E9.cjs +0 -22
- package/dist/createLucideIcon-Cv8nC2E9.cjs.map +0 -1
- package/dist/filter-tags-DoRzXjuY.cjs +0 -48
- package/dist/filter-tags-DoRzXjuY.cjs.map +0 -1
- package/dist/filter-tags-zEQmRhEU.js +0 -2712
- package/dist/filter-tags-zEQmRhEU.js.map +0 -1
- package/dist/full-calendar-5Z4JSj8g.js +0 -3551
- package/dist/full-calendar-5Z4JSj8g.js.map +0 -1
- package/dist/full-calendar-DjAvCfuE.cjs +0 -23
- package/dist/full-calendar-DjAvCfuE.cjs.map +0 -1
- package/dist/global-search-BbZfc-VL.js +0 -1216
- package/dist/global-search-BbZfc-VL.js.map +0 -1
- package/dist/global-search-Bd74_wPV.cjs +0 -22
- package/dist/global-search-Bd74_wPV.cjs.map +0 -1
- package/dist/index-D2U2F80P.cjs +0 -2
- package/dist/index-DG0KV-sw.cjs +0 -11
- package/dist/index-DG0KV-sw.cjs.map +0 -1
- package/dist/index-XnFSmCuh.js +0 -299
- package/dist/index-XnFSmCuh.js.map +0 -1
- package/dist/input-BgPy-4Qu.js +0 -3658
- package/dist/input-BgPy-4Qu.js.map +0 -1
- package/dist/input-Cfr2WB-P.cjs +0 -47
- package/dist/input-Cfr2WB-P.cjs.map +0 -1
- package/dist/locale-provider-BojNdf1Y.cjs +0 -2
- package/dist/locale-provider-BojNdf1Y.cjs.map +0 -1
- package/dist/locale-provider-DzBeb-X3.js +0 -1013
- package/dist/locale-provider-DzBeb-X3.js.map +0 -1
- package/dist/locale-selector-BD1IWk6X.cjs +0 -22
- package/dist/locale-selector-BD1IWk6X.cjs.map +0 -1
- package/dist/locale-selector-DLRSyVye.js +0 -1772
- package/dist/locale-selector-DLRSyVye.js.map +0 -1
- package/dist/minus-C0uyaz70.cjs +0 -7
- package/dist/multi-container-BZia7HCU.js +0 -748
- package/dist/multi-container-BZia7HCU.js.map +0 -1
- package/dist/multi-container-BdNbgtPZ.cjs +0 -7
- package/dist/multi-container-BdNbgtPZ.cjs.map +0 -1
- package/dist/pipeline-Dh052Dvj.cjs +0 -27
- package/dist/pipeline-Dh052Dvj.cjs.map +0 -1
- package/dist/pipeline-DqWvleNy.js +0 -1076
- package/dist/pipeline-DqWvleNy.js.map +0 -1
- package/dist/plus-BsV82JJ5.cjs +0 -7
- package/dist/popover-BgLxmm1z.cjs +0 -7
- package/dist/popover-BgLxmm1z.cjs.map +0 -1
- package/dist/popover-PI9jbhnS.js +0 -775
- package/dist/popover-PI9jbhnS.js.map +0 -1
- package/dist/progress-CTTt_CP3.js +0 -260
- package/dist/progress-CTTt_CP3.js.map +0 -1
- package/dist/progress-CTWb7X1Q.cjs +0 -37
- package/dist/progress-CTWb7X1Q.cjs.map +0 -1
- package/dist/scroll-area-A3jGu-Ta.js +0 -974
- package/dist/scroll-area-A3jGu-Ta.js.map +0 -1
- package/dist/scroll-area-DzDnWIYJ.cjs +0 -12
- package/dist/scroll-area-DzDnWIYJ.cjs.map +0 -1
- package/dist/select-BJpZrtep.js.map +0 -1
- package/dist/select-Ii8HRuXa.cjs +0 -2
- package/dist/select-Ii8HRuXa.cjs.map +0 -1
- package/dist/separator-BzcDE0Ei.cjs +0 -2
- package/dist/separator-BzcDE0Ei.cjs.map +0 -1
- package/dist/separator-DyarVo1-.js +0 -396
- package/dist/separator-DyarVo1-.js.map +0 -1
- package/dist/sheet-DPSdOoE6.js +0 -84
- package/dist/sheet-DPSdOoE6.js.map +0 -1
- package/dist/sheet-XtjvbEMq.cjs +0 -2
- package/dist/sheet-XtjvbEMq.cjs.map +0 -1
- package/dist/sparkline-chart-CeCDeMNk.cjs +0 -102
- package/dist/sparkline-chart-CeCDeMNk.cjs.map +0 -1
- package/dist/sparkline-chart-DUS4CoW_.js +0 -19787
- package/dist/sparkline-chart-DUS4CoW_.js.map +0 -1
- package/dist/use-formatters-CObUgipW.cjs +0 -2
- package/dist/welcome-card-CNuEa6Ck.cjs +0 -67
- package/dist/welcome-card-CNuEa6Ck.cjs.map +0 -1
- package/dist/welcome-card-Cp6t6G3j.js +0 -1041
- package/dist/welcome-card-Cp6t6G3j.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-container-BZia7HCU.js","sources":["../node_modules/lucide-react/dist/esm/icons/folder.js","../src/components/dnd/sortable-item.tsx","../node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","../src/components/dnd/sortable-list.tsx","../src/components/dnd/kanban-board.tsx","../src/components/dnd/tree-view.tsx","../src/components/dnd/multi-container.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Folder = createLucideIcon(\"Folder\", [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n]);\n\nexport { Folder as default };\n//# sourceMappingURL=folder.js.map\n","import * as React from 'react'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@/utils/cn'\n\nexport interface SortableItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n disabled?: boolean\n}\n\nexport function SortableItem({\n id,\n children,\n className,\n disabled = false,\n}: SortableItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'z-50 ring-2 ring-primary/30',\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n !disabled && isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n}\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n };\n };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = _ref => {\n let {\n containerNodeRect,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n let {\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n } = _ref;\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = _ref => {\n let {\n transform,\n draggingNodeRect,\n windowRect\n } = _ref;\n\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n let {\n activatorEvent,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import * as React from 'react'\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\nimport { SortableItem } from './sortable-item'\n\nexport interface SortableListItem {\n id: string | number\n [key: string]: unknown\n}\n\nexport interface SortableListProps<T extends SortableListItem> {\n items: T[]\n onReorder: (items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderOverlay?: (item: T) => React.ReactNode\n direction?: 'vertical' | 'horizontal'\n className?: string\n itemClassName?: string\n disabled?: boolean\n gap?: 'sm' | 'md' | 'lg'\n}\n\nconst gapClasses = {\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-4',\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function SortableList<T extends SortableListItem>({\n items,\n onReorder,\n renderItem,\n renderOverlay,\n direction = 'vertical',\n className,\n itemClassName,\n disabled = false,\n gap = 'md',\n}: SortableListProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex((item) => item.id === active.id)\n const newIndex = items.findIndex((item) => item.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(arrayMove(items, oldIndex, newIndex))\n }\n }\n\n setActiveId(null)\n }, [items, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n const itemIds = React.useMemo(() => items.map((item) => item.id), [items])\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext\n items={itemIds}\n strategy={direction === 'vertical' ? verticalListSortingStrategy : horizontalListSortingStrategy}\n >\n <div\n className={cn(\n 'flex',\n direction === 'vertical' ? 'flex-col' : 'flex-row flex-wrap',\n gapClasses[gap],\n className\n )}\n >\n {items.map((item) => (\n <SortableItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n disabled={disabled}\n >\n {renderItem(item)}\n </SortableItem>\n ))}\n </div>\n </SortableContext>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n {renderOverlay ? renderOverlay(activeItem) : renderItem(activeItem)}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n useSensor,\n useSensors,\n useDroppable,\n pointerWithin,\n rectIntersection,\n CollisionDetection,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\n\nexport interface KanbanItem {\n id: string | number\n columnId: string | number\n [key: string]: unknown\n}\n\nexport interface KanbanColumn {\n id: string | number\n title: string\n}\n\nexport interface KanbanBoardProps<T extends KanbanItem> {\n columns: KanbanColumn[]\n items: T[]\n onItemMove: (itemId: UniqueIdentifier, fromColumnId: UniqueIdentifier, toColumnId: UniqueIdentifier, newIndex: number) => void\n onReorder?: (columnId: UniqueIdentifier, items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderColumnHeader?: (column: KanbanColumn) => React.ReactNode\n className?: string\n columnClassName?: string\n itemClassName?: string\n}\n\ninterface SortableKanbanItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n}\n\nconst SortableKanbanItem = React.memo(function SortableKanbanItem({\n id,\n children,\n className\n}: SortableKanbanItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'ring-2 ring-primary/20',\n !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n})\n\ninterface DroppableColumnProps<T extends KanbanItem> {\n column: KanbanColumn\n items: T[]\n renderItem: (item: T) => React.ReactNode\n renderColumnHeader?: (column: KanbanColumn) => React.ReactNode\n columnClassName?: string\n itemClassName?: string\n}\n\nfunction DroppableColumn<T extends KanbanItem>({\n column,\n items,\n renderItem,\n renderColumnHeader,\n columnClassName,\n itemClassName,\n}: DroppableColumnProps<T>) {\n const { setNodeRef, isOver } = useDroppable({\n id: `column-${column.id}`,\n data: {\n type: 'column',\n columnId: column.id,\n },\n })\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n 'flex flex-col min-w-[280px] w-[280px] bg-muted/30 border border-border/50 rounded-xl p-3 transition-colors duration-200',\n isOver && 'ring-2 ring-primary/30 bg-primary/5',\n columnClassName\n )}\n >\n <div className=\"flex items-center justify-between mb-3 px-1\">\n {renderColumnHeader ? (\n renderColumnHeader(column)\n ) : (\n <h3 className=\"font-semibold text-sm text-foreground\">{column.title}</h3>\n )}\n <span className=\"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm\">\n {items.length}\n </span>\n </div>\n <SortableContext\n items={items.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2 min-h-[100px] flex-1\">\n {items.map((item) => (\n <SortableKanbanItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n >\n {renderItem(item)}\n </SortableKanbanItem>\n ))}\n </div>\n </SortableContext>\n </div>\n )\n}\n\n// Custom collision detection that prioritizes items over columns\nconst customCollisionDetection: CollisionDetection = (args) => {\n const pointerCollisions = pointerWithin(args)\n const itemCollisions = pointerCollisions.filter(\n (collision) => !String(collision.id).startsWith('column-')\n )\n\n if (itemCollisions.length > 0) {\n return itemCollisions\n }\n\n const rectCollisions = rectIntersection(args)\n return rectCollisions\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function KanbanBoard<T extends KanbanItem>({\n columns,\n items,\n onItemMove,\n onReorder,\n renderItem,\n renderColumnHeader,\n className,\n columnClassName,\n itemClassName,\n}: KanbanBoardProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n const lastOverId = React.useRef<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const getItemsByColumn = React.useCallback(\n (columnId: UniqueIdentifier) => items.filter((item) => item.columnId === columnId),\n [items]\n )\n\n const findColumnByItemId = React.useCallback(\n (itemId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const item = items.find((i) => i.id === itemId)\n return item?.columnId\n },\n [items]\n )\n\n const extractColumnId = React.useCallback(\n (overId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const overIdStr = String(overId)\n if (overIdStr.startsWith('column-')) {\n return overIdStr.replace('column-', '')\n }\n return findColumnByItemId(overId)\n },\n [findColumnByItemId]\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n lastOverId.current = null\n }, [])\n\n const handleDragOver = React.useCallback((event: DragOverEvent) => {\n const { active, over } = event\n if (!over) return\n\n const activeColumnId = findColumnByItemId(active.id)\n const overColumnId = extractColumnId(over.id)\n\n if (!activeColumnId || !overColumnId) return\n if (activeColumnId === overColumnId) return\n\n if (lastOverId.current === over.id) return\n lastOverId.current = over.id\n\n const overColumnItems = getItemsByColumn(overColumnId)\n const overIdStr = String(over.id)\n\n let newIndex: number\n if (overIdStr.startsWith('column-')) {\n newIndex = overColumnItems.length\n } else {\n const overIndex = overColumnItems.findIndex((item) => item.id === over.id)\n newIndex = overIndex >= 0 ? overIndex : overColumnItems.length\n }\n\n onItemMove(active.id, activeColumnId, overColumnId, newIndex)\n }, [findColumnByItemId, extractColumnId, getItemsByColumn, onItemMove])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (!over) {\n setActiveId(null)\n lastOverId.current = null\n return\n }\n\n const activeColumnId = findColumnByItemId(active.id)\n const overIdStr = String(over.id)\n\n let overColumnId: UniqueIdentifier | undefined\n if (overIdStr.startsWith('column-')) {\n overColumnId = overIdStr.replace('column-', '')\n } else {\n overColumnId = findColumnByItemId(over.id)\n }\n\n if (!activeColumnId) {\n setActiveId(null)\n lastOverId.current = null\n return\n }\n\n if (activeColumnId === overColumnId && active.id !== over.id && onReorder && !overIdStr.startsWith('column-')) {\n const columnItems = getItemsByColumn(activeColumnId)\n const oldIndex = columnItems.findIndex((item) => item.id === active.id)\n const newIndex = columnItems.findIndex((item) => item.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(activeColumnId, arrayMove(columnItems, oldIndex, newIndex) as T[])\n }\n }\n\n setActiveId(null)\n lastOverId.current = null\n }, [findColumnByItemId, getItemsByColumn, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n lastOverId.current = null\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={customCollisionDetection}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <div className={cn('flex gap-4 overflow-x-auto p-1', className)}>\n {columns.map((column) => {\n const columnItems = getItemsByColumn(column.id)\n return (\n <DroppableColumn\n key={column.id}\n column={column}\n items={columnItems}\n renderItem={renderItem}\n renderColumnHeader={renderColumnHeader}\n columnClassName={columnClassName}\n itemClassName={itemClassName}\n />\n )\n })}\n </div>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <div className=\"min-w-0\">{renderItem(activeItem)}</div>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n closestCenter,\n useSensor,\n useSensors,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\nimport { ChevronRight, Folder, File } from 'lucide-react'\n\nexport interface TreeNode {\n id: string | number\n label: string\n children?: TreeNode[]\n isFolder?: boolean\n [key: string]: unknown\n}\n\nexport interface TreeViewProps {\n data: TreeNode[]\n onMove?: (nodeId: UniqueIdentifier, newParentId: UniqueIdentifier | null, index: number) => void\n onToggle?: (nodeId: UniqueIdentifier, expanded: boolean) => void\n renderNode?: (node: TreeNode) => React.ReactNode\n className?: string\n defaultExpanded?: Set<UniqueIdentifier>\n}\n\ninterface TreeNodeItemProps {\n node: TreeNode\n depth: number\n expanded: boolean\n onToggle: () => void\n renderNode?: (node: TreeNode) => React.ReactNode\n}\n\nconst TreeNodeItem = React.memo(function TreeNodeItem({\n node,\n depth,\n expanded,\n onToggle,\n renderNode,\n}: TreeNodeItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: node.id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n paddingLeft: `${depth * 20 + 8}px`,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, depth, isDragging])\n\n const hasChildren = node.children && node.children.length > 0\n const isFolder = node.isFolder || hasChildren\n\n const handleToggleClick = React.useCallback((e: React.MouseEvent) => {\n e.stopPropagation()\n onToggle()\n }, [onToggle])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'flex items-center gap-2 py-2 pr-3 rounded-lg touch-none select-none',\n isDragging && 'bg-muted ring-1 ring-primary/20',\n !isDragging && 'cursor-grab hover:bg-muted/60',\n isDragging && 'cursor-grabbing'\n )}\n {...attributes}\n {...listeners}\n >\n {isFolder ? (\n <button\n type=\"button\"\n onClick={handleToggleClick}\n className=\"flex-shrink-0 p-1 hover:bg-muted rounded-md transition-colors duration-200\"\n >\n <ChevronRight\n className={cn(\n 'h-4 w-4 text-muted-foreground transition-transform duration-200',\n expanded && 'rotate-90'\n )}\n />\n </button>\n ) : (\n <span className=\"w-6\" />\n )}\n\n <span className={cn(\n 'flex-shrink-0',\n isFolder ? 'text-primary/80' : 'text-muted-foreground'\n )}>\n {isFolder ? <Folder className=\"h-4 w-4\" /> : <File className=\"h-4 w-4\" />}\n </span>\n\n <span className=\"flex-1 truncate text-sm text-foreground\">\n {renderNode ? renderNode(node) : node.label}\n </span>\n </div>\n )\n})\n\nfunction flattenTree(\n nodes: TreeNode[],\n expandedIds: Set<UniqueIdentifier>,\n depth = 0\n): Array<{ node: TreeNode; depth: number }> {\n const result: Array<{ node: TreeNode; depth: number }> = []\n\n for (const node of nodes) {\n result.push({ node, depth })\n if (node.children && expandedIds.has(node.id)) {\n result.push(...flattenTree(node.children, expandedIds, depth + 1))\n }\n }\n\n return result\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function TreeView({\n data,\n onMove,\n onToggle,\n renderNode,\n className,\n defaultExpanded = new Set(),\n}: TreeViewProps) {\n const [expandedIds, setExpandedIds] = React.useState<Set<UniqueIdentifier>>(defaultExpanded)\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const flattenedItems = React.useMemo(\n () => flattenTree(data, expandedIds),\n [data, expandedIds]\n )\n\n const handleToggle = React.useCallback((nodeId: UniqueIdentifier) => {\n setExpandedIds(prev => {\n const newExpanded = new Set(prev)\n const wasExpanded = newExpanded.has(nodeId)\n\n if (wasExpanded) {\n newExpanded.delete(nodeId)\n } else {\n newExpanded.add(nodeId)\n }\n\n onToggle?.(nodeId, !wasExpanded)\n return newExpanded\n })\n }, [onToggle])\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n const activeIndex = flattenedItems.findIndex((item) => item.node.id === active.id)\n const overIndex = flattenedItems.findIndex((item) => item.node.id === over.id)\n\n if (activeIndex !== -1 && overIndex !== -1) {\n onMove?.(active.id, null, overIndex)\n }\n }\n\n setActiveId(null)\n }, [flattenedItems, onMove])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeNode = React.useMemo(\n () => flattenedItems.find((item) => item.node.id === activeId)?.node,\n [activeId, flattenedItems]\n )\n\n const itemIds = React.useMemo(\n () => flattenedItems.map((item) => item.node.id),\n [flattenedItems]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext\n items={itemIds}\n strategy={verticalListSortingStrategy}\n >\n <div className={cn('border rounded-xl p-3 bg-card shadow-sm', className)}>\n {flattenedItems.map(({ node, depth }) => (\n <TreeNodeItem\n key={node.id}\n node={node}\n depth={depth}\n expanded={expandedIds.has(node.id)}\n onToggle={() => handleToggle(node.id)}\n renderNode={renderNode}\n />\n ))}\n </div>\n </SortableContext>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeNode ? (\n <div className=\"flex items-center gap-2 py-2 px-3 rounded-lg bg-card border shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <span className={cn(\n 'flex-shrink-0',\n activeNode.isFolder || (activeNode.children && activeNode.children.length > 0)\n ? 'text-primary/80'\n : 'text-muted-foreground'\n )}>\n {activeNode.isFolder || (activeNode.children && activeNode.children.length > 0) ? (\n <Folder className=\"h-4 w-4\" />\n ) : (\n <File className=\"h-4 w-4\" />\n )}\n </span>\n <span className=\"text-sm text-foreground\">\n {renderNode ? renderNode(activeNode) : activeNode.label}\n </span>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n closestCenter,\n useSensor,\n useSensors,\n useDroppable,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\n\nexport interface ContainerItem {\n id: string | number\n containerId: string | number\n [key: string]: unknown\n}\n\nexport interface Container {\n id: string | number\n title: string\n}\n\nexport interface MultiContainerProps<T extends ContainerItem> {\n containers: Container[]\n items: T[]\n onItemMove: (\n itemId: UniqueIdentifier,\n fromContainerId: UniqueIdentifier,\n toContainerId: UniqueIdentifier,\n newIndex: number\n ) => void\n onReorder?: (containerId: UniqueIdentifier, items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderContainerHeader?: (container: Container, itemCount: number) => React.ReactNode\n renderEmptyContainer?: (container: Container) => React.ReactNode\n className?: string\n containerClassName?: string\n itemClassName?: string\n layout?: 'horizontal' | 'vertical' | 'grid'\n}\n\ninterface DroppableContainerProps {\n id: UniqueIdentifier\n children: React.ReactNode\n className?: string\n isEmpty?: boolean\n}\n\nfunction DroppableContainer({ id, children, className, isEmpty }: DroppableContainerProps) {\n const { setNodeRef, isOver } = useDroppable({ id })\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n 'min-h-[100px] rounded-xl transition-colors duration-200',\n isOver && 'bg-primary/5 ring-2 ring-primary/30',\n isEmpty && 'border-2 border-dashed border-muted-foreground/30',\n className\n )}\n >\n {children}\n </div>\n )\n}\n\ninterface SortableContainerItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n}\n\nconst SortableContainerItem = React.memo(function SortableContainerItem({\n id,\n children,\n className\n}: SortableContainerItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'ring-2 ring-primary/20',\n !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n})\n\nconst layoutClasses = {\n horizontal: 'flex gap-4 overflow-x-auto',\n vertical: 'flex flex-col gap-4',\n grid: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function MultiContainer<T extends ContainerItem>({\n containers,\n items,\n onItemMove,\n onReorder,\n renderItem,\n renderContainerHeader,\n renderEmptyContainer,\n className,\n containerClassName,\n itemClassName,\n layout = 'horizontal',\n}: MultiContainerProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const getItemsByContainer = React.useCallback(\n (containerId: UniqueIdentifier) =>\n items.filter((item) => item.containerId === containerId),\n [items]\n )\n\n const findContainerByItemId = React.useCallback(\n (itemId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const item = items.find((i) => i.id === itemId)\n return item?.containerId\n },\n [items]\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragOver = React.useCallback((event: DragOverEvent) => {\n const { active, over } = event\n if (!over) return\n\n const activeContainerId = findContainerByItemId(active.id)\n let overContainerId = findContainerByItemId(over.id)\n\n if (!overContainerId) {\n overContainerId = containers.find((c) => c.id === over.id)?.id\n }\n\n if (!activeContainerId || !overContainerId) return\n if (activeContainerId === overContainerId) return\n\n const overContainerItems = getItemsByContainer(overContainerId)\n const overIndex = overContainerItems.findIndex((item) => item.id === over.id)\n\n onItemMove(\n active.id,\n activeContainerId,\n overContainerId,\n overIndex >= 0 ? overIndex : overContainerItems.length\n )\n }, [containers, findContainerByItemId, getItemsByContainer, onItemMove])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeContainerId = findContainerByItemId(active.id)\n if (!activeContainerId) {\n setActiveId(null)\n return\n }\n\n const overContainerId = findContainerByItemId(over.id) ||\n containers.find((c) => c.id === over.id)?.id\n\n if (activeContainerId === overContainerId && active.id !== over.id && onReorder) {\n const containerItems = getItemsByContainer(activeContainerId)\n const oldIndex = containerItems.findIndex((item) => item.id === active.id)\n const newIndex = containerItems.findIndex((item) => item.id === over.id)\n\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(activeContainerId, arrayMove(containerItems, oldIndex, newIndex) as T[])\n }\n }\n\n setActiveId(null)\n }, [containers, findContainerByItemId, getItemsByContainer, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <div className={cn(layoutClasses[layout], className)}>\n {containers.map((container) => {\n const containerItems = getItemsByContainer(container.id)\n const isEmpty = containerItems.length === 0\n\n return (\n <div\n key={container.id}\n className={cn(\n 'flex flex-col rounded-xl border border-border/50 bg-muted/20 p-4 transition-colors duration-200',\n layout === 'horizontal' && 'min-w-[280px] w-[280px]',\n containerClassName\n )}\n >\n <div className=\"mb-3\">\n {renderContainerHeader ? (\n renderContainerHeader(container, containerItems.length)\n ) : (\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-sm text-foreground\">{container.title}</h3>\n <span className=\"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm\">\n {containerItems.length}\n </span>\n </div>\n )}\n </div>\n\n <DroppableContainer\n id={container.id}\n isEmpty={isEmpty}\n className=\"flex-1\"\n >\n <SortableContext\n items={containerItems.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2\">\n {containerItems.map((item) => (\n <SortableContainerItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n >\n {renderItem(item)}\n </SortableContainerItem>\n ))}\n {isEmpty && renderEmptyContainer && (\n <div className=\"flex items-center justify-center py-8 text-muted-foreground text-sm\">\n {renderEmptyContainer(container)}\n </div>\n )}\n </div>\n </SortableContext>\n </DroppableContainer>\n </div>\n )\n })}\n </div>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <div className=\"min-w-0\">{renderItem(activeItem)}</div>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n"],"names":["Folder","createLucideIcon","SortableItem","id","children","className","disabled","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","React","CSS","jsx","cn","restrictToBoundingRect","rect","boundingRect","value","restrictToWindowEdges","_ref","draggingNodeRect","windowRect","snapCenterToCursor","activatorEvent","activatorCoordinates","getEventCoordinates","offsetX","offsetY","gapClasses","dropAnimationConfig","defaultDropAnimationSideEffects","SortableList","items","onReorder","renderItem","renderOverlay","direction","itemClassName","gap","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragStart","event","handleDragEnd","active","over","oldIndex","item","newIndex","arrayMove","handleDragCancel","activeItem","itemIds","jsxs","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","horizontalListSortingStrategy","DragOverlay","SortableKanbanItem","DroppableColumn","column","renderColumnHeader","columnClassName","isOver","useDroppable","customCollisionDetection","args","itemCollisions","pointerWithin","collision","rectIntersection","KanbanBoard","columns","onItemMove","lastOverId","getItemsByColumn","columnId","findColumnByItemId","itemId","i","extractColumnId","overId","overIdStr","handleDragOver","activeColumnId","overColumnId","overColumnItems","overIndex","columnItems","TreeNodeItem","node","depth","expanded","onToggle","renderNode","hasChildren","isFolder","handleToggleClick","e","ChevronRight","File","flattenTree","nodes","expandedIds","result","TreeView","data","onMove","defaultExpanded","setExpandedIds","flattenedItems","handleToggle","nodeId","prev","newExpanded","wasExpanded","activeIndex","activeNode","_a","DroppableContainer","isEmpty","SortableContainerItem","layoutClasses","MultiContainer","containers","renderContainerHeader","renderEmptyContainer","containerClassName","layout","getItemsByContainer","containerId","findContainerByItemId","activeContainerId","overContainerId","c","overContainerItems","containerItems","container"],"mappings":"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","x_google_ignoreList":[0,2]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";const r=require("react/jsx-runtime"),z=require("react"),e=require("./sortable.esm-5DsiICDg.cjs"),k=require("./index-D2U2F80P.cjs"),_=require("./createLucideIcon-Cv8nC2E9.cjs"),q=require("./file-Cp5UoYUZ.cjs"),$=require("./chevron-right-Bxf8i4gi.cjs");function G(s){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const n in s)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(s,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:()=>s[n]})}}return t.default=s,Object.freeze(t)}const l=G(z);/**
|
|
2
|
-
* @license lucide-react v0.441.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const B=_.createLucideIcon("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);function P({id:s,children:t,className:n,disabled:o=!1}){const{attributes:d,listeners:x,setNodeRef:b,transform:C,transition:m,isDragging:u}=e.useSortable({id:s,disabled:o}),h=l.useMemo(()=>({transform:e.CSS.Transform.toString(C),transition:m,opacity:u?.5:1}),[C,m,u]);return r.jsx("div",{ref:b,style:h,className:k.cn("rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none",u&&"z-50 ring-2 ring-primary/30",o&&"opacity-50 cursor-not-allowed",!o&&!u&&"cursor-grab hover:shadow-md hover:border-primary/30",!o&&u&&"cursor-grabbing",n),...d,...x,children:r.jsx("div",{className:"min-w-0",children:t})})}function V(s,t,n){const o={...s};return t.top+s.y<=n.top?o.y=n.top-t.top:t.bottom+s.y>=n.top+n.height&&(o.y=n.top+n.height-t.bottom),t.left+s.x<=n.left?o.x=n.left-t.left:t.right+s.x>=n.left+n.width&&(o.x=n.left+n.width-t.right),o}const T=s=>{let{transform:t,draggingNodeRect:n,windowRect:o}=s;return!n||!o?t:V(t,n,o)},F=s=>{let{activatorEvent:t,draggingNodeRect:n,transform:o}=s;if(n&&t){const d=e.getEventCoordinates(t);if(!d)return o;const x=d.x-n.left,b=d.y-n.top;return{...o,x:o.x+x-n.width/2,y:o.y+b-n.height/2}}return o},X={sm:"gap-1",md:"gap-2",lg:"gap-4"},Y={sideEffects:e.defaultDropAnimationSideEffects({styles:{active:{opacity:"0.5"}}})};function Z({items:s,onReorder:t,renderItem:n,renderOverlay:o,direction:d="vertical",className:x,itemClassName:b,disabled:C=!1,gap:m="md"}){const[u,h]=l.useState(null),f=e.useSensors(e.useSensor(e.PointerSensor,{activationConstraint:{distance:5}}),e.useSensor(e.KeyboardSensor,{coordinateGetter:e.sortableKeyboardCoordinates})),E=l.useCallback(I=>{h(I.active.id)},[]),A=l.useCallback(I=>{const{active:g,over:j}=I;if(j&&g.id!==j.id){const D=s.findIndex(a=>a.id===g.id),i=s.findIndex(a=>a.id===j.id);D!==-1&&i!==-1&&t(e.arrayMove(s,D,i))}h(null)},[s,t]),v=l.useCallback(()=>{h(null)},[]),S=l.useMemo(()=>s.find(I=>I.id===u),[u,s]),y=l.useMemo(()=>s.map(I=>I.id),[s]);return r.jsxs(e.DndContext,{sensors:f,collisionDetection:e.closestCenter,onDragStart:E,onDragEnd:A,onDragCancel:v,children:[r.jsx(e.SortableContext,{items:y,strategy:d==="vertical"?e.verticalListSortingStrategy:e.horizontalListSortingStrategy,children:r.jsx("div",{className:k.cn("flex",d==="vertical"?"flex-col":"flex-row flex-wrap",X[m],x),children:s.map(I=>r.jsx(P,{id:I.id,className:b,disabled:C,children:n(I)},I.id))})}),r.jsx(e.DragOverlay,{dropAnimation:Y,modifiers:[F,T],children:S?r.jsx("div",{className:"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing",children:o?o(S):n(S)}):null})]})}const J=l.memo(function({id:t,children:n,className:o}){const{attributes:d,listeners:x,setNodeRef:b,transform:C,transition:m,isDragging:u}=e.useSortable({id:t}),h=l.useMemo(()=>({transform:e.CSS.Transform.toString(C),transition:m,opacity:u?.5:1}),[C,m,u]);return r.jsx("div",{ref:b,style:h,className:k.cn("rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none",u&&"ring-2 ring-primary/20",!u&&"cursor-grab hover:shadow-md hover:border-primary/30",u&&"cursor-grabbing",o),...d,...x,children:r.jsx("div",{className:"min-w-0",children:n})})});function Q({column:s,items:t,renderItem:n,renderColumnHeader:o,columnClassName:d,itemClassName:x}){const{setNodeRef:b,isOver:C}=e.useDroppable({id:`column-${s.id}`,data:{type:"column",columnId:s.id}});return r.jsxs("div",{ref:b,className:k.cn("flex flex-col min-w-[280px] w-[280px] bg-muted/30 border border-border/50 rounded-xl p-3 transition-colors duration-200",C&&"ring-2 ring-primary/30 bg-primary/5",d),children:[r.jsxs("div",{className:"flex items-center justify-between mb-3 px-1",children:[o?o(s):r.jsx("h3",{className:"font-semibold text-sm text-foreground",children:s.title}),r.jsx("span",{className:"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm",children:t.length})]}),r.jsx(e.SortableContext,{items:t.map(m=>m.id),strategy:e.verticalListSortingStrategy,children:r.jsx("div",{className:"flex flex-col gap-2 min-h-[100px] flex-1",children:t.map(m=>r.jsx(J,{id:m.id,className:x,children:n(m)},m.id))})})]})}const R=s=>{const n=e.pointerWithin(s).filter(d=>!String(d.id).startsWith("column-"));return n.length>0?n:e.rectIntersection(s)},U={sideEffects:e.defaultDropAnimationSideEffects({styles:{active:{opacity:"0.5"}}})};function H({columns:s,items:t,onItemMove:n,onReorder:o,renderItem:d,renderColumnHeader:x,className:b,columnClassName:C,itemClassName:m}){const[u,h]=l.useState(null),f=l.useRef(null),E=e.useSensors(e.useSensor(e.PointerSensor,{activationConstraint:{distance:5}}),e.useSensor(e.KeyboardSensor,{coordinateGetter:e.sortableKeyboardCoordinates})),A=l.useCallback(i=>t.filter(a=>a.columnId===i),[t]),v=l.useCallback(i=>{const a=t.find(c=>c.id===i);return a==null?void 0:a.columnId},[t]),S=l.useCallback(i=>{const a=String(i);return a.startsWith("column-")?a.replace("column-",""):v(i)},[v]),y=l.useCallback(i=>{h(i.active.id),f.current=null},[]),I=l.useCallback(i=>{const{active:a,over:c}=i;if(!c)return;const p=v(a.id),N=S(c.id);if(!p||!N||p===N||f.current===c.id)return;f.current=c.id;const O=A(N),w=String(c.id);let K;if(w.startsWith("column-"))K=O.length;else{const L=O.findIndex(M=>M.id===c.id);K=L>=0?L:O.length}n(a.id,p,N,K)},[v,S,A,n]),g=l.useCallback(i=>{const{active:a,over:c}=i;if(!c){h(null),f.current=null;return}const p=v(a.id),N=String(c.id);let O;if(N.startsWith("column-")?O=N.replace("column-",""):O=v(c.id),!p){h(null),f.current=null;return}if(p===O&&a.id!==c.id&&o&&!N.startsWith("column-")){const w=A(p),K=w.findIndex(M=>M.id===a.id),L=w.findIndex(M=>M.id===c.id);K!==-1&&L!==-1&&o(p,e.arrayMove(w,K,L))}h(null),f.current=null},[v,A,o]),j=l.useCallback(()=>{h(null),f.current=null},[]),D=l.useMemo(()=>t.find(i=>i.id===u),[u,t]);return r.jsxs(e.DndContext,{sensors:E,collisionDetection:R,onDragStart:y,onDragOver:I,onDragEnd:g,onDragCancel:j,children:[r.jsx("div",{className:k.cn("flex gap-4 overflow-x-auto p-1",b),children:s.map(i=>{const a=A(i.id);return r.jsx(Q,{column:i,items:a,renderItem:d,renderColumnHeader:x,columnClassName:C,itemClassName:m},i.id)})}),r.jsx(e.DragOverlay,{dropAnimation:U,modifiers:[F,T],children:D?r.jsx("div",{className:"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing",children:r.jsx("div",{className:"min-w-0",children:d(D)})}):null})]})}const ee=l.memo(function({node:t,depth:n,expanded:o,onToggle:d,renderNode:x}){const{attributes:b,listeners:C,setNodeRef:m,transform:u,transition:h,isDragging:f}=e.useSortable({id:t.id}),E=l.useMemo(()=>({transform:e.CSS.Transform.toString(u),transition:h,paddingLeft:`${n*20+8}px`,opacity:f?.5:1}),[u,h,n,f]),A=t.children&&t.children.length>0,v=t.isFolder||A,S=l.useCallback(y=>{y.stopPropagation(),d()},[d]);return r.jsxs("div",{ref:m,style:E,className:k.cn("flex items-center gap-2 py-2 pr-3 rounded-lg touch-none select-none",f&&"bg-muted ring-1 ring-primary/20",!f&&"cursor-grab hover:bg-muted/60",f&&"cursor-grabbing"),...b,...C,children:[v?r.jsx("button",{type:"button",onClick:S,className:"flex-shrink-0 p-1 hover:bg-muted rounded-md transition-colors duration-200",children:r.jsx($.ChevronRight,{className:k.cn("h-4 w-4 text-muted-foreground transition-transform duration-200",o&&"rotate-90")})}):r.jsx("span",{className:"w-6"}),r.jsx("span",{className:k.cn("flex-shrink-0",v?"text-primary/80":"text-muted-foreground"),children:v?r.jsx(B,{className:"h-4 w-4"}):r.jsx(q.File,{className:"h-4 w-4"})}),r.jsx("span",{className:"flex-1 truncate text-sm text-foreground",children:x?x(t):t.label})]})});function W(s,t,n=0){const o=[];for(const d of s)o.push({node:d,depth:n}),d.children&&t.has(d.id)&&o.push(...W(d.children,t,n+1));return o}const te={sideEffects:e.defaultDropAnimationSideEffects({styles:{active:{opacity:"0.5"}}})};function ne({data:s,onMove:t,onToggle:n,renderNode:o,className:d,defaultExpanded:x=new Set}){const[b,C]=l.useState(x),[m,u]=l.useState(null),h=e.useSensors(e.useSensor(e.PointerSensor,{activationConstraint:{distance:5}}),e.useSensor(e.KeyboardSensor,{coordinateGetter:e.sortableKeyboardCoordinates})),f=l.useMemo(()=>W(s,b),[s,b]),E=l.useCallback(g=>{C(j=>{const D=new Set(j),i=D.has(g);return i?D.delete(g):D.add(g),n==null||n(g,!i),D})},[n]),A=l.useCallback(g=>{u(g.active.id)},[]),v=l.useCallback(g=>{const{active:j,over:D}=g;if(D&&j.id!==D.id){const i=f.findIndex(c=>c.node.id===j.id),a=f.findIndex(c=>c.node.id===D.id);i!==-1&&a!==-1&&(t==null||t(j.id,null,a))}u(null)},[f,t]),S=l.useCallback(()=>{u(null)},[]),y=l.useMemo(()=>{var g;return(g=f.find(j=>j.node.id===m))==null?void 0:g.node},[m,f]),I=l.useMemo(()=>f.map(g=>g.node.id),[f]);return r.jsxs(e.DndContext,{sensors:h,collisionDetection:e.closestCenter,onDragStart:A,onDragEnd:v,onDragCancel:S,children:[r.jsx(e.SortableContext,{items:I,strategy:e.verticalListSortingStrategy,children:r.jsx("div",{className:k.cn("border rounded-xl p-3 bg-card shadow-sm",d),children:f.map(({node:g,depth:j})=>r.jsx(ee,{node:g,depth:j,expanded:b.has(g.id),onToggle:()=>E(g.id),renderNode:o},g.id))})}),r.jsx(e.DragOverlay,{dropAnimation:te,modifiers:[F,T],children:y?r.jsxs("div",{className:"flex items-center gap-2 py-2 px-3 rounded-lg bg-card border shadow-2xl ring-2 ring-primary/30 cursor-grabbing",children:[r.jsx("span",{className:k.cn("flex-shrink-0",y.isFolder||y.children&&y.children.length>0?"text-primary/80":"text-muted-foreground"),children:y.isFolder||y.children&&y.children.length>0?r.jsx(B,{className:"h-4 w-4"}):r.jsx(q.File,{className:"h-4 w-4"})}),r.jsx("span",{className:"text-sm text-foreground",children:o?o(y):y.label})]}):null})]})}function re({id:s,children:t,className:n,isEmpty:o}){const{setNodeRef:d,isOver:x}=e.useDroppable({id:s});return r.jsx("div",{ref:d,className:k.cn("min-h-[100px] rounded-xl transition-colors duration-200",x&&"bg-primary/5 ring-2 ring-primary/30",o&&"border-2 border-dashed border-muted-foreground/30",n),children:t})}const se=l.memo(function({id:t,children:n,className:o}){const{attributes:d,listeners:x,setNodeRef:b,transform:C,transition:m,isDragging:u}=e.useSortable({id:t}),h=l.useMemo(()=>({transform:e.CSS.Transform.toString(C),transition:m,opacity:u?.5:1}),[C,m,u]);return r.jsx("div",{ref:b,style:h,className:k.cn("rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none",u&&"ring-2 ring-primary/20",!u&&"cursor-grab hover:shadow-md hover:border-primary/30",u&&"cursor-grabbing",o),...d,...x,children:r.jsx("div",{className:"min-w-0",children:n})})}),oe={horizontal:"flex gap-4 overflow-x-auto",vertical:"flex flex-col gap-4",grid:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},ie={sideEffects:e.defaultDropAnimationSideEffects({styles:{active:{opacity:"0.5"}}})};function ae({containers:s,items:t,onItemMove:n,onReorder:o,renderItem:d,renderContainerHeader:x,renderEmptyContainer:b,className:C,containerClassName:m,itemClassName:u,layout:h="horizontal"}){const[f,E]=l.useState(null),A=e.useSensors(e.useSensor(e.PointerSensor,{activationConstraint:{distance:5}}),e.useSensor(e.KeyboardSensor,{coordinateGetter:e.sortableKeyboardCoordinates})),v=l.useCallback(i=>t.filter(a=>a.containerId===i),[t]),S=l.useCallback(i=>{const a=t.find(c=>c.id===i);return a==null?void 0:a.containerId},[t]),y=l.useCallback(i=>{E(i.active.id)},[]),I=l.useCallback(i=>{var K;const{active:a,over:c}=i;if(!c)return;const p=S(a.id);let N=S(c.id);if(N||(N=(K=s.find(L=>L.id===c.id))==null?void 0:K.id),!p||!N||p===N)return;const O=v(N),w=O.findIndex(L=>L.id===c.id);n(a.id,p,N,w>=0?w:O.length)},[s,S,v,n]),g=l.useCallback(i=>{var O;const{active:a,over:c}=i;if(!c){E(null);return}const p=S(a.id);if(!p){E(null);return}const N=S(c.id)||((O=s.find(w=>w.id===c.id))==null?void 0:O.id);if(p===N&&a.id!==c.id&&o){const w=v(p),K=w.findIndex(M=>M.id===a.id),L=w.findIndex(M=>M.id===c.id);K!==-1&&L!==-1&&o(p,e.arrayMove(w,K,L))}E(null)},[s,S,v,o]),j=l.useCallback(()=>{E(null)},[]),D=l.useMemo(()=>t.find(i=>i.id===f),[f,t]);return r.jsxs(e.DndContext,{sensors:A,collisionDetection:e.closestCenter,onDragStart:y,onDragOver:I,onDragEnd:g,onDragCancel:j,children:[r.jsx("div",{className:k.cn(oe[h],C),children:s.map(i=>{const a=v(i.id),c=a.length===0;return r.jsxs("div",{className:k.cn("flex flex-col rounded-xl border border-border/50 bg-muted/20 p-4 transition-colors duration-200",h==="horizontal"&&"min-w-[280px] w-[280px]",m),children:[r.jsx("div",{className:"mb-3",children:x?x(i,a.length):r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsx("h3",{className:"font-semibold text-sm text-foreground",children:i.title}),r.jsx("span",{className:"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm",children:a.length})]})}),r.jsx(re,{id:i.id,isEmpty:c,className:"flex-1",children:r.jsx(e.SortableContext,{items:a.map(p=>p.id),strategy:e.verticalListSortingStrategy,children:r.jsxs("div",{className:"flex flex-col gap-2",children:[a.map(p=>r.jsx(se,{id:p.id,className:u,children:d(p)},p.id)),c&&b&&r.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-sm",children:b(i)})]})})})]},i.id)})}),r.jsx(e.DragOverlay,{dropAnimation:ie,modifiers:[F,T],children:D?r.jsx("div",{className:"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing",children:r.jsx("div",{className:"min-w-0",children:d(D)})}):null})]})}exports.KanbanBoard=H;exports.MultiContainer=ae;exports.SortableItem=P;exports.SortableList=Z;exports.TreeView=ne;
|
|
7
|
-
//# sourceMappingURL=multi-container-BdNbgtPZ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-container-BdNbgtPZ.cjs","sources":["../node_modules/lucide-react/dist/esm/icons/folder.js","../src/components/dnd/sortable-item.tsx","../node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js","../src/components/dnd/sortable-list.tsx","../src/components/dnd/kanban-board.tsx","../src/components/dnd/tree-view.tsx","../src/components/dnd/multi-container.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Folder = createLucideIcon(\"Folder\", [\n [\n \"path\",\n {\n d: \"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\",\n key: \"1kt360\"\n }\n ]\n]);\n\nexport { Folder as default };\n//# sourceMappingURL=folder.js.map\n","import * as React from 'react'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@/utils/cn'\n\nexport interface SortableItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n disabled?: boolean\n}\n\nexport function SortableItem({\n id,\n children,\n className,\n disabled = false,\n}: SortableItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'z-50 ring-2 ring-primary/30',\n disabled && 'opacity-50 cursor-not-allowed',\n !disabled && !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n !disabled && isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n}\n","import { getEventCoordinates } from '@dnd-kit/utilities';\n\nfunction createSnapModifier(gridSize) {\n return _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: Math.ceil(transform.x / gridSize) * gridSize,\n y: Math.ceil(transform.y / gridSize) * gridSize\n };\n };\n}\n\nconst restrictToHorizontalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n y: 0\n };\n};\n\nfunction restrictToBoundingRect(transform, rect, boundingRect) {\n const value = { ...transform\n };\n\n if (rect.top + transform.y <= boundingRect.top) {\n value.y = boundingRect.top - rect.top;\n } else if (rect.bottom + transform.y >= boundingRect.top + boundingRect.height) {\n value.y = boundingRect.top + boundingRect.height - rect.bottom;\n }\n\n if (rect.left + transform.x <= boundingRect.left) {\n value.x = boundingRect.left - rect.left;\n } else if (rect.right + transform.x >= boundingRect.left + boundingRect.width) {\n value.x = boundingRect.left + boundingRect.width - rect.right;\n }\n\n return value;\n}\n\nconst restrictToParentElement = _ref => {\n let {\n containerNodeRect,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (!draggingNodeRect || !containerNodeRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, containerNodeRect);\n};\n\nconst restrictToFirstScrollableAncestor = _ref => {\n let {\n draggingNodeRect,\n transform,\n scrollableAncestorRects\n } = _ref;\n const firstScrollableAncestorRect = scrollableAncestorRects[0];\n\n if (!draggingNodeRect || !firstScrollableAncestorRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, firstScrollableAncestorRect);\n};\n\nconst restrictToVerticalAxis = _ref => {\n let {\n transform\n } = _ref;\n return { ...transform,\n x: 0\n };\n};\n\nconst restrictToWindowEdges = _ref => {\n let {\n transform,\n draggingNodeRect,\n windowRect\n } = _ref;\n\n if (!draggingNodeRect || !windowRect) {\n return transform;\n }\n\n return restrictToBoundingRect(transform, draggingNodeRect, windowRect);\n};\n\nconst snapCenterToCursor = _ref => {\n let {\n activatorEvent,\n draggingNodeRect,\n transform\n } = _ref;\n\n if (draggingNodeRect && activatorEvent) {\n const activatorCoordinates = getEventCoordinates(activatorEvent);\n\n if (!activatorCoordinates) {\n return transform;\n }\n\n const offsetX = activatorCoordinates.x - draggingNodeRect.left;\n const offsetY = activatorCoordinates.y - draggingNodeRect.top;\n return { ...transform,\n x: transform.x + offsetX - draggingNodeRect.width / 2,\n y: transform.y + offsetY - draggingNodeRect.height / 2\n };\n }\n\n return transform;\n};\n\nexport { createSnapModifier, restrictToFirstScrollableAncestor, restrictToHorizontalAxis, restrictToParentElement, restrictToVerticalAxis, restrictToWindowEdges, snapCenterToCursor };\n//# sourceMappingURL=modifiers.esm.js.map\n","import * as React from 'react'\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n horizontalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\nimport { SortableItem } from './sortable-item'\n\nexport interface SortableListItem {\n id: string | number\n [key: string]: unknown\n}\n\nexport interface SortableListProps<T extends SortableListItem> {\n items: T[]\n onReorder: (items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderOverlay?: (item: T) => React.ReactNode\n direction?: 'vertical' | 'horizontal'\n className?: string\n itemClassName?: string\n disabled?: boolean\n gap?: 'sm' | 'md' | 'lg'\n}\n\nconst gapClasses = {\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-4',\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function SortableList<T extends SortableListItem>({\n items,\n onReorder,\n renderItem,\n renderOverlay,\n direction = 'vertical',\n className,\n itemClassName,\n disabled = false,\n gap = 'md',\n}: SortableListProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n const oldIndex = items.findIndex((item) => item.id === active.id)\n const newIndex = items.findIndex((item) => item.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(arrayMove(items, oldIndex, newIndex))\n }\n }\n\n setActiveId(null)\n }, [items, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n const itemIds = React.useMemo(() => items.map((item) => item.id), [items])\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext\n items={itemIds}\n strategy={direction === 'vertical' ? verticalListSortingStrategy : horizontalListSortingStrategy}\n >\n <div\n className={cn(\n 'flex',\n direction === 'vertical' ? 'flex-col' : 'flex-row flex-wrap',\n gapClasses[gap],\n className\n )}\n >\n {items.map((item) => (\n <SortableItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n disabled={disabled}\n >\n {renderItem(item)}\n </SortableItem>\n ))}\n </div>\n </SortableContext>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n {renderOverlay ? renderOverlay(activeItem) : renderItem(activeItem)}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n useSensor,\n useSensors,\n useDroppable,\n pointerWithin,\n rectIntersection,\n CollisionDetection,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\n\nexport interface KanbanItem {\n id: string | number\n columnId: string | number\n [key: string]: unknown\n}\n\nexport interface KanbanColumn {\n id: string | number\n title: string\n}\n\nexport interface KanbanBoardProps<T extends KanbanItem> {\n columns: KanbanColumn[]\n items: T[]\n onItemMove: (itemId: UniqueIdentifier, fromColumnId: UniqueIdentifier, toColumnId: UniqueIdentifier, newIndex: number) => void\n onReorder?: (columnId: UniqueIdentifier, items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderColumnHeader?: (column: KanbanColumn) => React.ReactNode\n className?: string\n columnClassName?: string\n itemClassName?: string\n}\n\ninterface SortableKanbanItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n}\n\nconst SortableKanbanItem = React.memo(function SortableKanbanItem({\n id,\n children,\n className\n}: SortableKanbanItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'ring-2 ring-primary/20',\n !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n})\n\ninterface DroppableColumnProps<T extends KanbanItem> {\n column: KanbanColumn\n items: T[]\n renderItem: (item: T) => React.ReactNode\n renderColumnHeader?: (column: KanbanColumn) => React.ReactNode\n columnClassName?: string\n itemClassName?: string\n}\n\nfunction DroppableColumn<T extends KanbanItem>({\n column,\n items,\n renderItem,\n renderColumnHeader,\n columnClassName,\n itemClassName,\n}: DroppableColumnProps<T>) {\n const { setNodeRef, isOver } = useDroppable({\n id: `column-${column.id}`,\n data: {\n type: 'column',\n columnId: column.id,\n },\n })\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n 'flex flex-col min-w-[280px] w-[280px] bg-muted/30 border border-border/50 rounded-xl p-3 transition-colors duration-200',\n isOver && 'ring-2 ring-primary/30 bg-primary/5',\n columnClassName\n )}\n >\n <div className=\"flex items-center justify-between mb-3 px-1\">\n {renderColumnHeader ? (\n renderColumnHeader(column)\n ) : (\n <h3 className=\"font-semibold text-sm text-foreground\">{column.title}</h3>\n )}\n <span className=\"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm\">\n {items.length}\n </span>\n </div>\n <SortableContext\n items={items.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2 min-h-[100px] flex-1\">\n {items.map((item) => (\n <SortableKanbanItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n >\n {renderItem(item)}\n </SortableKanbanItem>\n ))}\n </div>\n </SortableContext>\n </div>\n )\n}\n\n// Custom collision detection that prioritizes items over columns\nconst customCollisionDetection: CollisionDetection = (args) => {\n const pointerCollisions = pointerWithin(args)\n const itemCollisions = pointerCollisions.filter(\n (collision) => !String(collision.id).startsWith('column-')\n )\n\n if (itemCollisions.length > 0) {\n return itemCollisions\n }\n\n const rectCollisions = rectIntersection(args)\n return rectCollisions\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function KanbanBoard<T extends KanbanItem>({\n columns,\n items,\n onItemMove,\n onReorder,\n renderItem,\n renderColumnHeader,\n className,\n columnClassName,\n itemClassName,\n}: KanbanBoardProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n const lastOverId = React.useRef<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const getItemsByColumn = React.useCallback(\n (columnId: UniqueIdentifier) => items.filter((item) => item.columnId === columnId),\n [items]\n )\n\n const findColumnByItemId = React.useCallback(\n (itemId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const item = items.find((i) => i.id === itemId)\n return item?.columnId\n },\n [items]\n )\n\n const extractColumnId = React.useCallback(\n (overId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const overIdStr = String(overId)\n if (overIdStr.startsWith('column-')) {\n return overIdStr.replace('column-', '')\n }\n return findColumnByItemId(overId)\n },\n [findColumnByItemId]\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n lastOverId.current = null\n }, [])\n\n const handleDragOver = React.useCallback((event: DragOverEvent) => {\n const { active, over } = event\n if (!over) return\n\n const activeColumnId = findColumnByItemId(active.id)\n const overColumnId = extractColumnId(over.id)\n\n if (!activeColumnId || !overColumnId) return\n if (activeColumnId === overColumnId) return\n\n if (lastOverId.current === over.id) return\n lastOverId.current = over.id\n\n const overColumnItems = getItemsByColumn(overColumnId)\n const overIdStr = String(over.id)\n\n let newIndex: number\n if (overIdStr.startsWith('column-')) {\n newIndex = overColumnItems.length\n } else {\n const overIndex = overColumnItems.findIndex((item) => item.id === over.id)\n newIndex = overIndex >= 0 ? overIndex : overColumnItems.length\n }\n\n onItemMove(active.id, activeColumnId, overColumnId, newIndex)\n }, [findColumnByItemId, extractColumnId, getItemsByColumn, onItemMove])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (!over) {\n setActiveId(null)\n lastOverId.current = null\n return\n }\n\n const activeColumnId = findColumnByItemId(active.id)\n const overIdStr = String(over.id)\n\n let overColumnId: UniqueIdentifier | undefined\n if (overIdStr.startsWith('column-')) {\n overColumnId = overIdStr.replace('column-', '')\n } else {\n overColumnId = findColumnByItemId(over.id)\n }\n\n if (!activeColumnId) {\n setActiveId(null)\n lastOverId.current = null\n return\n }\n\n if (activeColumnId === overColumnId && active.id !== over.id && onReorder && !overIdStr.startsWith('column-')) {\n const columnItems = getItemsByColumn(activeColumnId)\n const oldIndex = columnItems.findIndex((item) => item.id === active.id)\n const newIndex = columnItems.findIndex((item) => item.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(activeColumnId, arrayMove(columnItems, oldIndex, newIndex) as T[])\n }\n }\n\n setActiveId(null)\n lastOverId.current = null\n }, [findColumnByItemId, getItemsByColumn, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n lastOverId.current = null\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={customCollisionDetection}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <div className={cn('flex gap-4 overflow-x-auto p-1', className)}>\n {columns.map((column) => {\n const columnItems = getItemsByColumn(column.id)\n return (\n <DroppableColumn\n key={column.id}\n column={column}\n items={columnItems}\n renderItem={renderItem}\n renderColumnHeader={renderColumnHeader}\n columnClassName={columnClassName}\n itemClassName={itemClassName}\n />\n )\n })}\n </div>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <div className=\"min-w-0\">{renderItem(activeItem)}</div>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n closestCenter,\n useSensor,\n useSensors,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\nimport { ChevronRight, Folder, File } from 'lucide-react'\n\nexport interface TreeNode {\n id: string | number\n label: string\n children?: TreeNode[]\n isFolder?: boolean\n [key: string]: unknown\n}\n\nexport interface TreeViewProps {\n data: TreeNode[]\n onMove?: (nodeId: UniqueIdentifier, newParentId: UniqueIdentifier | null, index: number) => void\n onToggle?: (nodeId: UniqueIdentifier, expanded: boolean) => void\n renderNode?: (node: TreeNode) => React.ReactNode\n className?: string\n defaultExpanded?: Set<UniqueIdentifier>\n}\n\ninterface TreeNodeItemProps {\n node: TreeNode\n depth: number\n expanded: boolean\n onToggle: () => void\n renderNode?: (node: TreeNode) => React.ReactNode\n}\n\nconst TreeNodeItem = React.memo(function TreeNodeItem({\n node,\n depth,\n expanded,\n onToggle,\n renderNode,\n}: TreeNodeItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: node.id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n paddingLeft: `${depth * 20 + 8}px`,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, depth, isDragging])\n\n const hasChildren = node.children && node.children.length > 0\n const isFolder = node.isFolder || hasChildren\n\n const handleToggleClick = React.useCallback((e: React.MouseEvent) => {\n e.stopPropagation()\n onToggle()\n }, [onToggle])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'flex items-center gap-2 py-2 pr-3 rounded-lg touch-none select-none',\n isDragging && 'bg-muted ring-1 ring-primary/20',\n !isDragging && 'cursor-grab hover:bg-muted/60',\n isDragging && 'cursor-grabbing'\n )}\n {...attributes}\n {...listeners}\n >\n {isFolder ? (\n <button\n type=\"button\"\n onClick={handleToggleClick}\n className=\"flex-shrink-0 p-1 hover:bg-muted rounded-md transition-colors duration-200\"\n >\n <ChevronRight\n className={cn(\n 'h-4 w-4 text-muted-foreground transition-transform duration-200',\n expanded && 'rotate-90'\n )}\n />\n </button>\n ) : (\n <span className=\"w-6\" />\n )}\n\n <span className={cn(\n 'flex-shrink-0',\n isFolder ? 'text-primary/80' : 'text-muted-foreground'\n )}>\n {isFolder ? <Folder className=\"h-4 w-4\" /> : <File className=\"h-4 w-4\" />}\n </span>\n\n <span className=\"flex-1 truncate text-sm text-foreground\">\n {renderNode ? renderNode(node) : node.label}\n </span>\n </div>\n )\n})\n\nfunction flattenTree(\n nodes: TreeNode[],\n expandedIds: Set<UniqueIdentifier>,\n depth = 0\n): Array<{ node: TreeNode; depth: number }> {\n const result: Array<{ node: TreeNode; depth: number }> = []\n\n for (const node of nodes) {\n result.push({ node, depth })\n if (node.children && expandedIds.has(node.id)) {\n result.push(...flattenTree(node.children, expandedIds, depth + 1))\n }\n }\n\n return result\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function TreeView({\n data,\n onMove,\n onToggle,\n renderNode,\n className,\n defaultExpanded = new Set(),\n}: TreeViewProps) {\n const [expandedIds, setExpandedIds] = React.useState<Set<UniqueIdentifier>>(defaultExpanded)\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const flattenedItems = React.useMemo(\n () => flattenTree(data, expandedIds),\n [data, expandedIds]\n )\n\n const handleToggle = React.useCallback((nodeId: UniqueIdentifier) => {\n setExpandedIds(prev => {\n const newExpanded = new Set(prev)\n const wasExpanded = newExpanded.has(nodeId)\n\n if (wasExpanded) {\n newExpanded.delete(nodeId)\n } else {\n newExpanded.add(nodeId)\n }\n\n onToggle?.(nodeId, !wasExpanded)\n return newExpanded\n })\n }, [onToggle])\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n const activeIndex = flattenedItems.findIndex((item) => item.node.id === active.id)\n const overIndex = flattenedItems.findIndex((item) => item.node.id === over.id)\n\n if (activeIndex !== -1 && overIndex !== -1) {\n onMove?.(active.id, null, overIndex)\n }\n }\n\n setActiveId(null)\n }, [flattenedItems, onMove])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeNode = React.useMemo(\n () => flattenedItems.find((item) => item.node.id === activeId)?.node,\n [activeId, flattenedItems]\n )\n\n const itemIds = React.useMemo(\n () => flattenedItems.map((item) => item.node.id),\n [flattenedItems]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext\n items={itemIds}\n strategy={verticalListSortingStrategy}\n >\n <div className={cn('border rounded-xl p-3 bg-card shadow-sm', className)}>\n {flattenedItems.map(({ node, depth }) => (\n <TreeNodeItem\n key={node.id}\n node={node}\n depth={depth}\n expanded={expandedIds.has(node.id)}\n onToggle={() => handleToggle(node.id)}\n renderNode={renderNode}\n />\n ))}\n </div>\n </SortableContext>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeNode ? (\n <div className=\"flex items-center gap-2 py-2 px-3 rounded-lg bg-card border shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <span className={cn(\n 'flex-shrink-0',\n activeNode.isFolder || (activeNode.children && activeNode.children.length > 0)\n ? 'text-primary/80'\n : 'text-muted-foreground'\n )}>\n {activeNode.isFolder || (activeNode.children && activeNode.children.length > 0) ? (\n <Folder className=\"h-4 w-4\" />\n ) : (\n <File className=\"h-4 w-4\" />\n )}\n </span>\n <span className=\"text-sm text-foreground\">\n {renderNode ? renderNode(activeNode) : activeNode.label}\n </span>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n","import * as React from 'react'\nimport {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragOverlay,\n DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n UniqueIdentifier,\n closestCenter,\n useSensor,\n useSensors,\n useDroppable,\n defaultDropAnimationSideEffects,\n DropAnimation,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { snapCenterToCursor, restrictToWindowEdges } from '@dnd-kit/modifiers'\nimport { cn } from '@/utils/cn'\n\nexport interface ContainerItem {\n id: string | number\n containerId: string | number\n [key: string]: unknown\n}\n\nexport interface Container {\n id: string | number\n title: string\n}\n\nexport interface MultiContainerProps<T extends ContainerItem> {\n containers: Container[]\n items: T[]\n onItemMove: (\n itemId: UniqueIdentifier,\n fromContainerId: UniqueIdentifier,\n toContainerId: UniqueIdentifier,\n newIndex: number\n ) => void\n onReorder?: (containerId: UniqueIdentifier, items: T[]) => void\n renderItem: (item: T) => React.ReactNode\n renderContainerHeader?: (container: Container, itemCount: number) => React.ReactNode\n renderEmptyContainer?: (container: Container) => React.ReactNode\n className?: string\n containerClassName?: string\n itemClassName?: string\n layout?: 'horizontal' | 'vertical' | 'grid'\n}\n\ninterface DroppableContainerProps {\n id: UniqueIdentifier\n children: React.ReactNode\n className?: string\n isEmpty?: boolean\n}\n\nfunction DroppableContainer({ id, children, className, isEmpty }: DroppableContainerProps) {\n const { setNodeRef, isOver } = useDroppable({ id })\n\n return (\n <div\n ref={setNodeRef}\n className={cn(\n 'min-h-[100px] rounded-xl transition-colors duration-200',\n isOver && 'bg-primary/5 ring-2 ring-primary/30',\n isEmpty && 'border-2 border-dashed border-muted-foreground/30',\n className\n )}\n >\n {children}\n </div>\n )\n}\n\ninterface SortableContainerItemProps {\n id: string | number\n children: React.ReactNode\n className?: string\n}\n\nconst SortableContainerItem = React.memo(function SortableContainerItem({\n id,\n children,\n className\n}: SortableContainerItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = React.useMemo(() => ({\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n }), [transform, transition, isDragging])\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cn(\n 'rounded-xl border bg-card text-card-foreground p-3 shadow-sm touch-none select-none',\n isDragging && 'ring-2 ring-primary/20',\n !isDragging && 'cursor-grab hover:shadow-md hover:border-primary/30',\n isDragging && 'cursor-grabbing',\n className\n )}\n {...attributes}\n {...listeners}\n >\n <div className=\"min-w-0\">{children}</div>\n </div>\n )\n})\n\nconst layoutClasses = {\n horizontal: 'flex gap-4 overflow-x-auto',\n vertical: 'flex flex-col gap-4',\n grid: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4',\n}\n\nconst dropAnimationConfig: DropAnimation = {\n sideEffects: defaultDropAnimationSideEffects({\n styles: {\n active: {\n opacity: '0.5',\n },\n },\n }),\n}\n\nexport function MultiContainer<T extends ContainerItem>({\n containers,\n items,\n onItemMove,\n onReorder,\n renderItem,\n renderContainerHeader,\n renderEmptyContainer,\n className,\n containerClassName,\n itemClassName,\n layout = 'horizontal',\n}: MultiContainerProps<T>) {\n const [activeId, setActiveId] = React.useState<UniqueIdentifier | null>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const getItemsByContainer = React.useCallback(\n (containerId: UniqueIdentifier) =>\n items.filter((item) => item.containerId === containerId),\n [items]\n )\n\n const findContainerByItemId = React.useCallback(\n (itemId: UniqueIdentifier): UniqueIdentifier | undefined => {\n const item = items.find((i) => i.id === itemId)\n return item?.containerId\n },\n [items]\n )\n\n const handleDragStart = React.useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id)\n }, [])\n\n const handleDragOver = React.useCallback((event: DragOverEvent) => {\n const { active, over } = event\n if (!over) return\n\n const activeContainerId = findContainerByItemId(active.id)\n let overContainerId = findContainerByItemId(over.id)\n\n if (!overContainerId) {\n overContainerId = containers.find((c) => c.id === over.id)?.id\n }\n\n if (!activeContainerId || !overContainerId) return\n if (activeContainerId === overContainerId) return\n\n const overContainerItems = getItemsByContainer(overContainerId)\n const overIndex = overContainerItems.findIndex((item) => item.id === over.id)\n\n onItemMove(\n active.id,\n activeContainerId,\n overContainerId,\n overIndex >= 0 ? overIndex : overContainerItems.length\n )\n }, [containers, findContainerByItemId, getItemsByContainer, onItemMove])\n\n const handleDragEnd = React.useCallback((event: DragEndEvent) => {\n const { active, over } = event\n\n if (!over) {\n setActiveId(null)\n return\n }\n\n const activeContainerId = findContainerByItemId(active.id)\n if (!activeContainerId) {\n setActiveId(null)\n return\n }\n\n const overContainerId = findContainerByItemId(over.id) ||\n containers.find((c) => c.id === over.id)?.id\n\n if (activeContainerId === overContainerId && active.id !== over.id && onReorder) {\n const containerItems = getItemsByContainer(activeContainerId)\n const oldIndex = containerItems.findIndex((item) => item.id === active.id)\n const newIndex = containerItems.findIndex((item) => item.id === over.id)\n\n if (oldIndex !== -1 && newIndex !== -1) {\n onReorder(activeContainerId, arrayMove(containerItems, oldIndex, newIndex) as T[])\n }\n }\n\n setActiveId(null)\n }, [containers, findContainerByItemId, getItemsByContainer, onReorder])\n\n const handleDragCancel = React.useCallback(() => {\n setActiveId(null)\n }, [])\n\n const activeItem = React.useMemo(\n () => items.find((item) => item.id === activeId),\n [activeId, items]\n )\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <div className={cn(layoutClasses[layout], className)}>\n {containers.map((container) => {\n const containerItems = getItemsByContainer(container.id)\n const isEmpty = containerItems.length === 0\n\n return (\n <div\n key={container.id}\n className={cn(\n 'flex flex-col rounded-xl border border-border/50 bg-muted/20 p-4 transition-colors duration-200',\n layout === 'horizontal' && 'min-w-[280px] w-[280px]',\n containerClassName\n )}\n >\n <div className=\"mb-3\">\n {renderContainerHeader ? (\n renderContainerHeader(container, containerItems.length)\n ) : (\n <div className=\"flex items-center justify-between\">\n <h3 className=\"font-semibold text-sm text-foreground\">{container.title}</h3>\n <span className=\"text-xs font-medium text-muted-foreground bg-background border px-2 py-0.5 rounded-full shadow-sm\">\n {containerItems.length}\n </span>\n </div>\n )}\n </div>\n\n <DroppableContainer\n id={container.id}\n isEmpty={isEmpty}\n className=\"flex-1\"\n >\n <SortableContext\n items={containerItems.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2\">\n {containerItems.map((item) => (\n <SortableContainerItem\n key={item.id}\n id={item.id}\n className={itemClassName}\n >\n {renderItem(item)}\n </SortableContainerItem>\n ))}\n {isEmpty && renderEmptyContainer && (\n <div className=\"flex items-center justify-center py-8 text-muted-foreground text-sm\">\n {renderEmptyContainer(container)}\n </div>\n )}\n </div>\n </SortableContext>\n </DroppableContainer>\n </div>\n )\n })}\n </div>\n\n <DragOverlay dropAnimation={dropAnimationConfig} modifiers={[snapCenterToCursor, restrictToWindowEdges]}>\n {activeItem ? (\n <div className=\"rounded-xl border bg-card text-card-foreground p-3 shadow-2xl ring-2 ring-primary/30 cursor-grabbing\">\n <div className=\"min-w-0\">{renderItem(activeItem)}</div>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )\n}\n"],"names":["Folder","createLucideIcon","SortableItem","id","children","className","disabled","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","React","CSS","jsx","cn","restrictToBoundingRect","rect","boundingRect","value","restrictToWindowEdges","_ref","draggingNodeRect","windowRect","snapCenterToCursor","activatorEvent","activatorCoordinates","getEventCoordinates","offsetX","offsetY","gapClasses","dropAnimationConfig","defaultDropAnimationSideEffects","SortableList","items","onReorder","renderItem","renderOverlay","direction","itemClassName","gap","activeId","setActiveId","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragStart","event","handleDragEnd","active","over","oldIndex","item","newIndex","arrayMove","handleDragCancel","activeItem","itemIds","jsxs","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","horizontalListSortingStrategy","DragOverlay","SortableKanbanItem","DroppableColumn","column","renderColumnHeader","columnClassName","isOver","useDroppable","customCollisionDetection","args","itemCollisions","pointerWithin","collision","rectIntersection","KanbanBoard","columns","onItemMove","lastOverId","getItemsByColumn","columnId","findColumnByItemId","itemId","i","extractColumnId","overId","overIdStr","handleDragOver","activeColumnId","overColumnId","overColumnItems","overIndex","columnItems","TreeNodeItem","node","depth","expanded","onToggle","renderNode","hasChildren","isFolder","handleToggleClick","e","ChevronRight","File","flattenTree","nodes","expandedIds","result","TreeView","data","onMove","defaultExpanded","setExpandedIds","flattenedItems","handleToggle","nodeId","prev","newExpanded","wasExpanded","activeIndex","activeNode","_a","DroppableContainer","isEmpty","SortableContainerItem","layoutClasses","MultiContainer","containers","renderContainerHeader","renderEmptyContainer","containerClassName","layout","getItemsByContainer","containerId","findContainerByItemId","activeContainerId","overContainerId","c","overContainerItems","containerItems","container"],"mappings":"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","x_google_ignoreList":[0,2]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),be=require("react"),v=require("./index-D2U2F80P.cjs"),ge=require("./use-mobile-DY7TJ5lx.cjs"),W=require("./sheet-XtjvbEMq.cjs"),M=require("./sortable.esm-5DsiICDg.cjs"),k=require("./scroll-area-DzDnWIYJ.cjs"),D=require("./input-Cfr2WB-P.cjs"),E=require("./card-DISL3sPJ.cjs"),z=require("./checkbox-CL6u7vL6.cjs"),B=require("./use-formatters-CObUgipW.cjs"),O=require("./createLucideIcon-Cv8nC2E9.cjs"),je=require("./calendar-D3RWU0_G.cjs"),ye=require("./index-DG0KV-sw.cjs"),X=require("./plus-BsV82JJ5.cjs"),G=require("./ellipsis-DkM3GBF5.cjs");function Ne(n){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const a in n)if(a!=="default"){const o=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(r,a,o.get?o:{enumerable:!0,get:()=>n[a]})}}return r.default=n,Object.freeze(r)}const l=Ne(be);/**
|
|
2
|
-
* @license lucide-react v0.441.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ve=O.createLucideIcon("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/**
|
|
7
|
-
* @license lucide-react v0.441.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const we=O.createLucideIcon("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/**
|
|
12
|
-
* @license lucide-react v0.441.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const De=O.createLucideIcon("LayoutGrid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);/**
|
|
17
|
-
* @license lucide-react v0.441.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const ke=O.createLucideIcon("List",[["line",{x1:"8",x2:"21",y1:"6",y2:"6",key:"7ey8pc"}],["line",{x1:"8",x2:"21",y1:"12",y2:"12",key:"rjfblc"}],["line",{x1:"8",x2:"21",y1:"18",y2:"18",key:"c3b1m8"}],["line",{x1:"3",x2:"3.01",y1:"6",y2:"6",key:"1g7gq3"}],["line",{x1:"3",x2:"3.01",y1:"12",y2:"12",key:"1pjlvk"}],["line",{x1:"3",x2:"3.01",y1:"18",y2:"18",key:"28t2mc"}]]);/**
|
|
22
|
-
* @license lucide-react v0.441.0 - ISC
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the ISC license.
|
|
25
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const Se=O.createLucideIcon("Table2",[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]]),Y=l.forwardRef(({className:n,children:r,...a},o)=>e.jsx("div",{ref:o,className:v.cn("flex min-h-screen w-full flex-col bg-background",n),...a,children:r}));Y.displayName="AppShell";const Z=l.forwardRef(({className:n,...r},a)=>e.jsx("header",{ref:a,className:v.cn("sticky top-0 z-50 flex h-16 items-center gap-4 border-b bg-background px-4 md:px-6",n),...r}));Z.displayName="AppShellHeader";const ee=l.forwardRef(({className:n,...r},a)=>e.jsx("main",{ref:a,className:v.cn("flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6",n),...r}));ee.displayName="AppShellMain";const se=l.forwardRef(({className:n,...r},a)=>e.jsx("footer",{ref:a,className:v.cn("border-t bg-background px-4 py-6 md:px-6",n),...r}));se.displayName="AppShellFooter";const te=l.forwardRef(({className:n,heading:r,description:a,actions:o,children:c,...i},m)=>e.jsxs("div",{ref:m,className:v.cn("flex flex-col gap-4 md:flex-row md:items-center md:justify-between",n),...i,children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight md:text-3xl",children:r}),a&&e.jsx("p",{className:"text-muted-foreground",children:a})]}),o&&e.jsx("div",{className:"flex items-center gap-2",children:o}),c]}));te.displayName="PageHeader";const re=l.createContext(null);function V(){const n=l.useContext(re);if(!n)throw new Error("useDashboardLayout must be used within a DashboardLayout.");return n}const ae=l.forwardRef(({className:n,children:r,defaultSidebarOpen:a=!0,defaultSidebarCollapsed:o=!1,sidebarWidth:c="16rem",sidebarCollapsedWidth:i="4rem",...m},g)=>{const u=ge.useIsMobile(),[j,p]=l.useState(a),[b,y]=l.useState(o),f=l.useCallback(()=>{u?p(d=>!d):y(d=>!d)},[u]);l.useEffect(()=>{const d=x=>{x.key==="b"&&(x.metaKey||x.ctrlKey)&&(x.preventDefault(),f())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[f]);const w=l.useMemo(()=>({sidebarOpen:j,setSidebarOpen:p,sidebarCollapsed:b,setSidebarCollapsed:y,isMobile:u,toggleSidebar:f}),[j,b,u,f]);return e.jsx(re.Provider,{value:w,children:e.jsx("div",{ref:g,style:{"--sidebar-width":c,"--sidebar-collapsed-width":i},className:v.cn("flex min-h-screen w-full bg-background",n),...m,children:r})})});ae.displayName="DashboardLayout";const ne=l.forwardRef(({className:n,children:r,...a},o)=>{const{sidebarOpen:c,setSidebarOpen:i,sidebarCollapsed:m,isMobile:g}=V();return g?e.jsx(W.Sheet,{open:c,onOpenChange:i,children:e.jsx(W.SheetContent,{side:"left",className:"w-[var(--sidebar-width)] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",children:e.jsx("aside",{className:"flex h-full w-full flex-col",children:r})})}):e.jsx("aside",{ref:o,"data-collapsed":m,className:v.cn("fixed inset-y-0 left-0 z-30 flex h-screen flex-col border-r bg-sidebar text-sidebar-foreground transition-[width] duration-200 ease-in-out",m?"w-[var(--sidebar-collapsed-width)]":"w-[var(--sidebar-width)]",n),...a,children:r})});ne.displayName="DashboardSidebar";const le=l.forwardRef(({className:n,children:r,...a},o)=>{const{sidebarCollapsed:c,isMobile:i}=V();return e.jsx("div",{ref:o,className:v.cn("flex flex-1 flex-col transition-[margin-left] duration-200 ease-in-out",!i&&(c?"ml-[var(--sidebar-collapsed-width)]":"ml-[var(--sidebar-width)]"),n),...a,children:r})});le.displayName="DashboardContent";const oe=l.forwardRef(({className:n,children:r,...a},o)=>e.jsx("header",{ref:o,className:v.cn("sticky top-0 z-20 flex h-16 items-center gap-4 border-b bg-background px-4 md:px-6",n),...a,children:r}));oe.displayName="DashboardHeader";const ce=l.forwardRef(({className:n,children:r,...a},o)=>e.jsx("main",{ref:o,className:v.cn("flex-1 overflow-auto p-4 md:p-6",n),...a,children:r}));ce.displayName="DashboardMain";const de=l.forwardRef(({className:n,children:r,...a},o)=>e.jsx("footer",{ref:o,className:v.cn("border-t bg-background px-4 py-4 md:px-6",n),...a,children:r}));de.displayName="DashboardFooter";const ie=l.createContext(null);function T(){const n=l.useContext(ie);if(!n)throw new Error("usePipeline must be used within a Pipeline component");return n}const me=l.forwardRef(({className:n,stages:r,items:a,defaultView:o="kanban",view:c,onViewChange:i,onItemMove:m,onItemClick:g,onItemAdd:u,onItemEdit:j,onItemDelete:p,children:b,...y},f)=>{const[w,d]=l.useState(o),[x,t]=l.useState([]),[s,N]=l.useState(""),[P,I]=l.useState(),F=c??w,H=S=>{c===void 0&&d(S),i==null||i(S)},q=l.useMemo(()=>{if(!s)return a;const S=s.toLowerCase();return a.filter(C=>{var R,L;return C.title.toLowerCase().includes(S)||((R=C.company)==null?void 0:R.toLowerCase().includes(S))||((L=C.owner)==null?void 0:L.name.toLowerCase().includes(S))})},[a,s]),h=l.useMemo(()=>({view:F,setView:H,stages:r,items:q,selectedItems:x,setSelectedItems:t,onItemMove:m,onItemClick:g,onItemAdd:u,onItemEdit:j,onItemDelete:p,searchQuery:s,setSearchQuery:N,groupBy:P,setGroupBy:I}),[F,r,q,x,s,P,m,g,u,j,p]);return e.jsx(ie.Provider,{value:h,children:e.jsx("div",{ref:f,className:v.cn("flex h-full flex-col",n),...y,children:b})})});me.displayName="Pipeline";const ue=l.forwardRef(({className:n,showViewSelector:r=!0,showSearch:a=!0,showAddButton:o=!0,addButtonLabel:c,onAdd:i,title:m,actions:g,...u},j)=>{const{view:p,setView:b,searchQuery:y,setSearchQuery:f,selectedItems:w}=T(),{t:d}=B.useFormatters(),x=[{value:"kanban",icon:e.jsx(De,{className:"h-4 w-4"}),label:"Kanban"},{value:"list",icon:e.jsx(ke,{className:"h-4 w-4"}),label:d("calendar.agenda")},{value:"table",icon:e.jsx(Se,{className:"h-4 w-4"}),label:"Table"},{value:"timeline",icon:e.jsx(je.Calendar,{className:"h-4 w-4"}),label:"Timeline"}];return e.jsxs("div",{ref:j,className:v.cn("flex flex-wrap items-center justify-between gap-4 border-b bg-background p-4",n),...u,children:[e.jsxs("div",{className:"flex items-center gap-4",children:[m&&e.jsx("h2",{className:"text-lg font-semibold",children:m}),w.length>0&&e.jsxs(k.Badge,{variant:"secondary",children:[w.length," selected"]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a&&e.jsxs("div",{className:"relative",children:[e.jsx(ye.Search,{className:"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(D.Input,{placeholder:d("common.search"),value:y,onChange:t=>f(t.target.value),className:"h-9 w-[200px] pl-8"})]}),r&&e.jsx("div",{className:"flex items-center rounded-md border bg-muted/50 p-1",children:x.map(t=>e.jsx(k.Button,{variant:p===t.value?"secondary":"ghost",size:"sm",className:"h-7 px-2",onClick:()=>b(t.value),title:t.label,children:t.icon},t.value))}),e.jsxs(k.Button,{variant:"outline",size:"sm",className:"h-9",children:[e.jsx(ve,{className:"mr-2 h-4 w-4"}),d("common.filter")]}),g,o&&e.jsxs(k.Button,{size:"sm",className:"h-9",onClick:i,children:[e.jsx(X.Plus,{className:"mr-2 h-4 w-4"}),c||d("common.create")]})]})]})});ue.displayName="PipelineHeader";const xe=l.forwardRef(({className:n,children:r,...a},o)=>{const{view:c}=T();return e.jsx("div",{ref:o,className:v.cn("flex-1 overflow-hidden",n),...a,children:r||e.jsxs(e.Fragment,{children:[c==="kanban"&&e.jsx(_,{}),c==="list"&&e.jsx(K,{}),c==="table"&&e.jsx(Q,{}),c==="timeline"&&e.jsx($,{})]})})});xe.displayName="PipelineContent";const Ce=l.memo(function({item:r,stageId:a,renderItem:o,defaultRenderItem:c,onItemClick:i}){const{attributes:m,listeners:g,setNodeRef:u,transform:j,transition:p,isDragging:b}=M.useSortable({id:r.id,data:{type:"item",item:r,stageId:a}}),y={transform:M.CSS.Transform.toString(j),transition:p,opacity:b?.5:1,cursor:"grab"};return e.jsx("div",{ref:u,style:y,...m,...g,onClick:f=>{f.stopPropagation(),i==null||i(r)},children:o?o(r,a):c(r)})}),Me=l.memo(function({stage:r,items:a,columnWidth:o,showAddButton:c,onItemAdd:i,onItemClick:m,renderItem:g,defaultRenderItem:u,getStageTotal:j,formatCurrency:p,t:b}){const y=l.useMemo(()=>a.map(f=>f.id),[a]);return e.jsxs("div",{className:"flex shrink-0 flex-col rounded-lg bg-muted/30",style:{width:o},children:[e.jsxs("div",{className:"flex items-center justify-between p-3 border-b",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[r.color&&e.jsx("div",{className:"h-3 w-3 rounded-full",style:{backgroundColor:r.color}}),e.jsx("h3",{className:"text-sm font-semibold",children:r.name}),e.jsx(k.Badge,{variant:"secondary",className:"text-xs",children:a.length})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[c&&i&&e.jsx(k.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>i(r.id),children:e.jsx(X.Plus,{className:"h-4 w-4"})}),e.jsxs(D.DropdownMenu,{children:[e.jsx(D.DropdownMenuTrigger,{asChild:!0,children:e.jsx(k.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",children:e.jsx(G.Ellipsis,{className:"h-4 w-4"})})}),e.jsxs(D.DropdownMenuContent,{align:"end",children:[e.jsx(D.DropdownMenuItem,{children:b("common.edit")}),e.jsx(D.DropdownMenuSeparator,{}),e.jsx(D.DropdownMenuItem,{className:"text-destructive",children:b("common.delete")})]})]})]})]}),e.jsxs("div",{className:"px-3 py-2 text-xs text-muted-foreground border-b",children:[b("deal.value"),":"," ",e.jsx("span",{className:"font-medium text-foreground",children:p(j(r.id),{minimumFractionDigits:0,maximumFractionDigits:0})})]}),e.jsx(k.ScrollArea,{className:"flex-1",children:e.jsxs("div",{className:"flex flex-col gap-2 p-2 min-h-[100px]",children:[e.jsx(M.SortableContext,{items:y,strategy:M.verticalListSortingStrategy,children:a.map(f=>e.jsx(Ce,{item:f,stageId:r.id,renderItem:g,defaultRenderItem:u,onItemClick:m},f.id))}),a.length===0&&e.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:b("common.noData")})]})})]})}),_=l.forwardRef(({className:n,columnWidth:r=320,showAddButton:a=!0,renderItem:o,...c},i)=>{const{stages:m,items:g,onItemMove:u,onItemClick:j,onItemAdd:p}=T(),{formatCurrency:b,formatDate:y,t:f}=B.useFormatters(),[w,d]=l.useState(null),x=M.useSensors(M.useSensor(M.PointerSensor,{activationConstraint:{delay:150,tolerance:5}}),M.useSensor(M.KeyboardSensor,{coordinateGetter:M.sortableKeyboardCoordinates})),t=l.useMemo(()=>{const h={};return m.forEach(S=>{h[S.id]=g.filter(C=>C.stageId===S.id)}),h},[m,g]),s=l.useCallback(h=>{var S;return((S=t[h])==null?void 0:S.reduce((C,R)=>C+(R.value||0),0))||0},[t]),N={low:"bg-muted text-muted-foreground",medium:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",high:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"},P=l.useCallback(h=>e.jsx(E.Card,{className:"cursor-pointer transition-all hover:shadow-md",children:e.jsxs(E.CardContent,{className:"p-3 space-y-2",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h4",{className:"font-medium text-sm truncate",children:h.title}),h.company&&e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:h.company})]}),h.priority&&e.jsx(k.Badge,{className:v.cn("text-[10px] ml-2",N[h.priority]),children:h.priority})]}),h.value!==void 0&&e.jsx("div",{className:"text-sm font-semibold",children:b(h.value,{minimumFractionDigits:0,maximumFractionDigits:0})}),e.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[h.dueDate&&e.jsx("span",{children:y(h.dueDate)}),h.owner&&e.jsx("span",{className:"truncate max-w-[100px]",children:h.owner.name})]}),h.probability!==void 0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"flex-1 h-1.5 bg-muted rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-primary rounded-full",style:{width:`${h.probability}%`}})}),e.jsxs("span",{className:"text-[10px] text-muted-foreground",children:[h.probability,"%"]})]})]})}),[b,y,N]),I=l.useCallback(h=>{const{active:S}=h,C=S.data.current;C!=null&&C.item&&d(C.item)},[]),F=l.useCallback(h=>{},[]),H=l.useCallback(h=>{const{active:S,over:C}=h;if(d(null),!C)return;const R=S.data.current,L=C.data.current;if(!R)return;const pe=R.item,J=R.stageId;let A=null;if((L==null?void 0:L.type)==="item")A=L.stageId;else if((L==null?void 0:L.type)==="column")A=L.stageId;else{const U=g.find(fe=>fe.id===C.id);U&&(A=U.stageId)}A&&J!==A&&(u==null||u(pe.id,J,A))},[g,u]),q=l.useMemo(()=>[...m].sort((h,S)=>h.order-S.order),[m]);return e.jsx("div",{ref:i,className:v.cn("h-full",n),...c,children:e.jsxs(M.DndContext,{sensors:x,collisionDetection:M.closestCorners,onDragStart:I,onDragOver:F,onDragEnd:H,children:[e.jsxs(k.ScrollArea,{className:"h-full",children:[e.jsx("div",{className:"flex gap-4 p-4 h-full",children:q.map(h=>e.jsx(Me,{stage:h,items:t[h.id]||[],columnWidth:r,showAddButton:a,onItemAdd:p,onItemClick:j,renderItem:o,defaultRenderItem:P,getStageTotal:s,formatCurrency:b,t:f},h.id))}),e.jsx(k.ScrollBar,{orientation:"horizontal"})]}),e.jsx(M.DragOverlay,{dropAnimation:{duration:200,easing:"cubic-bezier(0.18, 0.67, 0.6, 1.22)"},children:w?e.jsx("div",{className:"opacity-90 shadow-xl rotate-3 scale-105",children:o?o(w,w.stageId):P(w)}):null})]})})});_.displayName="PipelineKanban";const K=l.forwardRef(({className:n,renderItem:r,...a},o)=>{const{stages:c,items:i,selectedItems:m,setSelectedItems:g,onItemClick:u,onItemEdit:j,onItemDelete:p}=T(),{formatCurrency:b,formatDate:y,t:f}=B.useFormatters(),w=l.useMemo(()=>{const s={};return c.forEach(N=>{s[N.id]=i.filter(P=>P.stageId===N.id)}),s},[c,i]),d=s=>{m.includes(s)?g(m.filter(N=>N!==s)):g([...m,s])},x={low:"bg-muted text-muted-foreground",medium:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",high:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"},t=(s,N)=>e.jsxs("div",{className:v.cn("flex items-center gap-4 rounded-lg border bg-card p-4 transition-colors hover:bg-muted/50",m.includes(s.id)&&"bg-muted/50 border-primary"),children:[e.jsx(z.Checkbox,{checked:m.includes(s.id),onCheckedChange:()=>d(s.id)}),e.jsx(we,{className:"h-4 w-4 text-muted-foreground cursor-grab"}),e.jsxs("div",{className:"flex-1 min-w-0 cursor-pointer",onClick:()=>u==null?void 0:u(s),children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h4",{className:"font-medium truncate",children:s.title}),s.priority&&e.jsx(k.Badge,{className:v.cn("text-xs",x[s.priority]),children:s.priority})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[s.company&&e.jsx("span",{children:s.company}),s.owner&&e.jsx("span",{children:s.owner.name})]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[N.color&&e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:N.color}}),e.jsx("span",{className:"text-sm",children:N.name})]}),s.value!==void 0&&e.jsx("div",{className:"font-semibold min-w-[100px] text-right",children:b(s.value,{minimumFractionDigits:0,maximumFractionDigits:0})}),s.dueDate&&e.jsx("div",{className:"text-sm text-muted-foreground min-w-[100px]",children:y(s.dueDate)}),e.jsxs(D.DropdownMenu,{children:[e.jsx(D.DropdownMenuTrigger,{asChild:!0,children:e.jsx(k.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",children:e.jsx(G.Ellipsis,{className:"h-4 w-4"})})}),e.jsxs(D.DropdownMenuContent,{align:"end",children:[e.jsx(D.DropdownMenuItem,{onClick:()=>j==null?void 0:j(s),children:f("common.edit")}),e.jsx(D.DropdownMenuSeparator,{}),e.jsx(D.DropdownMenuItem,{className:"text-destructive",onClick:()=>p==null?void 0:p(s.id),children:f("common.delete")})]})]})]})]});return e.jsx("div",{ref:o,className:v.cn("h-full",n),...a,children:e.jsx(k.ScrollArea,{className:"h-full",children:e.jsx("div",{className:"p-4 space-y-6",children:c.sort((s,N)=>s.order-N.order).map(s=>{var N,P,I;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.color&&e.jsx("div",{className:"h-3 w-3 rounded-full",style:{backgroundColor:s.color}}),e.jsx("h3",{className:"font-semibold",children:s.name}),e.jsx(k.Badge,{variant:"secondary",children:((N=w[s.id])==null?void 0:N.length)||0})]}),e.jsxs("div",{className:"space-y-2",children:[(P=w[s.id])==null?void 0:P.map(F=>r?e.jsx("div",{children:r(F)},F.id):e.jsx("div",{children:t(F,s)},F.id)),((I=w[s.id])==null?void 0:I.length)===0&&e.jsx("div",{className:"py-4 text-center text-sm text-muted-foreground border rounded-lg",children:f("common.noData")})]})]},s.id)})})})})});K.displayName="PipelineList";const Q=l.forwardRef(({className:n,...r},a)=>{const{stages:o,items:c,selectedItems:i,setSelectedItems:m,onItemClick:g,onItemEdit:u,onItemDelete:j}=T(),{formatCurrency:p,formatDate:b,t:y}=B.useFormatters(),f=l.useMemo(()=>{const t={};return o.forEach(s=>{t[s.id]=s}),t},[o]),w=()=>{i.length===c.length?m([]):m(c.map(t=>t.id))},d=t=>{i.includes(t)?m(i.filter(s=>s!==t)):m([...i,t])},x={low:"bg-muted text-muted-foreground",medium:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",high:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"};return e.jsx("div",{ref:a,className:v.cn("h-full",n),...r,children:e.jsx(k.ScrollArea,{className:"h-full",children:e.jsx("div",{className:"p-4",children:e.jsx("div",{className:"rounded-lg border",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b bg-muted/50",children:[e.jsx("th",{className:"w-[40px] p-3",children:e.jsx(z.Checkbox,{checked:i.length===c.length&&c.length>0,onCheckedChange:w})}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:"Title"}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:"Company"}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:y("deal.stage")}),e.jsx("th",{className:"text-right p-3 font-medium text-sm",children:y("deal.value")}),e.jsx("th",{className:"text-center p-3 font-medium text-sm",children:y("deal.probability")}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:"Owner"}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:y("deal.closeDate")}),e.jsx("th",{className:"text-left p-3 font-medium text-sm",children:"Priority"}),e.jsx("th",{className:"w-[60px] p-3"})]})}),e.jsxs("tbody",{children:[c.map(t=>{var N;const s=f[t.stageId];return e.jsxs("tr",{className:v.cn("border-b transition-colors hover:bg-muted/50",i.includes(t.id)&&"bg-muted/50"),children:[e.jsx("td",{className:"p-3",children:e.jsx(z.Checkbox,{checked:i.includes(t.id),onCheckedChange:()=>d(t.id)})}),e.jsx("td",{className:"p-3 font-medium cursor-pointer",onClick:()=>g==null?void 0:g(t),children:t.title}),e.jsx("td",{className:"p-3 text-muted-foreground",children:t.company}),e.jsx("td",{className:"p-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[(s==null?void 0:s.color)&&e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:s.color}}),e.jsx("span",{children:s==null?void 0:s.name})]})}),e.jsx("td",{className:"p-3 text-right font-medium",children:t.value!==void 0?p(t.value,{minimumFractionDigits:0,maximumFractionDigits:0}):"-"}),e.jsx("td",{className:"p-3 text-center",children:t.probability!==void 0?`${t.probability}%`:"-"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:((N=t.owner)==null?void 0:N.name)||"-"}),e.jsx("td",{className:"p-3 text-muted-foreground",children:t.dueDate?b(t.dueDate):"-"}),e.jsx("td",{className:"p-3",children:t.priority&&e.jsx(k.Badge,{className:v.cn("text-xs",x[t.priority]),children:t.priority})}),e.jsx("td",{className:"p-3",children:e.jsxs(D.DropdownMenu,{children:[e.jsx(D.DropdownMenuTrigger,{asChild:!0,children:e.jsx(k.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",children:e.jsx(G.Ellipsis,{className:"h-4 w-4"})})}),e.jsxs(D.DropdownMenuContent,{align:"end",children:[e.jsx(D.DropdownMenuItem,{onClick:()=>u==null?void 0:u(t),children:y("common.edit")}),e.jsx(D.DropdownMenuSeparator,{}),e.jsx(D.DropdownMenuItem,{className:"text-destructive",onClick:()=>j==null?void 0:j(t.id),children:y("common.delete")})]})]})})]},t.id)}),c.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:10,className:"p-8 text-center text-muted-foreground",children:y("common.noData")})})]})]})})})})})});Q.displayName="PipelineTable";const $=l.forwardRef(({className:n,...r},a)=>{const{stages:o,items:c,onItemClick:i}=T(),{formatCurrency:m,formatDate:g,t:u}=B.useFormatters(),j=l.useMemo(()=>{const d={};return new Date().setHours(0,0,0,0),c.filter(t=>t.dueDate).sort((t,s)=>{const N=new Date(t.dueDate),P=new Date(s.dueDate);return N.getTime()-P.getTime()}).forEach(t=>{const N=new Date(t.dueDate).toISOString().split("T")[0];d[N]||(d[N]=[]),d[N].push(t)}),d},[c]),p=l.useMemo(()=>{const d={};return o.forEach(x=>{d[x.id]=x}),d},[o]),b=Object.keys(j).sort(),y=new Date().toISOString().split("T")[0],f=d=>{const x=new Date(d),t=new Date;t.setHours(0,0,0,0);const s=Math.ceil((x.getTime()-t.getTime())/(1e3*60*60*24));return s===0?u("date.today"):s===1?u("date.tomorrow"):s===-1?u("date.yesterday"):g(x,"EEEE, MMMM d")},w=d=>d<y;return e.jsx("div",{ref:a,className:v.cn("h-full",n),...r,children:e.jsx(k.ScrollArea,{className:"h-full",children:e.jsx("div",{className:"p-4",children:b.length===0?e.jsx("div",{className:"py-12 text-center text-muted-foreground",children:u("common.noData")}):e.jsx("div",{className:"relative space-y-8 before:absolute before:inset-0 before:ml-5 before:h-full before:w-0.5 before:-translate-x-px before:bg-border md:before:mx-auto md:before:translate-x-0",children:b.map(d=>e.jsxs("div",{className:"relative flex items-start gap-6 md:gap-12",children:[e.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-full bg-background border-2 border-muted shrink-0 md:order-1 md:mx-auto",children:e.jsx("div",{className:v.cn("w-3 h-3 rounded-full",w(d)?"bg-destructive":"bg-primary")})}),e.jsxs("div",{className:"hidden md:block md:w-1/2 md:text-right md:pr-8",children:[e.jsx("span",{className:v.cn("font-semibold",w(d)&&"text-destructive"),children:f(d)}),e.jsxs("span",{className:"block text-sm text-muted-foreground",children:[j[d].length," item(s)"]})]}),e.jsxs("div",{className:"flex-1 md:w-1/2 md:pl-8",children:[e.jsx("div",{className:"md:hidden mb-2",children:e.jsx("span",{className:v.cn("font-semibold",w(d)&&"text-destructive"),children:f(d)})}),e.jsx("div",{className:"space-y-3",children:j[d].map(x=>{const t=p[x.stageId];return e.jsx(E.Card,{className:"cursor-pointer hover:shadow-md transition-shadow",onClick:()=>i==null?void 0:i(x),children:e.jsxs(E.CardContent,{className:"p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-medium truncate",children:x.title}),x.company&&e.jsx("p",{className:"text-sm text-muted-foreground",children:x.company})]}),x.value!==void 0&&e.jsx("div",{className:"font-semibold",children:m(x.value,{minimumFractionDigits:0,maximumFractionDigits:0})})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-3 text-sm",children:[t&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[t.color&&e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:t.color}}),e.jsx("span",{children:t.name})]}),x.owner&&e.jsx("span",{className:"text-muted-foreground",children:x.owner.name})]})]})},x.id)})})]})]},d))})})})})});$.displayName="PipelineTimeline";const he=l.forwardRef(({className:n,...r},a)=>{const{stages:o,items:c}=T(),{formatCurrency:i,t:m}=B.useFormatters(),g=c.reduce((p,b)=>p+(b.value||0),0),u=c.length,j=l.useMemo(()=>o.map(p=>{const b=c.filter(f=>f.stageId===p.id),y=b.reduce((f,w)=>f+(w.value||0),0);return{...p,count:b.length,value:y}}),[o,c]);return e.jsx("div",{ref:a,className:v.cn("border-t bg-muted/30 px-4 py-3",n),...r,children:e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:m("common.total")}),e.jsx("div",{className:"font-semibold",children:i(g,{minimumFractionDigits:0,maximumFractionDigits:0})})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:m("common.items")}),e.jsx("div",{className:"font-semibold",children:u})]})]}),e.jsx("div",{className:"flex items-center gap-4",children:j.map(p=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[p.color&&e.jsx("div",{className:"h-2 w-2 rounded-full",style:{backgroundColor:p.color}}),e.jsxs("span",{className:"text-muted-foreground",children:[p.name,":"]}),e.jsx("span",{className:"font-medium",children:p.count})]},p.id))})]})})});he.displayName="PipelineSummary";exports.AppShell=Y;exports.AppShellFooter=se;exports.AppShellHeader=Z;exports.AppShellMain=ee;exports.DashboardContent=le;exports.DashboardFooter=de;exports.DashboardHeader=oe;exports.DashboardLayout=ae;exports.DashboardMain=ce;exports.DashboardSidebar=ne;exports.PageHeader=te;exports.Pipeline=me;exports.PipelineContent=xe;exports.PipelineHeader=ue;exports.PipelineKanban=_;exports.PipelineList=K;exports.PipelineSummary=he;exports.PipelineTable=Q;exports.PipelineTimeline=$;exports.useDashboardLayout=V;exports.usePipeline=T;
|
|
27
|
-
//# sourceMappingURL=pipeline-Dh052Dvj.cjs.map
|