ezux 1.1.19 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/{DeleteConfirmationModal-CukNDgtX.cjs → DeleteConfirmationModal-BM1PoL6P.cjs} +1 -1
- package/dist/{DeleteConfirmationModal-p8XGDGIw.js → DeleteConfirmationModal-B_tXm0N0.js} +4 -4
- package/dist/{EzEventModal-BrCBSXBM.cjs → EzEventModal-D1EzXBsQ.cjs} +1 -1
- package/dist/{EzEventModal-BDSHG11m.js → EzEventModal-D5lX9XuW.js} +2 -2
- package/dist/{EzFlow-CQFeY7DL.cjs → EzFlow-B4qRm5KH.cjs} +3 -3
- package/dist/{EzFlow-C74NbZA9.js → EzFlow-CEfPykao.js} +278 -278
- package/dist/EzKanban-2b9skOep.cjs +2 -0
- package/dist/{EzKanban-COcGidzh.js → EzKanban-CpYH8b8g.js} +86 -80
- package/dist/{EzLayout-CiaPLniV.js → EzLayout-DFxegglu.js} +30 -24
- package/dist/EzLayout-EYOfpFXs.cjs +1 -0
- package/dist/{EzScheduler-CjQbi1Na.js → EzScheduler-D7aH4KCY.js} +60 -55
- package/dist/EzScheduler-hC9PsLrI.cjs +1 -0
- package/dist/{EzSchedulerQuickAdd-BeNfGdWs.cjs → EzSchedulerQuickAdd-BYrV9PQ-.cjs} +1 -1
- package/dist/{EzSchedulerQuickAdd-BIC8xbSn.js → EzSchedulerQuickAdd-D0kGTzE3.js} +2 -2
- package/dist/{EzSchedulerToolbar-jMw8KB8k.js → EzSchedulerToolbar-BhlCMeOT.js} +2 -2
- package/dist/{EzSchedulerToolbar-ihfe-5Yd.cjs → EzSchedulerToolbar-Dy62PVnH.cjs} +1 -1
- package/dist/{EzSignature-7UHO5lSP.js → EzSignature-B-CPcf7e.js} +5 -2
- package/dist/{EzSignature-Df7UZ-IS.cjs → EzSignature-DcmWBPIL.cjs} +1 -1
- package/dist/EzTable-Bcq7TByw.cjs +3 -0
- package/dist/{EzTable-D2p1IWHc.js → EzTable-DLbb3nl7.js} +1296 -1161
- package/dist/EzTableEditDialog--8pD39Rp.cjs +1 -0
- package/dist/EzTableEditDialog-m0zW6r6z.js +100 -0
- package/dist/{EzTableFooter-DrLoWelo.js → EzTableFooter-BuTS3wDK.js} +1 -1
- package/dist/{EzTableToolbar-DwuumvWP.cjs → EzTableToolbar-BWjqKfwx.cjs} +1 -1
- package/dist/{EzTableToolbar-BH5z9fSJ.js → EzTableToolbar-BiRfKm9d.js} +2 -2
- package/dist/{EzTreeView-D1G0Aomc.js → EzTreeView-B2B_Ruwm.js} +37 -37
- package/dist/EzTreeView-DLoPKe2i.cjs +1 -0
- package/dist/{KanbanBoard-BsZP_PJi.js → KanbanBoard-CRF0-mYa.js} +119 -119
- package/dist/{KanbanBoard-C9bjU_gk.cjs → KanbanBoard-DdXD-Zjt.cjs} +1 -1
- package/dist/advanced.cjs +2 -2
- package/dist/advanced.es.js +30 -29
- package/dist/card-NlCLCGFb.cjs +1 -0
- package/dist/{card-ZUNxcdIM.js → card-urNaa5h-.js} +1 -1
- package/dist/{checkbox-BrCh_Iid.cjs → checkbox-B9yPkCYi.cjs} +1 -1
- package/dist/{checkbox-DRkQuB4W.js → checkbox-BTuckDEm.js} +1 -1
- package/dist/components/EzTable/EzTableEditDialog.d.ts +1 -1
- package/dist/components/EzTable/hooks/useTableFiltering.d.ts +6 -6
- package/dist/components/EzTable/hooks/useTableHistory.d.ts +3 -3
- package/dist/components/EzTable/hooks/useTableImperative.d.ts +9 -6
- package/dist/components/EzTable/hooks/useTableState.d.ts +12 -12
- package/dist/components/EzTable/types/EzTableProps.d.ts +9 -1
- package/dist/ezux.css +1 -1
- package/dist/flow.cjs +1 -1
- package/dist/flow.es.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.es.js +20 -20
- package/dist/input-CcRi0LeO.js +14 -0
- package/dist/input-DOh8O0iX.cjs +1 -0
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.es.js +2 -2
- package/dist/layout.cjs +1 -1
- package/dist/layout.es.js +1 -1
- package/dist/mock-services.cjs +1 -1
- package/dist/mock-services.es.js +1 -1
- package/dist/scheduler.cjs +1 -1
- package/dist/scheduler.es.js +1 -1
- package/dist/signature.cjs +1 -1
- package/dist/signature.es.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.es.js +1 -1
- package/dist/theme-vars.css +25 -5
- package/dist/treeview.cjs +1 -1
- package/dist/treeview.es.js +1 -1
- package/package.json +39 -36
- package/dist/EzKanban-DokdXGqQ.cjs +0 -2
- package/dist/EzLayout-BGnqFtvO.cjs +0 -1
- package/dist/EzScheduler-B8nV1VWY.cjs +0 -1
- package/dist/EzTable-CEXvJR1t.cjs +0 -3
- package/dist/EzTableEditDialog-BXnnYSSy.cjs +0 -1
- package/dist/EzTableEditDialog-Ccd5XoHm.js +0 -84
- package/dist/EzTreeView-KMGlU4ax.cjs +0 -1
- package/dist/card-CPlRZxbq.cjs +0 -1
- package/dist/input-CYlvlbF7.cjs +0 -1
- package/dist/input-Cj3sQK3M.js +0 -14
|
@@ -730,9 +730,17 @@ export interface EzTableBaseRef<TData extends object> {
|
|
|
730
730
|
getChanges: () => EzTableChanges<TData>;
|
|
731
731
|
validateField: (field: string) => boolean;
|
|
732
732
|
validateEditForm: () => boolean;
|
|
733
|
+
addRecord: (record?: Partial<TData>) => Promise<void>;
|
|
734
|
+
deleteRecord: (key: string | number) => Promise<void>;
|
|
735
|
+
deleteRecords: (indices: number[]) => Promise<void>;
|
|
736
|
+
updateRecord: (key: string | number, newData: Partial<TData>) => Promise<void>;
|
|
733
737
|
}
|
|
734
|
-
export type EzTableRef<TData extends object, TExtraApi extends object =
|
|
738
|
+
export type EzTableRef<TData extends object, TExtraApi extends object = {}> = EzTableBaseRef<TData> & TExtraApi;
|
|
735
739
|
export interface ITableService<TData extends object> {
|
|
740
|
+
resourceKey?: string;
|
|
741
|
+
serviceKey?: string;
|
|
742
|
+
name?: string;
|
|
743
|
+
id?: string;
|
|
736
744
|
fetchData: (query: unknown) => Promise<{
|
|
737
745
|
data: TData[];
|
|
738
746
|
rowCount?: number;
|
package/dist/ezux.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:root{--background:1 0 0;--foreground:0 0 0;--card:1 0 0;--card-foreground:0 0 0;--popover:1 0 0;--popover-foreground:0 0 0;--primary:.205 0 0;--primary-foreground:.985 0 0;--secondary:.97 0 0;--secondary-foreground:.205 0 0;--muted:.97 0 0;--muted-foreground:40% 0 0;--accent:.97 0 0;--accent-foreground:.205 0 0;--destructive:.577 .245 27.325;--destructive-foreground:100% 0 0deg;--border:.922 0 0;--input:.922 0 0;--ring:.708 0 0;--ez-status-success-bg:oklch(96.2% .044 156.74);--ez-status-success-text:oklch(20.8% .042 165.74);--ez-status-success-border:oklch(89.5% .051 163.22);--ez-status-success-dot:oklch(52.7% .154 160.06);--ez-status-warning-bg:oklch(96.2% .059 95.617);--ez-status-warning-text:oklch(25% .05 90);--ez-status-warning-border:oklch(89% .06 90);--ez-status-warning-dot:oklch(65% .18 85);--ez-status-error-bg:oklch(94.1% .03 12.58);--ez-status-error-text:oklch(25% .04 15);--ez-status-error-border:oklch(88% .04 15);--ez-status-error-dot:oklch(60% .18 20);--ez-status-info-bg:oklch(94% .03 240);--ez-status-info-text:oklch(25% .04 245);--ez-status-info-border:oklch(88% .04 245);--ez-status-info-dot:oklch(55% .18 250);--ez-status-neutral-bg:oklch(96% 0 0);--ez-status-neutral-text:oklch(20% 0 0);--ez-status-neutral-border:oklch(92% 0 0);--ez-status-neutral-dot:oklch(60% 0 0);--radius:.625rem;--ez-font-size-body:1rem;--ez-font-size-label
|
|
1
|
+
:root{--background:1 0 0;--foreground:0 0 0;--card:1 0 0;--card-foreground:0 0 0;--popover:1 0 0;--popover-foreground:0 0 0;--primary:.205 0 0;--primary-foreground:.985 0 0;--secondary:.97 0 0;--secondary-foreground:.205 0 0;--muted:.97 0 0;--muted-foreground:40% 0 0;--accent:.97 0 0;--accent-foreground:.205 0 0;--destructive:.577 .245 27.325;--destructive-foreground:100% 0 0deg;--border:.922 0 0;--input:.922 0 0;--ring:.708 0 0;--ez-status-success-bg:oklch(96.2% .044 156.74);--ez-status-success-text:oklch(20.8% .042 165.74);--ez-status-success-border:oklch(89.5% .051 163.22);--ez-status-success-dot:oklch(52.7% .154 160.06);--ez-status-warning-bg:oklch(96.2% .059 95.617);--ez-status-warning-text:oklch(25% .05 90);--ez-status-warning-border:oklch(89% .06 90);--ez-status-warning-dot:oklch(65% .18 85);--ez-status-error-bg:oklch(94.1% .03 12.58);--ez-status-error-text:oklch(25% .04 15);--ez-status-error-border:oklch(88% .04 15);--ez-status-error-dot:oklch(60% .18 20);--ez-status-info-bg:oklch(94% .03 240);--ez-status-info-text:oklch(25% .04 245);--ez-status-info-border:oklch(88% .04 245);--ez-status-info-dot:oklch(55% .18 250);--ez-status-neutral-bg:oklch(96% 0 0);--ez-status-neutral-text:oklch(20% 0 0);--ez-status-neutral-border:oklch(92% 0 0);--ez-status-neutral-dot:oklch(60% 0 0);--radius:.625rem;--ez-font-family-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ez-font-size-display:2.25rem;--ez-font-size-h1:1.875rem;--ez-font-size-h2:1.5rem;--ez-font-size-h3:1.25rem;--ez-font-size-body:1rem;--ez-font-size-label:.875rem;--ez-font-size-caption:.75rem;--ez-line-height-display:1.1;--ez-line-height-heading:1.25;--ez-line-height-body:1.5;--ez-line-height-label:1.35;--ez-line-height-caption:1.35;--ez-touch-target:2.75rem;--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--ez-selection:oklch(92% .04 240);--ez-selection-foreground:oklch(25% .04 245);--ez-highlight:oklch(97% .01 240);--ez-highlight-foreground:oklch(30% .02 240);--ez-success:oklch(62.7% .154 160.06);--ez-success-foreground:oklch(100% 0 0);--ez-error:oklch(57.7% .245 27.325);--ez-error-foreground:oklch(100% 0 0);--ez-warning:oklch(85% .15 85);--ez-warning-foreground:oklch(20% .05 90);--ez-background-secondary:oklch(98% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(72% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(90% .01 240);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--ez-status-success-bg:oklch(85% .1 160);--ez-status-success-text:black;--ez-status-success-border:oklch(70% .08 160);--ez-status-success-dot:oklch(30% .05 160);--ez-status-warning-bg:oklch(88% .15 90);--ez-status-warning-text:black;--ez-status-warning-border:oklch(75% .1 90);--ez-status-warning-dot:oklch(40% .08 90);--ez-status-error-bg:oklch(85% .12 25);--ez-status-error-text:black;--ez-status-error-border:oklch(70% .1 25);--ez-status-error-dot:oklch(35% .08 25);--ez-status-info-bg:oklch(85% .1 250);--ez-status-info-text:black;--ez-status-info-border:oklch(70% .08 250);--ez-status-info-dot:oklch(30% .05 250);--ez-status-neutral-bg:oklch(20% 0 0);--ez-status-neutral-text:oklch(90% 0 0);--ez-status-neutral-border:oklch(100% 0 0/.2);--ez-status-neutral-dot:oklch(70% 0 0);--radius:.5rem;--ez-font-family-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ez-font-size-display:2rem;--ez-font-size-h1:1.75rem;--ez-font-size-h2:1.375rem;--ez-font-size-h3:1.125rem;--ez-font-size-body:1rem;--ez-font-size-label:.875rem;--ez-font-size-caption:.75rem;--ez-line-height-display:1.1;--ez-line-height-heading:1.25;--ez-line-height-body:1.5;--ez-line-height-label:1.35;--ez-line-height-caption:1.35;--ez-touch-target:2.75rem;--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0);--ez-selection:oklch(30% .04 240);--ez-selection-foreground:oklch(90% .02 240);--ez-highlight:oklch(20% .02 240);--ez-highlight-foreground:oklch(80% .02 240);--ez-success:oklch(60% .15 160);--ez-success-foreground:oklch(10% 0 0);--ez-error:oklch(60% .2 25);--ez-error-foreground:oklch(10% 0 0);--ez-warning:oklch(70% .15 85);--ez-warning-foreground:oklch(10% .05 90);--ez-background-secondary:oklch(20% 0 0)}@layer base{:root{font-family:var(--ez-font-family-sans);color:oklch(var(--foreground));background:oklch(var(--background))}h1,h2,h3,h4,h5,h6{line-height:var(--ez-line-height-heading)}*,:after,:before,::backdrop{border-color:var(--border)}::file-selector-button{border-color:var(--border)}:where(input,textarea,select,button,[role=button],[tabindex]:not([tabindex="-1"])):not(:disabled):focus-visible{border-color:oklch(var(--ring) / .58);box-shadow:0 0 0 3px oklch(var(--ring) / .16)}}@layer utilities{.ez-text-display{font-size:var(--ez-font-size-display);line-height:var(--ez-line-height-display)}.ez-text-h1{font-size:var(--ez-font-size-h1);line-height:var(--ez-line-height-heading)}.ez-text-h2{font-size:var(--ez-font-size-h2);line-height:var(--ez-line-height-heading)}.ez-text-h3{font-size:var(--ez-font-size-h3);line-height:var(--ez-line-height-heading)}.ez-text-body{font-size:var(--ez-font-size-body);line-height:var(--ez-line-height-body)}.ez-text-label{font-size:var(--ez-font-size-label);line-height:var(--ez-line-height-label)}.ez-text-caption{font-size:var(--ez-font-size-caption);line-height:var(--ez-line-height-caption)}.ez-touch-target{min-width:var(--ez-touch-target);min-height:var(--ez-touch-target)}}@media (width<=640px){:root{--ez-font-size-display:1.875rem;--ez-font-size-h1:1.625rem;--ez-font-size-h2:1.375rem;--ez-font-size-h3:1.125rem;--ez-font-size-body:.9375rem}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:oklch(var(--muted-foreground) / .3);border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:oklch(var(--muted-foreground) / .5)}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:oklch(var(--muted-foreground) / .3) transparent}.gradient-text{background:linear-gradient(135deg, oklch(var(--primary)), oklch(var(--primary) / .6));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pattern-diagonal-lines{background-image:repeating-linear-gradient(45deg,#0000000d,#0000000d 10px,#0000 10px 20px)}.dark .pattern-diagonal-lines{background-image:repeating-linear-gradient(45deg,#ffffff0d,#ffffff0d 10px,#0000 10px 20px)}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/flow.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzFlow-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzFlow-B4qRm5KH.cjs");exports.ActionNode=e.D,exports.ApprovalNode=e.w,exports.DecisionNode=e.k,exports.DelayNode=e.T,exports.EndNode=e.A,exports.EzConnectionLine=e.x,exports.EzFlow=e.u,exports.EzFlowBackground=e.b,exports.EzFlowCanvas=e.v,exports.EzFlowControls=e.y,exports.EzFlowEdge=e.S,exports.EzFlowHeader=e.g,exports.EzFlowToolbox=e._,exports.EzWorkflow=e.d,exports.EzWorkflowOptimisticService=e.s,exports.EzWorkflowRestService=e.c,exports.GroupNode=e.C,exports.LoopNode=e.O,exports.RequestNode=e.E,exports.StartNode=e.j,exports.apiRequestWorkflowExample=e.t,exports.approvalWorkflowExample=e.n,exports.createEzWorkflowNodeLibrary=e.f,exports.createLargeEzWorkflow=e.a,exports.createLocalEzWorkflowService=e.l,exports.ezWorkflowDefaultNodeRegistry=e.p,exports.humanReviewWorkflowExample=e.r,exports.measureEzWorkflowValidation=e.o,exports.scheduledWorkflowExample=e.i,exports.validateEzWorkflow=e.m,exports.validateWorkflow=e.h;
|
package/dist/flow.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, j as g, k as _, l as v, m as y, n as b, o as x, p as S, r as C, s as w, t as T, u as E, v as D, w as O, x as k, y as A } from "./EzFlow-
|
|
1
|
+
import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, c as u, d, f, g as p, h as m, i as h, j as g, k as _, l as v, m as y, n as b, o as x, p as S, r as C, s as w, t as T, u as E, v as D, w as O, x as k, y as A } from "./EzFlow-CEfPykao.js";
|
|
2
2
|
export { n as ActionNode, O as ApprovalNode, _ as DecisionNode, o as DelayNode, e as EndNode, k as EzConnectionLine, E as EzFlow, l as EzFlowBackground, D as EzFlowCanvas, A as EzFlowControls, a as EzFlowEdge, p as EzFlowHeader, s as EzFlowToolbox, d as EzWorkflow, w as EzWorkflowOptimisticService, u as EzWorkflowRestService, t as GroupNode, i as LoopNode, r as RequestNode, g as StartNode, T as apiRequestWorkflowExample, b as approvalWorkflowExample, f as createEzWorkflowNodeLibrary, c as createLargeEzWorkflow, v as createLocalEzWorkflowService, S as ezWorkflowDefaultNodeRegistry, C as humanReviewWorkflowExample, x as measureEzWorkflowValidation, h as scheduledWorkflowExample, y as validateEzWorkflow, m as validateWorkflow };
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzProvider-L2qQMq-v.cjs");;/* empty css */const t=require("./EzLayout-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzProvider-L2qQMq-v.cjs");;/* empty css */const t=require("./EzLayout-EYOfpFXs.cjs"),n=require("./card-NlCLCGFb.cjs"),r=require("./EzTable-Bcq7TByw.cjs"),i=require("./EzScheduler-hC9PsLrI.cjs"),a=require("./EzTreeView-DLoPKe2i.cjs"),o=require("./EzKanban-2b9skOep.cjs"),s=require("./EzSignature-DcmWBPIL.cjs"),c=require("./EzFlow-B4qRm5KH.cjs");let l=require("react");var u=()=>{let t=e.a(),[n,r]=(0,l.useState)(t.getState());return(0,l.useEffect)(()=>t.subscribe(r),[t]),{...n,setMode:e=>t.setMode(e),toggleMode:()=>t.toggleMode(),setThemeColor:e=>t.setThemeColor(e),setRadius:e=>t.setRadius(e)}},d=class{name=`KanbanService`;boards=new Map;async init(){}async cleanup(){}initializeWithData(e){e.forEach(e=>{this.boards.has(e.id)||this.boards.set(e.id,JSON.parse(JSON.stringify(e)))})}async getBoard(e){await this.simulateLatency();let t=this.boards.get(e);if(!t)throw Error(`Board with ID ${e} not found`);return JSON.parse(JSON.stringify(t))}async createBoard(e){await this.simulateLatency();let t={id:e.id||`board-${Date.now()}`,name:e.name||`Untitled Board`,description:e.description,columns:e.columns||[],cards:e.cards||[],permissions:e.permissions,settings:e.settings||{allowDragAndDrop:!0,allowMultiSelect:!0,enableWipLimits:!1,defaultView:`standard`},createdAt:new Date,updatedAt:new Date};return this.boards.set(t.id,t),t}async updateBoard(e,t){await this.simulateLatency();let n=this.boards.get(e);if(!n)throw Error(`Board with ID ${e} not found`);let r={...n,...t,updatedAt:new Date};this.boards.set(e,r)}async deleteBoard(e){await this.simulateLatency(),this.boards.delete(e)}async createCard(e,t){await this.simulateLatency();let n=this.boards.get(e);if(!n)throw Error(`Board with ID ${e} not found`);let r={id:t.id||`card-${Date.now()}`,type:t.type||`standard`,title:t.title||`Untitled Card`,description:t.description,columnId:t.columnId||n.columns[0]?.id||``,position:t.position??n.cards.filter(e=>e.columnId===t.columnId).length,assignees:t.assignees||[],tags:t.tags||[],priority:t.priority,metadata:t.metadata||{},createdBy:t.createdBy||`current-user`,createdAt:new Date,updatedBy:t.updatedBy||`current-user`,updatedAt:new Date,...t};return n.cards.push(r),this.boards.set(e,n),r}async updateCard(e,t){await this.simulateLatency();for(let[n,r]of this.boards.entries()){let i=r.cards.findIndex(t=>t.id===e);if(i!==-1){r.cards[i]={...r.cards[i],...t,updatedAt:new Date},this.boards.set(n,r);return}}throw Error(`Card with ID ${e} not found`)}async deleteCard(e){await this.simulateLatency();for(let[t,n]of this.boards.entries()){let r=n.cards.filter(t=>t.id!==e);if(r.length!==n.cards.length){n.cards=r,this.boards.set(t,n);return}}throw Error(`Card with ID ${e} not found`)}async moveCard(e,t,n,r){await this.simulateLatency();for(let[i,a]of this.boards.entries()){let o=a.cards.find(t=>t.id===e);if(o){o.columnId=t,n!==void 0&&(o.swimlaneId=n),r!==void 0&&(o.position=r),o.updatedAt=new Date,this.boards.set(i,a);return}}throw Error(`Card with ID ${e} not found`)}async createColumn(e,t){await this.simulateLatency();let n=this.boards.get(e);if(!n)throw Error(`Board with ID ${e} not found`);let r={id:t.id||`column-${Date.now()}`,name:t.name||`Untitled Column`,color:t.color,icon:t.icon,wipLimit:t.wipLimit,position:t.position??n.columns.length,isCollapsed:t.isCollapsed||!1};return n.columns.push(r),this.boards.set(e,n),r}async updateColumn(e,t){await this.simulateLatency();for(let[n,r]of this.boards.entries()){let i=r.columns.findIndex(t=>t.id===e);if(i!==-1){r.columns[i]={...r.columns[i],...t},this.boards.set(n,r);return}}throw Error(`Column with ID ${e} not found`)}async deleteColumn(e){await this.simulateLatency();for(let[t,n]of this.boards.entries()){let r=n.columns.filter(t=>t.id!==e);if(r.length!==n.columns.length){let i=n.cards.filter(t=>t.columnId!==e);n.columns=r,n.cards=i,this.boards.set(t,n);return}}throw Error(`Column with ID ${e} not found`)}async createSwimlane(e,t){await this.simulateLatency();let n=this.boards.get(e);if(!n)throw Error(`Board with ID ${e} not found`);let r={id:t.id||`swimlane-${Date.now()}`,name:t.name||`New Swimlane`,type:t.type||`custom`,color:t.color,position:t.position??(n.swimlanes?.length||0),isCollapsed:!1,...t},i=n.swimlanes||[];return i.push(r),n.swimlanes=i,this.boards.set(e,n),r}async updateSwimlane(e,t){await this.simulateLatency();for(let[n,r]of this.boards.entries()){let i=r.swimlanes||[],a=i.findIndex(t=>t.id===e);if(a!==-1){i[a]={...i[a],...t},r.swimlanes=i,this.boards.set(n,r);return}}throw Error(`Swimlane with ID ${e} not found`)}async deleteSwimlane(e){await this.simulateLatency();for(let[t,n]of this.boards.entries()){let r=n.swimlanes||[];if(r.some(t=>t.id===e)){n.swimlanes=r.filter(t=>t.id!==e),n.cards=n.cards.map(t=>t.swimlaneId===e?{...t,swimlaneId:void 0}:t),this.boards.set(t,n);return}}throw Error(`Swimlane with ID ${e} not found`)}simulateLatency(){return new Promise(e=>setTimeout(e,300))}};function f(e,t){return[t.map(e=>e.header).join(`,`),...e.map(e=>t.map(t=>{let n=e[t.id];if(n==null)return``;let r=String(n);return r.includes(`,`)||r.includes(`
|
|
2
2
|
`)||r.includes(`"`)?`"${r.replace(/"/g,`""`)}"`:r}).join(`,`))].join(`
|
|
3
|
-
`)}exports.EzFlow=c.u,exports.EzKanban=
|
|
3
|
+
`)}exports.EzFlow=c.u,exports.EzKanban=o.t,exports.EzLayout=t.t,exports.EzProvider=e.t,exports.EzScheduler=i.t,exports.EzServiceRegistry=e.h,exports.EzSignature=s.t,exports.EzTable=r.t,exports.EzTreeView=a.t,exports.EzWorkflow=c.d,exports.I18nService=e.c,exports.KanbanService=d,exports.LayoutService=e.o,exports.NotificationService=e.s,exports.SchedulerService=i.r,exports.ThemeService=e.m,exports.cn=e._,exports.convertToCSV=f,exports.formatCurrency=e.l,exports.formatDate=e.u,exports.formatDateTime=e.d,exports.formatNumber=e.f,exports.formatPercent=e.p,exports.useDebounce=o.r,exports.useEzKanban=o.i,exports.useEzScheduler=i.n,exports.useEzServiceRegistry=e.n,exports.useEzTable=r.o,exports.useEzTheme=u,exports.useI18n=n.c,exports.useI18nService=e.r,exports.useMediaQuery=i.a,exports.useNotificationService=e.i,exports.useThemeService=e.a;
|
package/dist/index.es.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import { t as e } from "./EzLayout-
|
|
1
|
+
import { t as e } from "./EzLayout-DFxegglu.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import { _ as t, a as n, c as r, d as i, f as a, h as o, i as s, l as c, m as l, n as u, o as d, p as f, r as p, s as m, t as h, u as g } from "./EzProvider-AlmsYIDk.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as C } from "./
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as O } from "./EzSignature-
|
|
10
|
-
import { d as k, u as A } from "./EzFlow-
|
|
4
|
+
import { c as _ } from "./card-urNaa5h-.js";
|
|
5
|
+
import { o as v, t as y } from "./EzTable-DLbb3nl7.js";
|
|
6
|
+
import { a as b, n as x, r as S, t as C } from "./EzScheduler-D7aH4KCY.js";
|
|
7
|
+
import { t as w } from "./EzTreeView-B2B_Ruwm.js";
|
|
8
|
+
import { i as T, r as E, t as D } from "./EzKanban-CpYH8b8g.js";
|
|
9
|
+
import { t as O } from "./EzSignature-B-CPcf7e.js";
|
|
10
|
+
import { d as k, u as A } from "./EzFlow-CEfPykao.js";
|
|
11
11
|
import { useEffect as j, useState as M } from "react";
|
|
12
|
-
//#region src/
|
|
13
|
-
var N =
|
|
12
|
+
//#region src/shared/hooks/useEzTheme.ts
|
|
13
|
+
var N = () => {
|
|
14
|
+
let e = n(), [t, r] = M(e.getState());
|
|
15
|
+
return j(() => e.subscribe(r), [e]), {
|
|
16
|
+
...t,
|
|
17
|
+
setMode: (t) => e.setMode(t),
|
|
18
|
+
toggleMode: () => e.toggleMode(),
|
|
19
|
+
setThemeColor: (t) => e.setThemeColor(t),
|
|
20
|
+
setRadius: (t) => e.setRadius(t)
|
|
21
|
+
};
|
|
22
|
+
}, P = class {
|
|
14
23
|
name = "KanbanService";
|
|
15
24
|
boards = /* @__PURE__ */ new Map();
|
|
16
25
|
async init() {}
|
|
@@ -207,15 +216,6 @@ var N = class {
|
|
|
207
216
|
simulateLatency() {
|
|
208
217
|
return new Promise((e) => setTimeout(e, 300));
|
|
209
218
|
}
|
|
210
|
-
}, P = () => {
|
|
211
|
-
let e = n(), [t, r] = M(e.getState());
|
|
212
|
-
return j(() => e.subscribe(r), [e]), {
|
|
213
|
-
...t,
|
|
214
|
-
setMode: (t) => e.setMode(t),
|
|
215
|
-
toggleMode: () => e.toggleMode(),
|
|
216
|
-
setThemeColor: (t) => e.setThemeColor(t),
|
|
217
|
-
setRadius: (t) => e.setRadius(t)
|
|
218
|
-
};
|
|
219
219
|
};
|
|
220
220
|
//#endregion
|
|
221
221
|
//#region src/shared/utils/csvUtils.ts
|
|
@@ -228,4 +228,4 @@ function F(e, t) {
|
|
|
228
228
|
}).join(","))].join("\n");
|
|
229
229
|
}
|
|
230
230
|
//#endregion
|
|
231
|
-
export { A as EzFlow,
|
|
231
|
+
export { A as EzFlow, D as EzKanban, e as EzLayout, h as EzProvider, C as EzScheduler, o as EzServiceRegistry, O as EzSignature, y as EzTable, w as EzTreeView, k as EzWorkflow, r as I18nService, P as KanbanService, d as LayoutService, m as NotificationService, S as SchedulerService, l as ThemeService, t as cn, F as convertToCSV, c as formatCurrency, g as formatDate, i as formatDateTime, a as formatNumber, f as formatPercent, E as useDebounce, T as useEzKanban, x as useEzScheduler, u as useEzServiceRegistry, v as useEzTable, N as useEzTheme, _ as useI18n, p as useI18nService, b as useMediaQuery, s as useNotificationService, n as useThemeService };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { _ as e } from "./EzProvider-AlmsYIDk.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/ui/input.tsx
|
|
5
|
+
function n({ className: n, type: r, ref: i, ...a }) {
|
|
6
|
+
return /* @__PURE__ */ t("input", {
|
|
7
|
+
type: r,
|
|
8
|
+
className: e("ez-touch-target flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 ez-text-body ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", n),
|
|
9
|
+
ref: i,
|
|
10
|
+
...a
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { n as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs");let t=require("react");t=e.y(t,1);let n=require("react/jsx-runtime");function r({className:t,type:r,ref:i,...a}){return(0,n.jsx)(`input`,{type:r,className:e._(`ez-touch-target flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 ez-text-body ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,t),ref:i,...a})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
package/dist/kanban.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzKanban-
|
|
1
|
+
"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzKanban-2b9skOep.cjs"),t=require("./KanbanBoard-DdXD-Zjt.cjs");exports.CardEditorModal=t.s,exports.EzKanban=e.t,exports.KanbanBoard=t.t,exports.KanbanCard=t.a,exports.KanbanColumn=t.i,exports.KanbanSwimlane=t.r,exports.KanbanTimelineView=t.n,exports.KanbanToolbar=e.n;
|
package/dist/kanban.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as e, t } from "./EzKanban-
|
|
3
|
-
import { a as n, i as r, n as i, r as a, s as o, t as s } from "./KanbanBoard-
|
|
2
|
+
import { n as e, t } from "./EzKanban-CpYH8b8g.js";
|
|
3
|
+
import { a as n, i as r, n as i, r as a, s as o, t as s } from "./KanbanBoard-CRF0-mYa.js";
|
|
4
4
|
export { o as CardEditorModal, t as EzKanban, s as KanbanBoard, n as KanbanCard, r as KanbanColumn, a as KanbanSwimlane, i as KanbanTimelineView, e as KanbanToolbar };
|
package/dist/layout.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzLayout-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzLayout-EYOfpFXs.cjs");exports.EzHeader=e.a,exports.EzLanguageSwitcher=e.c,exports.EzLayout=e.t,exports.EzOrganizationSwitcher=e.o,exports.EzSidebarFooter=e.n,exports.EzSidebarNav=e.i,exports.EzSidebarNavItem=e.r,exports.EzThemeColorChanger=e.l,exports.EzThemeSwitcher=e.u,exports.EzUserProfile=e.s,exports.SignInForm=e.d,exports.SignUpForm=e.f;
|
package/dist/layout.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "./EzLayout-
|
|
1
|
+
import { a as e, c as t, d as n, f as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "./EzLayout-DFxegglu.js";
|
|
2
2
|
export { e as EzHeader, t as EzLanguageSwitcher, u as EzLayout, s as EzOrganizationSwitcher, o as EzSidebarFooter, i as EzSidebarNav, c as EzSidebarNavItem, a as EzThemeColorChanger, d as EzThemeSwitcher, l as EzUserProfile, n as SignInForm, r as SignUpForm };
|
package/dist/mock-services.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=new Map,t=class{name=`TableService`;async init(){console.log(`[TableService] Initialized`)}async cleanup(){}initializeWithData(t){e.set(`default`,JSON.parse(JSON.stringify(t)))}async getData(t){await this.simulateLatency();let n=e.get(`default`)||[],r=t.state||{},i=r.columnFilters||[],a=r.globalFilter,o=r.sorting||[],s=r.pagination;if(i.length>0&&i.forEach(e=>{n=n.filter(t=>{let n=t[e.id];return n
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=new Map,t=class{name=`TableService`;async init(){console.log(`[TableService] Initialized`)}async cleanup(){}initializeWithData(t){e.set(`default`,JSON.parse(JSON.stringify(t)))}async getData(t){await this.simulateLatency();let n=e.get(`default`)||[],r=t.state||{},i=r.columnFilters||[],a=r.globalFilter,o=r.sorting||[],s=r.pagination;if(i.length>0&&i.forEach(e=>{n=n.filter(t=>{let n=t[e.id];return n!=null&&String(n).toLowerCase().includes(String(e.value).toLowerCase())})}),a){let e=String(a).toLowerCase();n=n.filter(t=>Object.values(t).some(t=>t!=null&&String(t).toLowerCase().includes(e)))}if(o.length>0){let e=o[0];n=[...n].sort((t,n)=>{let r=t[e.id],i=n[e.id];if(r===i)return 0;if(r==null)return 1;if(i==null)return-1;let a=r<i?-1:1;return e.desc?-a:a})}let c=n.length;if(s){let e=s.pageIndex*s.pageSize;n=n.slice(e,e+s.pageSize)}return{data:JSON.parse(JSON.stringify(n)),totalCount:c}}async fetchData(e){return this.getData(e)}async createRow(t){await this.simulateLatency();let n=e.get(`default`)||[],r={id:t.id||Math.random().toString(36).substring(2,9),...t};return n.push(r),e.set(`default`,n),r}async updateRow(t,n){await this.simulateLatency();let r=e.get(`default`)||[],i=r.findIndex(e=>String(e.id)===String(t));if(i!==-1)return r[i]={...r[i],...n},e.set(`default`,r),r[i];throw Error(`Row with ID ${t} not found`)}async deleteRow(t){await this.simulateLatency();let n=(e.get(`default`)||[]).filter(e=>String(e.id)!==String(t));e.set(`default`,n)}simulateLatency(){return new Promise(e=>setTimeout(e,300))}},n=new Map,r=()=>{n.has(`root`)||(n.set(`root`,[{id:`1`,label:`Documents`,hasChildren:!0},{id:`2`,label:`Music`,hasChildren:!0},{id:`3`,label:`Pictures`,hasChildren:!0},{id:`4`,label:`Videos`,hasChildren:!1}]),n.set(`1`,[{id:`1-1`,label:`Work`,hasChildren:!0},{id:`1-2`,label:`Personal`,hasChildren:!1}]),n.set(`1-1`,[{id:`1-1-1`,label:`Project A`,hasChildren:!1},{id:`1-1-2`,label:`Project B`,hasChildren:!1}]),n.set(`2`,[{id:`2-1`,label:`Rock`,hasChildren:!1},{id:`2-2`,label:`Pop`,hasChildren:!1}]))},i=class{name=`TreeService`;constructor(){r()}async simulateLatency(){await new Promise(e=>setTimeout(e,300+Math.random()*500))}async loadNodes(e){await this.simulateLatency();let t=e||`root`;return JSON.parse(JSON.stringify(n.get(t)||[]))}async moveNode(e,t,n){await this.simulateLatency(),console.log(`Moving node ${e} to ${t} at index ${n}`)}async renameNode(e,t){await this.simulateLatency();for(let[r,i]of n.entries()){let a=i.find(t=>t.id===e);a&&(a.label=t,n.set(r,[...i]))}}async deleteNode(e){await this.simulateLatency();for(let[t,r]of n.entries()){let i=r.findIndex(t=>t.id===e);i!==-1&&(r.splice(i,1),n.set(t,[...r]))}}async addNode(e,t){await this.simulateLatency();let r=n.get(e)||[],i={id:`new-${Date.now()}`,label:`New Node`,hasChildren:!1,...t};return n.set(e,[...r,i]),i}};exports.TableService=t,exports.TreeService=i;
|
package/dist/mock-services.es.js
CHANGED
|
@@ -14,7 +14,7 @@ var e = /* @__PURE__ */ new Map(), t = class {
|
|
|
14
14
|
if (i.length > 0 && i.forEach((e) => {
|
|
15
15
|
n = n.filter((t) => {
|
|
16
16
|
let n = t[e.id];
|
|
17
|
-
return n
|
|
17
|
+
return n != null && String(n).toLowerCase().includes(String(e.value).toLowerCase());
|
|
18
18
|
});
|
|
19
19
|
}), a) {
|
|
20
20
|
let e = String(a).toLowerCase();
|
package/dist/scheduler.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzScheduler-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzScheduler-hC9PsLrI.cjs");exports.EzScheduler=e.t;
|
package/dist/scheduler.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./EzScheduler-
|
|
1
|
+
import { t as e } from "./EzScheduler-D7aH4KCY.js";
|
|
2
2
|
export { e as EzScheduler };
|
package/dist/signature.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzSignature-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzSignature-DcmWBPIL.cjs");exports.EzSignature=e.t;
|
package/dist/signature.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./EzSignature-
|
|
1
|
+
import { t as e } from "./EzSignature-B-CPcf7e.js";
|
|
2
2
|
export { e as EzSignature };
|
package/dist/table.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzTable-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzTable-Bcq7TByw.cjs");exports.EzTable=e.t,exports.EzTablePrimitive=e.n,exports.EzTableRoot=e.r,exports.TableInstanceContext=e.i,exports.calculateColWidth=e.j,exports.useTableStore=e.a;
|
package/dist/table.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, i as t, j as n, n as r, r as i, t as a } from "./EzTable-
|
|
1
|
+
import { a as e, i as t, j as n, n as r, r as i, t as a } from "./EzTable-DLbb3nl7.js";
|
|
2
2
|
export { a as EzTable, r as EzTablePrimitive, i as EzTableRoot, t as TableInstanceContext, n as calculateColWidth, e as useTableStore };
|
package/dist/theme-vars.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
Initial theme variables (
|
|
2
|
+
Initial theme variables (Zinc light mode as default).
|
|
3
3
|
These MUST be defined before @theme so Tailwind can reference them.
|
|
4
4
|
They are overridden dynamically by ThemeService.ts based on user preferences.
|
|
5
5
|
*/
|
|
@@ -51,10 +51,20 @@
|
|
|
51
51
|
--ez-status-neutral-dot: oklch(0.6 0 0);
|
|
52
52
|
|
|
53
53
|
--radius: 0.625rem;
|
|
54
|
+
--ez-font-family-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
55
|
+
--ez-font-size-display: 2.25rem;
|
|
56
|
+
--ez-font-size-h1: 1.875rem;
|
|
57
|
+
--ez-font-size-h2: 1.5rem;
|
|
58
|
+
--ez-font-size-h3: 1.25rem;
|
|
54
59
|
--ez-font-size-body: 1rem;
|
|
55
|
-
--ez-font-size-label:
|
|
56
|
-
--ez-font-size-caption: 0.
|
|
60
|
+
--ez-font-size-label: 0.875rem;
|
|
61
|
+
--ez-font-size-caption: 0.75rem;
|
|
62
|
+
--ez-line-height-display: 1.1;
|
|
63
|
+
--ez-line-height-heading: 1.25;
|
|
57
64
|
--ez-line-height-body: 1.5;
|
|
65
|
+
--ez-line-height-label: 1.35;
|
|
66
|
+
--ez-line-height-caption: 1.35;
|
|
67
|
+
--ez-touch-target: 2.75rem;
|
|
58
68
|
--chart-1: oklch(0.646 0.222 41.116);
|
|
59
69
|
--chart-2: oklch(0.6 0.118 184.704);
|
|
60
70
|
--chart-3: oklch(0.398 0.07 227.392);
|
|
@@ -131,10 +141,20 @@
|
|
|
131
141
|
--ez-status-neutral-dot: oklch(0.7 0 0);
|
|
132
142
|
|
|
133
143
|
--radius: 0.5rem;
|
|
144
|
+
--ez-font-family-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
145
|
+
--ez-font-size-display: 2rem;
|
|
146
|
+
--ez-font-size-h1: 1.75rem;
|
|
147
|
+
--ez-font-size-h2: 1.375rem;
|
|
148
|
+
--ez-font-size-h3: 1.125rem;
|
|
134
149
|
--ez-font-size-body: 1rem;
|
|
135
|
-
--ez-font-size-label:
|
|
136
|
-
--ez-font-size-caption: 0.
|
|
150
|
+
--ez-font-size-label: 0.875rem;
|
|
151
|
+
--ez-font-size-caption: 0.75rem;
|
|
152
|
+
--ez-line-height-display: 1.1;
|
|
153
|
+
--ez-line-height-heading: 1.25;
|
|
137
154
|
--ez-line-height-body: 1.5;
|
|
155
|
+
--ez-line-height-label: 1.35;
|
|
156
|
+
--ez-line-height-caption: 1.35;
|
|
157
|
+
--ez-touch-target: 2.75rem;
|
|
138
158
|
--chart-1: oklch(0.488 0.243 264.376);
|
|
139
159
|
--chart-2: oklch(0.696 0.17 162.48);
|
|
140
160
|
--chart-3: oklch(0.769 0.188 70.08);
|
package/dist/treeview.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzTreeView-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./EzTreeView-DLoPKe2i.cjs");exports.EzTreeView=e.t;
|
package/dist/treeview.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./EzTreeView-
|
|
1
|
+
import { t as e } from "./EzTreeView-B2B_Ruwm.js";
|
|
2
2
|
export { e as EzTreeView };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ezux",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.21",
|
|
4
4
|
"description": "Premium React UI Kit for enterprise dashboards. Features high-performance TanStack Table, Scheduler, Kanban, and interactive components. Built with TypeScript for type-safe applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -114,15 +114,18 @@
|
|
|
114
114
|
},
|
|
115
115
|
"scripts": {
|
|
116
116
|
"dev": "vite",
|
|
117
|
-
"build": "tsc && vite build",
|
|
117
|
+
"build": "node node_modules/typescript/bin/tsc && vite build",
|
|
118
118
|
"preview": "vite preview",
|
|
119
119
|
"test": "vitest run",
|
|
120
120
|
"test:ui": "vitest --ui",
|
|
121
121
|
"test:watch": "vitest",
|
|
122
122
|
"test:coverage": "vitest run --coverage",
|
|
123
|
-
"test:public-api": "npm run build && tsc -p test/tsconfig.public-api.json --noEmit",
|
|
123
|
+
"test:public-api": "npm run build && npx tsc -p test/tsconfig.public-api.json --noEmit",
|
|
124
124
|
"test:e2e": "playwright test",
|
|
125
|
-
"test:visual": "percy exec -- playwright test"
|
|
125
|
+
"test:visual": "percy exec -- playwright test",
|
|
126
|
+
"typecheck": "node node_modules/typescript/bin/tsc --noEmit",
|
|
127
|
+
"typecheck:single": "node node_modules/typescript/bin/tsc --noEmit --singleThreaded",
|
|
128
|
+
"typecheck:checkers": "node node_modules/typescript/bin/tsc --noEmit --checkers 4"
|
|
126
129
|
},
|
|
127
130
|
"peerDependencies": {
|
|
128
131
|
"@tanstack/react-form": "^1.33.0",
|
|
@@ -145,66 +148,66 @@
|
|
|
145
148
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
146
149
|
"@dnd-kit/sortable": "^10.0.0",
|
|
147
150
|
"@dnd-kit/utilities": "^3.2.2",
|
|
148
|
-
"@radix-ui/react-context-menu": "^2.3.
|
|
149
|
-
"@radix-ui/react-dropdown-menu": "^2.1.
|
|
150
|
-
"@radix-ui/react-label": "^2.1.
|
|
151
|
-
"@radix-ui/react-radio-group": "^1.4.
|
|
152
|
-
"@radix-ui/react-scroll-area": "^1.2.
|
|
151
|
+
"@radix-ui/react-context-menu": "^2.3.3",
|
|
152
|
+
"@radix-ui/react-dropdown-menu": "^2.1.20",
|
|
153
|
+
"@radix-ui/react-label": "^2.1.11",
|
|
154
|
+
"@radix-ui/react-radio-group": "^1.4.3",
|
|
155
|
+
"@radix-ui/react-scroll-area": "^1.2.14",
|
|
153
156
|
"@radix-ui/react-slot": "^1.3.0",
|
|
154
|
-
"@radix-ui/react-switch": "^1.3.
|
|
155
|
-
"@radix-ui/react-tooltip": "^1.2.
|
|
156
|
-
"@xyflow/react": "^12.11.
|
|
157
|
+
"@radix-ui/react-switch": "^1.3.3",
|
|
158
|
+
"@radix-ui/react-tooltip": "^1.2.12",
|
|
159
|
+
"@xyflow/react": "^12.11.2",
|
|
157
160
|
"class-variance-authority": "^0.7.1",
|
|
158
161
|
"clsx": "^2.1.1",
|
|
159
162
|
"cmdk": "^1.1.1",
|
|
160
|
-
"country-flag-icons": "^1.6.
|
|
163
|
+
"country-flag-icons": "^1.6.20",
|
|
161
164
|
"date-fns": "^4.4.0",
|
|
162
|
-
"dompurify": "^3.4.
|
|
163
|
-
"framer-motion": "^12.
|
|
164
|
-
"lucide-react": "^1.
|
|
165
|
-
"react-resizable-panels": "^4.
|
|
165
|
+
"dompurify": "^3.4.12",
|
|
166
|
+
"framer-motion": "^12.42.2",
|
|
167
|
+
"lucide-react": "^1.25.0",
|
|
168
|
+
"react-resizable-panels": "^4.12.2",
|
|
166
169
|
"tailwind-merge": "^3.6.0",
|
|
167
170
|
"tailwindcss-animate": "^1.0.7"
|
|
168
171
|
},
|
|
169
172
|
"overrides": {
|
|
170
173
|
"minimatch": "10.2.4",
|
|
171
|
-
"ajv": "8.18.0"
|
|
174
|
+
"ajv": "8.18.0",
|
|
175
|
+
"fast-xml-parser": "5.7.0"
|
|
172
176
|
},
|
|
173
177
|
"devDependencies": {
|
|
174
|
-
"@changesets/cli": "^2.
|
|
175
|
-
"@
|
|
176
|
-
"@
|
|
177
|
-
"@percy/cli": "^1.32.2",
|
|
178
|
-
"@percy/playwright": "^1.0.10",
|
|
178
|
+
"@changesets/cli": "^2.31.1",
|
|
179
|
+
"@percy/cli": "^1.32.4",
|
|
180
|
+
"@percy/playwright": "^1.1.1",
|
|
179
181
|
"@playwright/test": "^1.61.1",
|
|
180
|
-
"@tailwindcss/postcss": "^4.3.
|
|
181
|
-
"@tanstack/react-form": "^1.33.
|
|
182
|
-
"@tanstack/react-query": "^5.101.
|
|
182
|
+
"@tailwindcss/postcss": "^4.3.3",
|
|
183
|
+
"@tanstack/react-form": "^1.33.2",
|
|
184
|
+
"@tanstack/react-query": "^5.101.2",
|
|
183
185
|
"@tanstack/react-store": "^0.11.0",
|
|
184
186
|
"@tanstack/react-table": "^8.21.3",
|
|
185
|
-
"@tanstack/react-virtual": "^3.14.
|
|
187
|
+
"@tanstack/react-virtual": "^3.14.6",
|
|
186
188
|
"@tanstack/store": "^0.11.0",
|
|
187
|
-
"@tanstack/virtual-core": "^3.17.
|
|
189
|
+
"@tanstack/virtual-core": "^3.17.4",
|
|
188
190
|
"@testing-library/jest-dom": "^6.9.1",
|
|
189
191
|
"@testing-library/react": "^16.3.2",
|
|
190
192
|
"@testing-library/user-event": "^14.6.1",
|
|
191
193
|
"@types/file-saver": "^2.0.7",
|
|
192
|
-
"@types/node": "^26.
|
|
194
|
+
"@types/node": "^26.1.1",
|
|
193
195
|
"@types/react": "^19.2.17",
|
|
194
196
|
"@types/react-dom": "^19.2.3",
|
|
197
|
+
"@typescript/typescript6": "^6.0.2",
|
|
195
198
|
"@vitejs/plugin-react": "^6.0.3",
|
|
196
|
-
"@vitest/coverage-v8": "^4.1.
|
|
197
|
-
"autoprefixer": "^10.5.
|
|
199
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
200
|
+
"autoprefixer": "^10.5.4",
|
|
198
201
|
"concurrently": "^10.0.3",
|
|
199
202
|
"file-saver": "^2.0.5",
|
|
200
203
|
"happy-dom": "^20.10.6",
|
|
201
|
-
"postcss": "^8.5.
|
|
204
|
+
"postcss": "^8.5.19",
|
|
202
205
|
"rrule": "^2.8.1",
|
|
203
|
-
"tailwindcss": "^4.3.
|
|
206
|
+
"tailwindcss": "^4.3.3",
|
|
204
207
|
"tw-animate-css": "^1.4.0",
|
|
205
|
-
"typescript": "^
|
|
206
|
-
"vite": "^8.1.
|
|
208
|
+
"typescript": "^7.0.2",
|
|
209
|
+
"vite": "^8.1.5",
|
|
207
210
|
"vite-plugin-dts": "^5.0.3",
|
|
208
|
-
"vitest": "^4.1.
|
|
211
|
+
"vitest": "^4.1.10"
|
|
209
212
|
}
|
|
210
213
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-CYlvlbF7.cjs"),r=require("./label-BGgvoZWD.cjs"),i=require("./EzErrorBoundary-d_2g-_EK.cjs"),a=require("./useInitCoreServices-DlALVDNx.cjs"),o=require("./NotificationPanel-CFME00wq.cjs"),s=require("./EzScheduler-B8nV1VWY.cjs"),c=require("./useServiceState-PyYQWxHi.cjs"),l=require("./popover-wZKNvYM5.cjs"),u=require("./select-sVieKbLu.cjs"),d=require("./checkbox-BrCh_Iid.cjs"),f=require("./card-CPlRZxbq.cjs"),p=require("./KanbanBoard-C9bjU_gk.cjs"),m=require("./scroll-area-DSkE2KB_.cjs"),h=require("./DeleteConfirmationModal-CukNDgtX.cjs");let g=require("react");g=e.y(g,1);let _=require("lucide-react"),v=require("react/jsx-runtime"),y=require("@tanstack/store"),b=require("@tanstack/react-store"),x=require("@tanstack/react-query");var S=()=>(0,v.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,v.jsx)(_.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Kanban Board Error`}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`An error occurred while rendering the Kanban board. Please refresh the page or contact support if the issue persists.`})]}),(0,v.jsx)(t.t,{onClick:()=>window.location.reload(),children:`Reload Board`})]})}),C=(e,t=`standard`)=>new y.Store({board:e,selectedCards:[],selectedColumnId:null,view:t,searchQuery:``,activeFilters:{},history:[e],historyIndex:0}),w=e=>({setBoard:t=>{e.setState(e=>{let n=[...e.history.slice(0,e.historyIndex+1),t];return{...e,board:t,history:n,historyIndex:n.length-1}})},addCard:t=>{e.setState(e=>{let n={...e.board,cards:[...e.board.cards,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteCard:t=>{e.setState(e=>{let n={...e.board,cards:e.board.cards.filter(e=>e.id!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},moveCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,columnId:n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},addColumn:t=>{e.setState(e=>{let n={...e.board,columns:[...e.board.columns,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateColumn:(t,n)=>{e.setState(e=>{let r={...e.board,columns:e.board.columns.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteColumn:t=>{e.setState(e=>{let n={...e.board,columns:e.board.columns.filter(e=>e.id!==t),cards:e.board.cards.filter(e=>e.columnId!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},setSelectedCards:t=>{e.setState(e=>({...e,selectedCards:t}))},setSelectedColumnId:t=>{e.setState(e=>({...e,selectedColumnId:t}))},setView:t=>{e.setState(e=>({...e,view:t}))},setSearchQuery:t=>{e.setState(e=>({...e,searchQuery:t}))},setActiveFilters:t=>{e.setState(e=>({...e,activeFilters:t}))},undo:()=>{e.setState(e=>e.historyIndex>0?{...e,board:e.history[e.historyIndex-1],historyIndex:e.historyIndex-1}:e)},redo:()=>{e.setState(e=>e.historyIndex<e.history.length-1?{...e,board:e.history[e.historyIndex+1],historyIndex:e.historyIndex+1}:e)},canUndo:()=>e.state.historyIndex>0,canRedo:()=>e.state.historyIndex<e.state.history.length-1}),T={id:`default-board`,name:`Default Board`,columns:[],cards:[],settings:{allowDragAndDrop:!0,allowMultiSelect:!0,enableWipLimits:!1,defaultView:`standard`},createdAt:new Date,updatedAt:new Date},E=e=>{let t=e.board||T,n=t.id,r=(0,g.useMemo)(()=>C(t,e.view),[n,e.view]),i=(0,g.useMemo)(()=>w(r),[r]),a=(0,b.useStore)(r,e=>e.board),o=(0,b.useStore)(r,e=>e.selectedCards),s=(0,b.useStore)(r,e=>e.selectedColumnId),c=(0,b.useStore)(r,e=>e.view),l=(0,b.useStore)(r,e=>e.searchQuery),u=(0,b.useStore)(r,e=>e.activeFilters),d=(0,g.useRef)(e.board?JSON.stringify(e.board):``),f=(0,g.useRef)(e.view);return(0,g.useEffect)(()=>{if(!e.board)return;let t=JSON.stringify(e.board);t!==d.current&&(d.current=t,i.setBoard(e.board)),e.view&&e.view!==f.current&&(f.current=e.view,i.setView(e.view))},[e.board,e.view,i]),{board:a,selectedCards:o,selectedColumnId:s,view:c,searchQuery:l,activeFilters:u,setBoard:i.setBoard,setSelectedCards:i.setSelectedCards,setSelectedColumnId:i.setSelectedColumnId,setView:i.setView,setSearchQuery:i.setSearchQuery,setActiveFilters:i.setActiveFilters,addCard:i.addCard,updateCard:i.updateCard,deleteCard:i.deleteCard,moveCard:i.moveCard,addColumn:i.addColumn,updateColumn:i.updateColumn,deleteColumn:i.deleteColumn,undo:i.undo,redo:i.redo,canUndo:i.canUndo(),canRedo:i.canRedo(),store:r,actions:i}},D=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createCard(n.id,e):await t.onCardCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:[...n.cards,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create card. Please try again.`,5e3)},onSuccess:e=>{o(`success`,`Card "${e.title}" created successfully`)}}),l=(0,g.useCallback)(async e=>{let t={id:`card-${Date.now()}`,type:e.type||`standard`,title:e.title||`New Card`,description:e.description,columnId:e.columnId||n.columns[0]?.id||``,position:e.position??n.cards.filter(t=>t.columnId===e.columnId).length,assignees:e.assignees||[],tags:e.tags||[],priority:e.priority,metadata:e.metadata||{},createdBy:`current-user`,createdAt:new Date,updatedBy:`current-user`,updatedAt:new Date,...e};return c.mutateAsync(t)},[n,c]),u=(0,x.useMutation)({mutationFn:async({cardId:e,updates:r})=>{let i=a();if(i)await i.updateCard(e,r);else{let i=n.cards.find(t=>t.id===e);i&&await t.onCardUpdate?.({...i,...r},`edit`)}return{cardId:e,updates:r}},onMutate:async({cardId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a=n.cards.map(n=>n.id===e?{...n,...t,updatedAt:new Date}:n);return s({...n,cards:a}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update card`,5e3)},onSuccess:()=>{o(`success`,`Card updated successfully`,2e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({cardId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteCard(e):await t.onCardDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:n.cards.filter(t=>t.id!==e)}),{previousBoard:t,deletedCardTitle:t?.cards.find(t=>t.id===e)?.title}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete card`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Card "${n?.deletedCardTitle||`Card`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let{cardId:r,targetColumnId:i,targetSwimlaneId:o,targetPosition:s}=e,c=a();if(c)await c.moveCard(r,i,o,s);else{let e=n.cards.find(e=>e.id===r);e&&await t.onCardUpdate?.({...e,columnId:i,swimlaneId:o},`move`)}},onMutate:async({cardId:e,targetColumnId:t,targetSwimlaneId:r,targetPosition:a})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let o=i.getQueryData([`board`,n.id]),c=n.cards.find(t=>t.id===e);if(!c)return{previousBoard:o};let l=n.cards.filter(t=>t.id!==e),u=l.filter(e=>e.columnId===t).sort((e,t)=>(e.position??0)-(t.position??0)),d=a===void 0?u.length:Math.min(a,u.length),f=[...u.slice(0,d),{...c,columnId:t,swimlaneId:r,updatedAt:new Date},...u.slice(d)].map((e,t)=>({...e,position:t})),p=c.columnId,m=l.filter(e=>e.columnId===p).sort((e,t)=>(e.position??0)-(t.position??0)).map((e,t)=>({...e,position:t})),h=[...l.filter(e=>e.columnId!==t&&e.columnId!==p),...m,...f];return s({...n,cards:h}),{previousBoard:o}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to move card`,3e3)}});return{createCard:l,updateCard:d,deleteCard:p,moveCard:(0,g.useCallback)(async(e,t,n,r)=>m.mutateAsync({cardId:e,targetColumnId:t,targetSwimlaneId:n,targetPosition:r}),[m]),duplicateCard:(0,g.useCallback)(async e=>{let t=n.cards.find(t=>t.id===e);if(!t)throw Error(`Card not found`);return l({...t,id:`card-${Date.now()}`,title:`${t.title} (Copy)`,position:(t.position??0)+1,createdAt:new Date,updatedAt:new Date})},[n.cards,l]),archiveCard:(0,g.useCallback)(async e=>d(e,{isArchived:!0}),[d]),restoreCard:(0,g.useCallback)(async e=>d(e,{isArchived:!1}),[d])}},O=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createColumn(n.id,e):await t.onColumnCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:[...n.columns,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create column`,5e3)},onSuccess:e=>{o(`success`,`Column "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`column-${Date.now()}`,name:e.name||`New Column`,color:e.color,icon:e.icon,wipLimit:e.wipLimit,position:e.position??n.columns.length,isCollapsed:!1,...e};return c.mutateAsync(t)},[n.columns.length,c]),u=(0,x.useMutation)({mutationFn:async({columnId:e,updates:r})=>{let i=a();if(i)await i.updateColumn(e,r);else{let i=n.columns.find(t=>t.id===e);i&&await t.onColumnUpdate?.({...i,...r})}return{columnId:e,updates:r}},onMutate:async({columnId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,columns:n.columns.map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update column`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({columnId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteColumn(e):await t.onColumnDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.columns.find(t=>t.id===e);return s({...n,columns:n.columns.filter(t=>t.id!==e),cards:n.cards.filter(t=>t.columnId!==e)}),{previousBoard:t,deletedColumnName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete column`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Column "${n?.deletedColumnName||`Column`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateColumn(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:e.map((e,t)=>{let r=n.columns.find(t=>t.id===e);if(!r)throw Error(`Column ${e} not found`);return{...r,position:t}})}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder columns`,3e3)}});return{createColumn:l,updateColumn:d,deleteColumn:p,reorderColumns:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0})},[d]),expandColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1})},[d])}},k=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createSwimlane(n.id,e):await t.onSwimlaneCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:[...n.swimlanes||[],e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create swimlane`,5e3)},onSuccess:e=>{o(`success`,`Swimlane "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`swimlane-${Date.now()}`,name:e.name||`New Swimlane`,type:e.type||`custom`,color:e.color,position:e.position??(n.swimlanes?.length||0),isCollapsed:!1,...e};return c.mutateAsync(t)},[n.swimlanes,c]),u=(0,x.useMutation)({mutationFn:async({swimlaneId:e,updates:r})=>{let i=a();if(i)await i.updateSwimlane(e,r);else{let i=n.swimlanes?.find(t=>t.id===e);i&&await t.onSwimlaneUpdate?.({...i,...r})}return{swimlaneId:e,updates:r}},onMutate:async({swimlaneId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:(n.swimlanes||[]).map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update swimlane`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({swimlaneId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteSwimlane(e):await t.onSwimlaneDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.swimlanes?.find(t=>t.id===e);return s({...n,swimlanes:(n.swimlanes||[]).filter(t=>t.id!==e),cards:n.cards.map(t=>t.swimlaneId===e?{...t,swimlaneId:void 0}:t)}),{previousBoard:t,deletedSwimlaneName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete swimlane`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Swimlane "${n?.deletedSwimlaneName||`Swimlane`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateSwimlane(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:e.map((e,t)=>{let r=n.swimlanes?.find(t=>t.id===e);return r?{...r,position:t}:null}).filter(Boolean)}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder swimlanes`,3e3)}});return{createSwimlane:l,updateSwimlane:d,deleteSwimlane:p,reorderSwimlanes:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!0})},[d,t.onSwimlaneToggle]),expandSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!1})},[d,t.onSwimlaneToggle])}},A=e=>{let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)({});return{filteredCards:(0,g.useMemo)(()=>e.cards.filter(e=>{if(t){let n=t.toLowerCase();if(!(e.title.toLowerCase().includes(n)||e.description?.toLowerCase().includes(n)||e.tags.some(e=>e.name.toLowerCase().includes(n))))return!1}return!(r.tags&&r.tags.length>0&&!e.tags.some(e=>r.tags?.includes(e.id))||r.assignees&&r.assignees.length>0&&!e.assignees.some(e=>r.assignees?.includes(e.id))||r.priority&&r.priority.length>0&&e.priority&&!r.priority.includes(e.priority)||r.columns&&r.columns.length>0&&!r.columns.includes(e.columnId))}),[e.cards,t,r]),searchQuery:t,setSearchQuery:n,activeFilters:r,setActiveFilters:i,clearFilters:()=>{n(``),i({})}}},ee=(t,n,r=!1,i)=>{let a=e.n(),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null);return{draggedCard:o,dragOverColumn:c,dragOverSwimlane:u,handleDragStart:(0,g.useCallback)(e=>{if(i?.onCardDragStart){let t={card:e,columnId:e.columnId,cancel:!1};if(i.onCardDragStart(t),t.cancel)return}s(e)},[i?.onCardDragStart]),handleDragOver:(0,g.useCallback)((e,t)=>{o&&c!==e&&(c&&i?.onCardDragLeave&&i.onCardDragLeave({card:o,targetColumnId:c}),i?.onCardDragEnter&&i.onCardDragEnter({card:o,targetColumnId:e})),l(e),t&&d(t)},[o,i,c]),handleDragEnd:(0,g.useCallback)(()=>{o&&i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:o.columnId}),s(null),l(null),d(null)},[o,i?.onCardDragStop]),handleDrop:(0,g.useCallback)((e,c,u)=>{if(!o)return;let f=t.columns.find(t=>t.id===e);if(f?.wipLimit&&t.cards.filter(t=>t.columnId===e&&!t.isArchived).length>=f.wipLimit&&(o.columnId!==e||o.swimlaneId!==c)){let e=a.get(`NotificationService`);if(e&&e.add({type:`warning`,message:`WIP limit reached for "${f.name}" (${f.wipLimit} cards)`,duration:4e3}),r){e?.add({type:`error`,message:`Cannot move card: "${f.name}" is full (Strict WIP)`,duration:4e3}),s(null),l(null),d(null);return}}n(o.id,e,c,u),i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:e}),s(null),l(null),d(null)},[o,t,n,i?.onCardDragStop])}},j=(e,t={})=>{let n=c.t(`I18nService`)?.dir||`ltr`,r=e.dir===`auto`||!e.dir?n:e.dir,i={showSpinner:()=>{},hideSpinner:()=>{}},{board:a,setBoard:o,selectedCards:l,setSelectedCards:u,selectedColumnId:d,setSelectedColumnId:f,view:p,setView:m,undo:h,redo:_,canUndo:v,canRedo:y}=E(e),[b,x]=(0,g.useState)(null),{createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N}=D(e,a),{createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z}=O(e,a),{createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G}=k(e,a),{draggedCard:K,dragOverColumn:q,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie}=ee(a,T,e.wipStrict,e),{filteredCards:J,searchQuery:Y,setSearchQuery:X,activeFilters:Z,setActiveFilters:Q,clearFilters:$}=A(a),{selectedIndex:ae,setSelectedIndex:oe}=s.i({totalItems:J.length,columns:1,enabled:!e.readOnly,onSelect:e=>{let t=J[e];t&&(x(t.id),(document.getElementById(t.id)||document.querySelector(`[data-card-id="${t.id}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`}))},onAction:e=>{let n=J[e];n&&t.onCardClick&&t.onCardClick(n)}}),se=(0,g.useMemo)(()=>({addCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,getCard:e=>a.cards.find(t=>t.id===e),getCards:()=>a.cards,getCardsInColumn:e=>a.cards.filter(t=>t.columnId===e),getOrderedCards:e=>a.cards.filter(t=>t.columnId===e).sort((e,t)=>(e.position??0)-(t.position??0)),addColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,getColumn:e=>a.columns.find(t=>t.id===e),getColumns:()=>a.columns,addSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,getSwimlane:e=>a.swimlanes?.find(t=>t.id===e),getSwimlanes:()=>a.swimlanes||[],selectCard:e=>u([e]),selectCards:u,deselectCard:e=>{u(l.filter(t=>t!==e))},deselectAllCards:()=>u([]),getSelectedCards:()=>a.cards.filter(e=>l.includes(e.id)),focusCard:e=>{let t=document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`);t instanceof HTMLElement&&(t.focus(),t.scrollIntoView({behavior:`smooth`,block:`center`}))},highlightCard:(e,t=2e3)=>{x(e),setTimeout(()=>x(null),t)},setView:m,getView:()=>p,scrollToColumn:(e,t)=>{(document.getElementById(`column-${e}`)||document.querySelector(`[data-column-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`,inline:`center`})},scrollToCard:(e,t)=>{(document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`})},setSearchQuery:X,getSearchQuery:()=>Y,setActiveFilters:Q,getActiveFilters:()=>Z,clearFilters:$,getFilteredCards:()=>J,getBoard:()=>a,setBoard:o,refresh:async()=>{},reset:()=>o(e.board),showSpinner:i.showSpinner,hideSpinner:i.hideSpinner,forceUpdate:()=>{},getStatistics:()=>({totalCards:a.cards.length,totalColumns:a.columns.length}),validate:()=>({isValid:!0,errors:[]}),...t}),[a,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,l,u,d,f,Y,X,Z,Q,$,J,o,e.board,i,t,p,e.wipStrict,e]);return(0,g.useMemo)(()=>({state:{board:a,selectedCards:l,highlightedCardId:b,selectedColumnId:d,view:p,draggedCard:K,dragOverColumn:q,filteredCards:J,searchQuery:Y,activeFilters:Z,selectedIndex:ae,canUndo:v,canRedo:y},actions:{setBoard:o,setSelectedCards:u,setSelectedColumnId:f,setView:m,createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie,setSearchQuery:X,setActiveFilters:Q,clearFilters:$,setSelectedIndex:oe,undo:h,redo:_},services:{serviceRegistry:null},imperativeAPI:se,dir:r,baseApi:i}),[i,se,a,o,l,u,b,d,f,p,m,r,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,te,ne,re,ie,J,Y,X,Z,Q,$,null,ae,oe,h,_,v,y])};function M(e,t=300){let[n,r]=(0,g.useState)(e);return(0,g.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}var N=({board:e,activeFilters:n,onFiltersChange:i,onClearFilters:a})=>{let o=Array.from(new Set(e.cards.flatMap(e=>e.tags).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),s=Array.from(new Set(e.cards.flatMap(e=>e.assignees).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),c=[`low`,`medium`,`high`,`critical`],u=e=>{let t=n.priority||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,priority:r.length?r:void 0})},f=e=>{let t=n.tags||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,tags:r.length?r:void 0})},h=e=>{let t=n.assignees||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,assignees:r.length?r:void 0})},g=(n.priority?.length||0)+(n.tags?.length||0)+(n.assignees?.length||0);return(0,v.jsxs)(l.t,{children:[(0,v.jsx)(l.r,{asChild:!0,children:(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`relative`,children:[(0,v.jsx)(_.Filter,{className:`h-4 w-4 mr-2`}),`Filters`,g>0&&(0,v.jsx)(p.f,{variant:`secondary`,className:`ml-2 h-5 min-w-[20px] px-1 text-[10px] flex items-center justify-center`,children:g})]})}),(0,v.jsxs)(l.n,{className:`w-80 p-4`,align:`start`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,v.jsx)(`h4`,{className:`font-medium leading-none`,children:`Filters`}),g>0&&(0,v.jsx)(t.t,{variant:`ghost`,size:`sm`,className:`h-auto p-0 text-xs text-muted-foreground`,onClick:a,children:`Clear all`})]}),(0,v.jsx)(m.t,{className:`h-[300px] pr-4`,children:(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Priority`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`priority-${e}`,checked:n.priority?.includes(e),onCheckedChange:()=>u(e)}),(0,v.jsx)(r.t,{htmlFor:`priority-${e}`,className:`capitalize text-sm font-normal cursor-pointer`,children:e})]},e))})]}),s.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Assignees`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`assignee-${e.id}`,checked:n.assignees?.includes(e.id),onCheckedChange:()=>h(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`assignee-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[e.avatarUrl&&(0,v.jsx)(`img`,{src:e.avatarUrl,alt:``,className:`w-4 h-4 rounded-full`}),e.name]})]},e.id))})]}),o.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Tags`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`tag-${e.id}`,checked:n.tags?.includes(e.id),onCheckedChange:()=>f(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`tag-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[(0,v.jsx)(`div`,{className:`w-2 h-2 rounded-full`,style:{backgroundColor:e.color}}),e.name]})]},e.id))})]})]})})]})]})},P=({searchQuery:r,onSearchChange:i,onAddCardClick:a,onAddColumn:o,board:s,className:c,view:l=`standard`,onViewChange:d,onUndo:p,onRedo:m,canUndo:h,canRedo:y,activeFilters:b,onFiltersChange:x})=>{let S=e.n(),[C,w]=(0,g.useState)(r),{t:T}=f.c(),E=M(C,300);(0,g.useEffect)(()=>{i(E)},[E,i]),(0,g.useEffect)(()=>{w(r)},[r]);let D=()=>{a?.()},O=e=>{if(s)try{let t=S.get(`ExportService`);if(e===`csv`){let e=s.cards.map(e=>({id:e.id,title:e.title,description:e.description||``,column:s.columns.find(t=>t.id===e.columnId)?.name||``,priority:e.priority||``,assignees:e.assignees?.map(e=>e.name).join(`; `)||``,tags:e.tags?.map(e=>e.name).join(`; `)||``,dueDate:e.dueDate?new Date(e.dueDate).toISOString().split(`T`)[0]:``,isArchived:e.isArchived?`Yes`:`No`}));if(t)t.exportToCSV(e,[{header:`ID`,accessorKey:`id`},{header:`Title`,accessorKey:`title`},{header:`Description`,accessorKey:`description`},{header:`Column`,accessorKey:`column`},{header:`Priority`,accessorKey:`priority`},{header:`Assignees`,accessorKey:`assignees`},{header:`Tags`,accessorKey:`tags`},{header:`Due Date`,accessorKey:`dueDate`},{header:`Archived`,accessorKey:`isArchived`}],{fileName:`kanban-board-${s.id}`});else{let t=Object.keys(e[0]||{}),n=[t.join(`,`),...e.map(e=>t.map(t=>`"${e[t]}"`).join(`,`))].join(`
|
|
2
|
-
`),r=new Blob([n],{type:`text/csv`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`kanban-board-${s.id}.csv`,a.click(),URL.revokeObjectURL(i)}}else{let e=JSON.stringify(s,null,2);if(t&&t.download)t.download(e,`kanban-board-${s.id}.json`);else{let t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`kanban-board-${s.id}.json`,r.click(),URL.revokeObjectURL(n)}}let n=S.get(`NotificationService`);n&&n.add({type:`success`,message:`Board exported as ${e.toUpperCase()}`,duration:3e3})}catch(e){let t=S.get(`NotificationService`);t&&t.add({type:`error`,message:`Failed to export board: ${e instanceof Error?e.message:`Unknown error`}`,duration:4e3})}};return(0,v.jsx)(v.Fragment,{children:(0,v.jsxs)(`div`,{className:`flex items-center gap-4 p-4 border-b ${c||``}`,children:[(0,v.jsxs)(`div`,{className:`flex gap-1 mr-2`,children:[(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:p,disabled:!h,title:`Undo (Ctrl+Z)`,children:(0,v.jsx)(_.Undo2,{className:`h-4 w-4`})}),(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:m,disabled:!y,title:`Redo (Ctrl+Shift+Z)`,children:(0,v.jsx)(_.Redo2,{className:`h-4 w-4`})})]}),(0,v.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,v.jsx)(_.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,v.jsx)(n.t,{placeholder:T(`search_placeholder`),value:C,onChange:e=>w(e.target.value),className:`pl-9`})]}),(0,v.jsx)(`div`,{className:`w-[180px]`,children:(0,v.jsxs)(u.t,{value:l,onValueChange:e=>d?.(e),children:[(0,v.jsx)(u.i,{children:(0,v.jsx)(u.a,{placeholder:`Select view`})}),(0,v.jsxs)(u.n,{children:[(0,v.jsx)(u.r,{value:`standard`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),T(`view_standard`)]})}),(0,v.jsx)(u.r,{value:`swimlane`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layers,{className:`h-4 w-4 mr-2`}),T(`view_swimlane`)]})}),(0,v.jsx)(u.r,{value:`timeline`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),` `,T(`view_timeline`)]})})]})]})}),s&&(0,v.jsx)(N,{board:s,activeFilters:b||{},onFiltersChange:e=>x?.(e),onClearFilters:()=>x?.({})}),s&&(0,v.jsxs)(`div`,{className:`flex gap-1`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`csv`),title:`Export as CSV`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`CSV`]}),(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`json`),title:`Export as JSON`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`JSON`]})]}),(0,v.jsxs)(`div`,{className:`ml-auto flex gap-2`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:o,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_column`)]}),(0,v.jsxs)(t.t,{size:`sm`,onClick:D,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_card`)]})]})]})})},F=new x.QueryClient,I=(0,g.forwardRef)((e,t)=>{let{className:n,readOnly:r,...o}=e;return a.t(),(0,v.jsx)(x.QueryClientProvider,{client:F,children:(0,v.jsx)(i.t,{fallback:(0,v.jsx)(S,{}),children:(0,v.jsx)(L,{ref:t,className:n,readOnly:r,...o})})})});I.displayName=`EzKanban`;var L=(0,g.forwardRef)((t,n)=>{let{className:r,readOnly:i,onCardClick:a,onCardDoubleClick:s}=t,{state:c,actions:l,dir:u,imperativeAPI:d}=j(t,n),[f,m]=(0,g.useState)(!1),[_,y]=(0,g.useState)(void 0),[b,x]=(0,g.useState)(!1),[S,C]=(0,g.useState)(null);(0,g.useImperativeHandle)(n,()=>d,[d]);let w=e=>{y({columnId:e||c.selectedColumnId||c.board.columns[0]?.id,title:``,description:``,priority:`medium`}),m(!0)},T=async e=>{e.id?await l.updateCard(e.id,e):await l.createCard(e),m(!1)},E=e=>{t.confirmOnDelete===!1?(l.deleteCard(e),m(!1)):(C(e),x(!0),m(!1))},D=async()=>{S&&(await l.deleteCard(S),x(!1),C(null))},O=e=>{i||(y(e),m(!0)),a?.(e)},k=e=>{let t=c.board.columns.find(t=>t.id===e);t&&(t.isCollapsed?l.expandColumn(e):l.collapseColumn(e))},A=e=>{let t=c.board.swimlanes?.find(t=>t.id===e);t&&(t.isCollapsed?l.expandSwimlane(e):l.collapseSwimlane(e))};return(0,v.jsxs)(`div`,{className:e._(`flex flex-col h-full bg-background`,r),dir:u,children:[(0,v.jsx)(o.t,{}),(0,v.jsx)(o.t,{}),!i&&(t.slots?.toolbar?(0,v.jsx)(t.slots.toolbar,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo,...t.slotProps?.toolbar||{}}):(0,v.jsx)(P,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo})),(0,v.jsx)(`div`,{className:`flex-1 overflow-hidden h-full`,children:t.slots?.board?(0,v.jsx)(t.slots.board,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`,...t.slotProps?.board||{}}):(0,v.jsx)(p.t,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`})}),t.slots?.cardEditor?(0,v.jsx)(t.slots.cardEditor,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns,...t.slotProps?.cardEditor||{}}):(0,v.jsx)(p.s,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns}),(0,v.jsx)(h.t,{isOpen:b,onClose:()=>x(!1),onConfirm:D,title:`Confirm Delete`,message:`Are you sure you want to delete this card?`,description:`This action cannot be undone.`})]})});L.displayName=`EzKanbanInner`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return I}});
|