ezux 1.1.18 → 1.1.19

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.
Files changed (30) hide show
  1. package/dist/{EzEventModal-C079wLjP.js → EzEventModal-BDSHG11m.js} +58 -52
  2. package/dist/EzEventModal-BrCBSXBM.cjs +1 -0
  3. package/dist/{EzKanban-BlJWybKe.js → EzKanban-COcGidzh.js} +2 -2
  4. package/dist/{EzKanban-DdKODRRv.cjs → EzKanban-DokdXGqQ.cjs} +1 -1
  5. package/dist/EzScheduler-B8nV1VWY.cjs +1 -0
  6. package/dist/{EzScheduler-C1Jtvvju.js → EzScheduler-CjQbi1Na.js} +21 -14
  7. package/dist/EzSchedulerToolbar-ihfe-5Yd.cjs +1 -0
  8. package/dist/{EzSchedulerToolbar-Ba4gbvUg.js → EzSchedulerToolbar-jMw8KB8k.js} +34 -49
  9. package/dist/{KanbanBoard-B7_Z5sh1.js → KanbanBoard-BsZP_PJi.js} +2 -2
  10. package/dist/{KanbanBoard-CyitudI1.cjs → KanbanBoard-C9bjU_gk.cjs} +1 -1
  11. package/dist/advanced.cjs +1 -1
  12. package/dist/advanced.es.js +4 -4
  13. package/dist/components/EzScheduler/EzScheduler.types.d.ts +3 -0
  14. package/dist/components/EzScheduler/EzSchedulerToolbar.d.ts +2 -1
  15. package/dist/components/EzScheduler/components/EzEventModal.d.ts +3 -0
  16. package/dist/components/EzScheduler/hooks/useSchedulerImperative.d.ts +1 -1
  17. package/dist/components/ui/date-time-picker.d.ts +9 -1
  18. package/dist/date-time-picker-D0w0sDgq.cjs +1 -0
  19. package/dist/{date-time-picker-fUzf4TnU.js → date-time-picker-DqdtBpAg.js} +58 -42
  20. package/dist/index.cjs +1 -1
  21. package/dist/index.es.js +2 -2
  22. package/dist/kanban.cjs +1 -1
  23. package/dist/kanban.es.js +2 -2
  24. package/dist/scheduler.cjs +1 -1
  25. package/dist/scheduler.es.js +1 -1
  26. package/package.json +1 -1
  27. package/dist/EzEventModal-CAA9cAM0.cjs +0 -1
  28. package/dist/EzScheduler-CkqTngI6.cjs +0 -1
  29. package/dist/EzSchedulerToolbar-BJwTpgas.cjs +0 -1
  30. package/dist/date-time-picker-Bs-7XzHD.cjs +0 -1
@@ -3,7 +3,7 @@ import { _ as t } from "./EzProvider-AlmsYIDk.js";
3
3
  import { t as n } from "./button-CYyNwV8S.js";
4
4
  import { t as r } from "./input-Cj3sQK3M.js";
5
5
  import { t as i } from "./label-DWEV--5W.js";
6
- import { t as a } from "./date-time-picker-fUzf4TnU.js";
6
+ import { t as a } from "./date-time-picker-DqdtBpAg.js";
7
7
  import { useEffect as o } from "react";
8
8
  import { Paperclip as s, Trash2 as c, X as l } from "lucide-react";
9
9
  import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
@@ -39,8 +39,8 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
39
39
  label: "S",
40
40
  value: "SA"
41
41
  }
42
- ], _ = ({ isOpen: e, onClose: h, mode: _, event: v, onSave: y, onDelete: b, locale: x, editorTemplate: S, headerTemplate: C, footerTemplate: w, headerFieldsTemplate: T, hiddenFields: E = [] }) => {
43
- let D = p({
42
+ ], _ = ({ isOpen: e, onClose: h, mode: _, event: v, onSave: y, onDelete: b, locale: x, slotDuration: S, timeOptions: C, editorTemplate: w, headerTemplate: T, footerTemplate: E, headerFieldsTemplate: D, hiddenFields: O = [] }) => {
43
+ let k = p({
44
44
  defaultValues: {
45
45
  title: v?.title || "",
46
46
  start: v?.start,
@@ -91,15 +91,15 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
91
91
  }
92
92
  });
93
93
  if (o(() => {
94
- e && D.reset();
94
+ e && k.reset();
95
95
  }, [
96
96
  e,
97
97
  v,
98
- D
98
+ k
99
99
  ]), !e) return null;
100
- let O = (e) => {
101
- e?.preventDefault(), e?.stopPropagation(), D.handleSubmit();
102
- }, k = _ === "view";
100
+ let A = (e) => {
101
+ e?.preventDefault(), e?.stopPropagation(), k.handleSubmit();
102
+ }, j = _ === "view";
103
103
  return m(/* @__PURE__ */ f("div", {
104
104
  "data-testid": "ez-event-modal",
105
105
  style: {
@@ -136,7 +136,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
136
136
  /* @__PURE__ */ d("div", {
137
137
  className: "flex items-center justify-between shrink-0 bg-background",
138
138
  style: { padding: "16px 40px" },
139
- children: C ? C(v || {}, _) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("h2", {
139
+ children: T ? T(v || {}, _) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("h2", {
140
140
  className: "text-xl font-bold tracking-tight text-foreground",
141
141
  children: [
142
142
  _ === "create" && "New Event",
@@ -151,23 +151,23 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
151
151
  children: /* @__PURE__ */ d(l, { className: "w-5 h-5" })
152
152
  })] })
153
153
  }),
154
- S ? /* @__PURE__ */ d("div", {
154
+ w ? /* @__PURE__ */ d("div", {
155
155
  className: "overflow-y-auto custom-scrollbar flex-1 bg-background",
156
156
  style: { padding: "8px 40px 32px 40px" },
157
- children: S(v || {})
157
+ children: w(v || {})
158
158
  }) : /* @__PURE__ */ f("form", {
159
- onSubmit: O,
159
+ onSubmit: A,
160
160
  className: "space-y-6 overflow-y-auto custom-scrollbar flex-1 bg-background",
161
161
  style: { padding: "8px 40px 32px 40px" },
162
162
  children: [
163
- T?.({
163
+ D?.({
164
164
  event: v || {},
165
165
  mode: _,
166
- isReadOnly: k
166
+ isReadOnly: j
167
167
  }),
168
168
  /* @__PURE__ */ f("div", {
169
169
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
170
- children: [/* @__PURE__ */ d(D.Field, {
170
+ children: [/* @__PURE__ */ d(k.Field, {
171
171
  name: "title",
172
172
  validators: { onChange: ({ value: e }) => e ? void 0 : "Title is required" },
173
173
  children: (e) => /* @__PURE__ */ f("div", {
@@ -184,7 +184,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
184
184
  value: e.state.value,
185
185
  onChange: (t) => e.handleChange(t.target.value),
186
186
  onBlur: e.handleBlur,
187
- disabled: k,
187
+ disabled: j,
188
188
  className: t("h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all", e.state.meta.errors.length > 0 && "border-destructive focus-visible:border-destructive ring-destructive/20")
189
189
  }),
190
190
  e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
@@ -193,7 +193,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
193
193
  })
194
194
  ]
195
195
  })
196
- }), !E.includes("location") && /* @__PURE__ */ d(D.Field, {
196
+ }), !O.includes("location") && /* @__PURE__ */ d(k.Field, {
197
197
  name: "location",
198
198
  children: (e) => /* @__PURE__ */ f("div", {
199
199
  className: "space-y-2",
@@ -206,7 +206,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
206
206
  placeholder: "Add location",
207
207
  value: e.state.value,
208
208
  onChange: (t) => e.handleChange(t.target.value),
209
- disabled: k,
209
+ disabled: j,
210
210
  className: "h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all"
211
211
  })]
212
212
  })
@@ -214,7 +214,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
214
214
  }),
215
215
  /* @__PURE__ */ f("div", {
216
216
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
217
- children: [/* @__PURE__ */ d(D.Field, {
217
+ children: [/* @__PURE__ */ d(k.Field, {
218
218
  name: "start",
219
219
  validators: { onChange: ({ value: e }) => e ? void 0 : "Start date is required" },
220
220
  children: (e) => /* @__PURE__ */ f("div", {
@@ -227,10 +227,12 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
227
227
  /* @__PURE__ */ d(a, {
228
228
  date: e.state.value,
229
229
  setDate: (t) => e.handleChange(t),
230
- disabled: k,
230
+ disabled: j,
231
231
  required: !0,
232
232
  locale: x,
233
- mode: D.getFieldValue("isAllDay") ? "date" : "datetime",
233
+ mode: k.getFieldValue("isAllDay") ? "date" : "datetime",
234
+ slotDuration: S,
235
+ timeOptions: C,
234
236
  className: "border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20"
235
237
  }),
236
238
  e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
@@ -239,7 +241,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
239
241
  })
240
242
  ]
241
243
  })
242
- }), /* @__PURE__ */ d(D.Field, {
244
+ }), /* @__PURE__ */ d(k.Field, {
243
245
  name: "end",
244
246
  validators: { onChange: ({ value: e, fieldApi: t }) => {
245
247
  if (!e) return "End date is required";
@@ -256,11 +258,13 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
256
258
  /* @__PURE__ */ d(a, {
257
259
  date: e.state.value,
258
260
  setDate: (t) => e.handleChange(t),
259
- disabled: k,
261
+ disabled: j,
260
262
  required: !0,
261
263
  locale: x,
262
- mode: D.getFieldValue("isAllDay") ? "date" : "datetime",
263
- minDate: D.getFieldValue("start"),
264
+ mode: k.getFieldValue("isAllDay") ? "date" : "datetime",
265
+ minDate: k.getFieldValue("start"),
266
+ slotDuration: S,
267
+ timeOptions: C,
264
268
  className: t("border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20", e.state.meta.errors.length > 0 && "border-destructive focus-visible:border-destructive ring-destructive/20")
265
269
  }),
266
270
  e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
@@ -273,7 +277,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
273
277
  }),
274
278
  /* @__PURE__ */ f("div", {
275
279
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
276
- children: [/* @__PURE__ */ d(D.Field, {
280
+ children: [/* @__PURE__ */ d(k.Field, {
277
281
  name: "isAllDay",
278
282
  children: (e) => /* @__PURE__ */ d("div", {
279
283
  className: "flex items-center h-10",
@@ -283,7 +287,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
283
287
  type: "checkbox",
284
288
  checked: e.state.value,
285
289
  onChange: (t) => e.handleChange(t.target.checked),
286
- disabled: k,
290
+ disabled: j,
287
291
  className: "h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer"
288
292
  }), /* @__PURE__ */ d("span", {
289
293
  className: "text-[14px] font-medium text-foreground/70 group-hover:text-foreground",
@@ -291,7 +295,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
291
295
  })]
292
296
  })
293
297
  })
294
- }), /* @__PURE__ */ d(D.Field, {
298
+ }), /* @__PURE__ */ d(k.Field, {
295
299
  name: "isTimezoneEnabled",
296
300
  children: (e) => /* @__PURE__ */ d("div", {
297
301
  className: "flex items-center h-10",
@@ -301,7 +305,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
301
305
  type: "checkbox",
302
306
  checked: e.state.value,
303
307
  onChange: (t) => e.handleChange(t.target.checked),
304
- disabled: k,
308
+ disabled: j,
305
309
  className: "h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer"
306
310
  }), /* @__PURE__ */ d("span", {
307
311
  className: "text-[14px] font-medium text-foreground/70 group-hover:text-foreground",
@@ -311,11 +315,11 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
311
315
  })
312
316
  })]
313
317
  }),
314
- /* @__PURE__ */ d(D.Subscribe, {
318
+ /* @__PURE__ */ d(k.Subscribe, {
315
319
  selector: (e) => [e.values.isTimezoneEnabled],
316
320
  children: ([e]) => e && /* @__PURE__ */ f("div", {
317
321
  className: "grid grid-cols-1 md:grid-cols-2 gap-6 p-6 bg-highlight/50 rounded-lg border border-border animate-in slide-in-from-top-2 duration-300",
318
- children: [/* @__PURE__ */ d(D.Field, {
322
+ children: [/* @__PURE__ */ d(k.Field, {
319
323
  name: "startTimezone",
320
324
  children: (e) => /* @__PURE__ */ f("div", {
321
325
  className: "space-y-2",
@@ -342,7 +346,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
342
346
  ]
343
347
  })]
344
348
  })
345
- }), /* @__PURE__ */ d(D.Field, {
349
+ }), /* @__PURE__ */ d(k.Field, {
346
350
  name: "endTimezone",
347
351
  children: (e) => /* @__PURE__ */ f("div", {
348
352
  className: "space-y-2",
@@ -374,7 +378,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
374
378
  }),
375
379
  /* @__PURE__ */ f("div", {
376
380
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
377
- children: [/* @__PURE__ */ d(D.Field, {
381
+ children: [/* @__PURE__ */ d(k.Field, {
378
382
  name: "repeatFrequency",
379
383
  children: (e) => /* @__PURE__ */ f("div", {
380
384
  className: "space-y-2",
@@ -409,9 +413,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
409
413
  ]
410
414
  })]
411
415
  })
412
- }), /* @__PURE__ */ d(D.Subscribe, {
416
+ }), /* @__PURE__ */ d(k.Subscribe, {
413
417
  selector: (e) => [e.values.repeatFrequency],
414
- children: ([e]) => e !== "Never" && /* @__PURE__ */ d(D.Field, {
418
+ children: ([e]) => e !== "Never" && /* @__PURE__ */ d(k.Field, {
415
419
  name: "repeatEndLevel",
416
420
  children: (e) => /* @__PURE__ */ f("div", {
417
421
  className: "space-y-2 animate-in slide-in-from-top-2 duration-300",
@@ -441,12 +445,12 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
441
445
  })
442
446
  })]
443
447
  }),
444
- /* @__PURE__ */ d(D.Subscribe, {
448
+ /* @__PURE__ */ d(k.Subscribe, {
445
449
  selector: (e) => [e.values.repeatFrequency, e.values.repeatEndLevel],
446
450
  children: ([e, t]) => e !== "Never" && /* @__PURE__ */ f("div", {
447
451
  className: "grid grid-cols-1 md:grid-cols-2 gap-6 animate-in slide-in-from-top-2 duration-300",
448
452
  children: [
449
- /* @__PURE__ */ d(D.Field, {
453
+ /* @__PURE__ */ d(k.Field, {
450
454
  name: "repeatInterval",
451
455
  children: (t) => /* @__PURE__ */ f("div", {
452
456
  className: "space-y-2",
@@ -488,7 +492,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
488
492
  })]
489
493
  })
490
494
  }),
491
- t === "Until" && /* @__PURE__ */ d(D.Field, {
495
+ t === "Until" && /* @__PURE__ */ d(k.Field, {
492
496
  name: "repeatEndUntil",
493
497
  children: (e) => /* @__PURE__ */ f("div", {
494
498
  className: "space-y-2 animate-in slide-in-from-top-1",
@@ -498,15 +502,17 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
498
502
  }), /* @__PURE__ */ d(a, {
499
503
  date: e.state.value,
500
504
  setDate: (t) => e.handleChange(t),
501
- disabled: k,
505
+ disabled: j,
502
506
  locale: x,
503
507
  mode: "date",
504
- minDate: D.getFieldValue("start"),
508
+ minDate: k.getFieldValue("start"),
509
+ slotDuration: S,
510
+ timeOptions: C,
505
511
  className: "border-border focus:border-primary"
506
512
  })]
507
513
  })
508
514
  }),
509
- t === "Count" && /* @__PURE__ */ d(D.Field, {
515
+ t === "Count" && /* @__PURE__ */ d(k.Field, {
510
516
  name: "repeatEndCount",
511
517
  children: (e) => /* @__PURE__ */ f("div", {
512
518
  className: "space-y-2 animate-in slide-in-from-top-1",
@@ -525,9 +531,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
525
531
  ]
526
532
  })
527
533
  }),
528
- /* @__PURE__ */ d(D.Subscribe, {
534
+ /* @__PURE__ */ d(k.Subscribe, {
529
535
  selector: (e) => [e.values.repeatFrequency],
530
- children: ([e]) => e === "Weekly" && /* @__PURE__ */ d(D.Field, {
536
+ children: ([e]) => e === "Weekly" && /* @__PURE__ */ d(k.Field, {
531
537
  name: "repeatDays",
532
538
  children: (e) => /* @__PURE__ */ f("div", {
533
539
  className: "space-y-3 animate-in fade-in duration-300",
@@ -549,9 +555,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
549
555
  })
550
556
  })
551
557
  }),
552
- /* @__PURE__ */ d(D.Subscribe, {
558
+ /* @__PURE__ */ d(k.Subscribe, {
553
559
  selector: (e) => [e.values.repeatFrequency],
554
- children: ([e]) => (e === "Monthly" || e === "Yearly") && /* @__PURE__ */ d(D.Field, {
560
+ children: ([e]) => (e === "Monthly" || e === "Yearly") && /* @__PURE__ */ d(k.Field, {
555
561
  name: "repeatBy",
556
562
  children: (e) => /* @__PURE__ */ f("div", {
557
563
  className: "space-y-4 animate-in fade-in duration-300",
@@ -589,7 +595,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
589
595
  })
590
596
  })
591
597
  }),
592
- /* @__PURE__ */ d(D.Field, {
598
+ /* @__PURE__ */ d(k.Field, {
593
599
  name: "description",
594
600
  children: (e) => /* @__PURE__ */ f("div", {
595
601
  className: "space-y-2",
@@ -603,11 +609,11 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
603
609
  className: "flex min-h-[100px] w-full rounded-md border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary disabled:cursor-not-allowed disabled:opacity-50 resize-none transition-all hover:border-border",
604
610
  value: e.state.value,
605
611
  onChange: (t) => e.handleChange(t.target.value),
606
- disabled: k
612
+ disabled: j
607
613
  })]
608
614
  })
609
615
  }),
610
- /* @__PURE__ */ d(D.Field, {
616
+ /* @__PURE__ */ d(k.Field, {
611
617
  name: "attachments",
612
618
  children: (e) => /* @__PURE__ */ f("div", {
613
619
  className: "space-y-4 pt-4 pb-2",
@@ -669,7 +675,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
669
675
  })
670
676
  ]
671
677
  }),
672
- w ? w(v || {}, _, () => O(), h) : /* @__PURE__ */ f("div", {
678
+ E ? E(v || {}, _, () => A(), h) : /* @__PURE__ */ f("div", {
673
679
  style: {
674
680
  display: "flex",
675
681
  alignItems: "center",
@@ -680,7 +686,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
680
686
  width: "100%",
681
687
  flexShrink: 0
682
688
  },
683
- children: [!k && b && _ === "edit" && /* @__PURE__ */ d(n, {
689
+ children: [!j && b && _ === "edit" && /* @__PURE__ */ d(n, {
684
690
  type: "button",
685
691
  variant: "ghost",
686
692
  className: "text-destructive hover:bg-destructive/10 hover:text-destructive h-10 px-5 font-bold mr-auto",
@@ -694,7 +700,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
694
700
  alignItems: "center",
695
701
  gap: "12px"
696
702
  },
697
- children: [!k && /* @__PURE__ */ d(D.Subscribe, {
703
+ children: [!j && /* @__PURE__ */ d(k.Subscribe, {
698
704
  selector: (e) => [e.canSubmit, e.isSubmitting],
699
705
  children: ([e, t]) => /* @__PURE__ */ d(n, {
700
706
  type: "submit",
@@ -703,7 +709,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
703
709
  style: { minWidth: "120px" },
704
710
  disabled: !e || t,
705
711
  onClick: (e) => {
706
- e.preventDefault(), e.stopPropagation(), D.handleSubmit();
712
+ e.preventDefault(), e.stopPropagation(), k.handleSubmit();
707
713
  },
708
714
  children: t ? "Saving..." : "Save"
709
715
  })
@@ -0,0 +1 @@
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("./date-time-picker-D0w0sDgq.cjs");let a=require("react");a=e.y(a,1);let o=require("lucide-react"),s=require("react/jsx-runtime"),c=require("@tanstack/react-form"),l=require("react-dom");var u=e.v({EzEventModal:()=>f}),d=[{label:`S`,value:`SU`},{label:`M`,value:`MO`},{label:`T`,value:`TU`},{label:`W`,value:`WE`},{label:`T`,value:`TH`},{label:`F`,value:`FR`},{label:`S`,value:`SA`}],f=({isOpen:u,onClose:f,mode:p,event:m,onSave:h,onDelete:g,locale:_,slotDuration:v,timeOptions:y,editorTemplate:b,headerTemplate:x,footerTemplate:S,headerFieldsTemplate:C,hiddenFields:w=[]})=>{let T=(0,c.useForm)({defaultValues:{title:m?.title||``,start:m?.start,end:m?.end,resourceIds:m?.resourceIds||(m?.resourceId?[m.resourceId]:[])||[],location:m?.location||``,isAllDay:!!m?.allDay||!!m?.isAllDay||!1,description:m?.description||``,isTimezoneEnabled:!!m?.timezone,startTimezone:m?.timezone?.start||`Asia/Calcutta`,endTimezone:m?.timezone?.end||`Asia/Calcutta`,repeatFrequency:m?.recurrence?.frequency||`Never`,repeatInterval:m?.recurrence?.interval||1,repeatDays:m?.recurrence?.days||[],repeatBy:m?.recurrence?.repeatBy||`day`,repeatEndLevel:m?.recurrence?.end||`Never`,repeatEndCount:m?.recurrence?.endCount||1,repeatEndUntil:m?.recurrence?.endUntil,attachments:m?.attachments||[]},onSubmit:async({value:e})=>{h({...m,title:e.title,start:e.start,end:e.end,resourceId:e.resourceIds[0],resourceIds:e.resourceIds,location:e.location,allDay:e.isAllDay,description:e.description,timezone:e.isTimezoneEnabled?{start:e.startTimezone,end:e.endTimezone}:void 0,recurrence:e.repeatFrequency===`Never`?void 0:{frequency:e.repeatFrequency,interval:e.repeatInterval,unit:e.repeatFrequency.replace(`ly`,``)+`(s)`,end:e.repeatEndLevel,endCount:e.repeatEndLevel===`Count`?e.repeatEndCount:void 0,endUntil:e.repeatEndLevel===`Until`?e.repeatEndUntil:void 0,days:e.repeatFrequency===`Weekly`?e.repeatDays:void 0,repeatBy:e.repeatFrequency===`Monthly`||e.repeatFrequency===`Yearly`?e.repeatBy:void 0},attachments:e.attachments}),f()}});if((0,a.useEffect)(()=>{u&&T.reset()},[u,m,T]),!u)return null;let E=e=>{e?.preventDefault(),e?.stopPropagation(),T.handleSubmit()},D=p===`view`;return(0,l.createPortal)((0,s.jsxs)(`div`,{"data-testid":`ez-event-modal`,style:{position:`fixed`,top:0,left:0,width:`100vw`,height:`100vh`,zIndex:1e4,backgroundColor:`rgba(0, 0, 0, 0.4)`,backdropFilter:`blur(2px)`,pointerEvents:`auto`},children:[(0,s.jsx)(`div`,{style:{position:`absolute`,inset:0},onClick:f}),(0,s.jsxs)(`div`,{className:e._(`bg-background rounded-xl shadow-2xl flex flex-col border border-border overflow-hidden`,`animate-in zoom-in-95 fade-in duration-300 ease-out`),style:{backgroundColor:`white`,width:`650px`,maxWidth:`95vw`,maxHeight:`92vh`,position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:10001},children:[(0,s.jsx)(`div`,{className:`flex items-center justify-between shrink-0 bg-background`,style:{padding:`16px 40px`},children:x?x(m||{},p):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(`h2`,{className:`text-xl font-bold tracking-tight text-foreground`,children:[p===`create`&&`New Event`,p===`edit`&&`Edit Event`,p===`view`&&`Event Details`]}),(0,s.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-9 w-9 rounded-full hover:bg-muted text-muted-foreground mr-[-8px]`,onClick:f,children:(0,s.jsx)(o.X,{className:`w-5 h-5`})})]})}),b?(0,s.jsx)(`div`,{className:`overflow-y-auto custom-scrollbar flex-1 bg-background`,style:{padding:`8px 40px 32px 40px`},children:b(m||{})}):(0,s.jsxs)(`form`,{onSubmit:E,className:`space-y-6 overflow-y-auto custom-scrollbar flex-1 bg-background`,style:{padding:`8px 40px 32px 40px`},children:[C?.({event:m||{},mode:p,isReadOnly:D}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`title`,validators:{onChange:({value:e})=>e?void 0:`Title is required`},children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`title`,className:`text-[13px] font-semibold text-foreground/70`,children:`Title`}),(0,s.jsx)(n.t,{id:`title`,placeholder:`Add title`,value:t.state.value,onChange:e=>t.handleChange(e.target.value),onBlur:t.handleBlur,disabled:D,className:e._(`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`,t.state.meta.errors.length>0&&`border-destructive focus-visible:border-destructive ring-destructive/20`)}),t.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5 animate-in fade-in slide-in-from-top-1`,children:t.state.meta.errors.join(`, `)})]})}),!w.includes(`location`)&&(0,s.jsx)(T.Field,{name:`location`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`location`,className:`text-[13px] font-semibold text-foreground/70`,children:`Location`}),(0,s.jsx)(n.t,{id:`location`,placeholder:`Add location`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),disabled:D,className:`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`})]})})]}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`start`,validators:{onChange:({value:e})=>e?void 0:`Start date is required`},children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Start`}),(0,s.jsx)(i.t,{date:e.state.value,setDate:t=>e.handleChange(t),disabled:D,required:!0,locale:_,mode:T.getFieldValue(`isAllDay`)?`date`:`datetime`,slotDuration:v,timeOptions:y,className:`border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20`}),e.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5`,children:e.state.meta.errors.join(`, `)})]})}),(0,s.jsx)(T.Field,{name:`end`,validators:{onChange:({value:e,fieldApi:t})=>{if(!e)return`End date is required`;let n=t.form.getFieldValue(`start`);if(n&&e<=n)return`End time must be after start time`}},children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End`}),(0,s.jsx)(i.t,{date:t.state.value,setDate:e=>t.handleChange(e),disabled:D,required:!0,locale:_,mode:T.getFieldValue(`isAllDay`)?`date`:`datetime`,minDate:T.getFieldValue(`start`),slotDuration:v,timeOptions:y,className:e._(`border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20`,t.state.meta.errors.length>0&&`border-destructive focus-visible:border-destructive ring-destructive/20`)}),t.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5 animate-in fade-in slide-in-from-top-1`,children:t.state.meta.errors.join(`, `)})]})})]}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`isAllDay`,children:e=>(0,s.jsx)(`div`,{className:`flex items-center h-10`,children:(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group select-none`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e.state.value,onChange:t=>e.handleChange(t.target.checked),disabled:D,className:`h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer`}),(0,s.jsx)(`span`,{className:`text-[14px] font-medium text-foreground/70 group-hover:text-foreground`,children:`All day event`})]})})}),(0,s.jsx)(T.Field,{name:`isTimezoneEnabled`,children:e=>(0,s.jsx)(`div`,{className:`flex items-center h-10`,children:(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group select-none`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e.state.value,onChange:t=>e.handleChange(t.target.checked),disabled:D,className:`h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer`}),(0,s.jsx)(`span`,{className:`text-[14px] font-medium text-foreground/70 group-hover:text-foreground`,children:`Enable timezone`})]})})})]}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.isTimezoneEnabled],children:([e])=>e&&(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 p-6 bg-highlight/50 rounded-lg border border-border animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(T.Field,{name:`startTimezone`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Start Timezone`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Asia/Calcutta`,children:`Asia/Calcutta`}),(0,s.jsx)(`option`,{value:`UTC`,children:`UTC`}),(0,s.jsx)(`option`,{value:`America/New_York`,children:`America/New_York`})]})]})}),(0,s.jsx)(T.Field,{name:`endTimezone`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End Timezone`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Asia/Calcutta`,children:`Asia/Calcutta`}),(0,s.jsx)(`option`,{value:`UTC`,children:`UTC`}),(0,s.jsx)(`option`,{value:`America/New_York`,children:`America/New_York`})]})]})})]})}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`repeatFrequency`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Never`,children:`Never`}),(0,s.jsx)(`option`,{value:`Daily`,children:`Daily`}),(0,s.jsx)(`option`,{value:`Weekly`,children:`Weekly`}),(0,s.jsx)(`option`,{value:`Monthly`,children:`Monthly`}),(0,s.jsx)(`option`,{value:`Yearly`,children:`Yearly`})]})]})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([e])=>e!==`Never`&&(0,s.jsx)(T.Field,{name:`repeatEndLevel`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Never`,children:`Never`}),(0,s.jsx)(`option`,{value:`Until`,children:`Until`}),(0,s.jsx)(`option`,{value:`Count`,children:`Count`})]})]})})})]}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency,e.values.repeatEndLevel],children:([e,t])=>e!==`Never`&&(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(T.Field,{name:`repeatInterval`,children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat every`}),(0,s.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,s.jsx)(`select`,{className:`flex-1 h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:t.state.value,onChange:e=>t.handleChange(parseInt(e.target.value)),children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,30].map(e=>(0,s.jsx)(`option`,{value:e,children:e},e))}),(0,s.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground whitespace-nowrap`,children:e===`Daily`?`Day(s)`:e.replace(`ly`,``)+`(s)`})]})]})}),t===`Until`&&(0,s.jsx)(T.Field,{name:`repeatEndUntil`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-1`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Until`}),(0,s.jsx)(i.t,{date:e.state.value,setDate:t=>e.handleChange(t),disabled:D,locale:_,mode:`date`,minDate:T.getFieldValue(`start`),slotDuration:v,timeOptions:y,className:`border-border focus:border-primary`})]})}),t===`Count`&&(0,s.jsx)(T.Field,{name:`repeatEndCount`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-1`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Occurrences`}),(0,s.jsx)(n.t,{type:`number`,min:1,value:e.state.value,onChange:t=>e.handleChange(parseInt(t.target.value)),className:`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`})]})})]})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([t])=>t===`Weekly`&&(0,s.jsx)(T.Field,{name:`repeatDays`,children:t=>(0,s.jsxs)(`div`,{className:`space-y-3 animate-in fade-in duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat On`}),(0,s.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:d.map(n=>(0,s.jsx)(`button`,{type:`button`,onClick:()=>{let e=t.state.value||[];e.includes(n.value)?t.handleChange(e.filter(e=>e!==n.value)):t.handleChange([...e,n.value])},className:e._(`w-9 h-9 rounded-full flex items-center justify-center text-sm font-bold transition-all border`,(t.state.value||[]).includes(n.value)?`bg-primary text-white border-primary shadow-sm`:`bg-background text-foreground/60 border-border/60 hover:border-primary/40 hover:text-primary`),children:n.label},n.value))})]})})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([e])=>(e===`Monthly`||e===`Yearly`)&&(0,s.jsx)(T.Field,{name:`repeatBy`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-4 animate-in fade-in duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat On`}),(0,s.jsxs)(`div`,{className:`space-y-3`,children:[(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group`,children:[(0,s.jsx)(`input`,{type:`radio`,name:`repeatBy`,checked:e.state.value===`day`,onChange:()=>e.handleChange(`day`),className:`h-4 w-4 border-border text-primary focus:ring-primary`}),(0,s.jsx)(`span`,{className:`text-sm text-foreground/80`,children:`Day of the month`})]}),(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group`,children:[(0,s.jsx)(`input`,{type:`radio`,name:`repeatBy`,checked:e.state.value===`ordinal`,onChange:()=>e.handleChange(`ordinal`),className:`h-4 w-4 border-border text-primary focus:ring-primary`}),(0,s.jsx)(`span`,{className:`text-sm text-foreground/80`,children:`Ordinal position`})]})]})]})})}),(0,s.jsx)(T.Field,{name:`description`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`description`,className:`text-[13px] font-semibold text-foreground/70`,children:`Description`}),(0,s.jsx)(`textarea`,{id:`description`,placeholder:`Add description`,className:`flex min-h-[100px] w-full rounded-md border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary disabled:cursor-not-allowed disabled:opacity-50 resize-none transition-all hover:border-border`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),disabled:D})]})}),(0,s.jsx)(T.Field,{name:`attachments`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-4 pt-4 pb-2`,children:[(0,s.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,s.jsxs)(r.t,{className:`text-[13px] font-semibold text-foreground/70 flex items-center gap-2`,children:[(0,s.jsx)(o.Paperclip,{className:`w-4 h-4`}),` Attachments`]}),(0,s.jsx)(`input`,{type:`file`,id:`file-upload`,multiple:!0,className:`hidden`,onChange:t=>{t.target.files&&e.handleChange([...e.state.value||[],...Array.from(t.target.files)])}}),(0,s.jsxs)(t.t,{type:`button`,variant:`outline`,size:`sm`,className:`h-8 text-xs font-semibold gap-2 border-dashed border-border/50 hover:border-primary/40 hover:text-primary transition-all`,onClick:()=>document.getElementById(`file-upload`)?.click(),children:[(0,s.jsx)(o.Paperclip,{className:`w-3 h-3`}),` Add Files`]})]}),(e.state.value||[]).length>0&&(0,s.jsx)(`div`,{className:`grid grid-cols-1 gap-3`,children:(e.state.value||[]).map((n,r)=>(0,s.jsxs)(`div`,{className:`flex items-center justify-between p-3 rounded-lg bg-highlight border border-border group hover:border-border transition-all`,children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-3 overflow-hidden`,children:[(0,s.jsx)(`div`,{className:`w-9 h-9 rounded-md bg-white border border-border flex items-center justify-center shrink-0 shadow-sm`,children:(0,s.jsx)(o.Paperclip,{className:`w-4 h-4 text-muted-foreground`})}),(0,s.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,s.jsx)(`span`,{className:`text-[13px] font-medium text-foreground truncate`,children:n.name}),(0,s.jsx)(`span`,{className:`text-[11px] text-muted-foreground font-medium`,children:typeof n.size==`number`?`${(n.size/1024).toFixed(1)} KB`:`Attachment`})]})]}),(0,s.jsx)(t.t,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground/50 hover:text-destructive hover:bg-destructive/10 opacity-0 group-hover:opacity-100 transition-all`,onClick:()=>e.handleChange((e.state.value||[]).filter((e,t)=>t!==r)),children:(0,s.jsx)(o.Trash2,{className:`w-4 h-4`})})]},r))})]})})]}),S?S(m||{},p,()=>E(),f):(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,padding:`24px 40px`,backgroundColor:`var(--highlight)`,gap:`12px`,width:`100%`,flexShrink:0},children:[!D&&g&&p===`edit`&&(0,s.jsx)(t.t,{type:`button`,variant:`ghost`,className:`text-destructive hover:bg-destructive/10 hover:text-destructive h-10 px-5 font-bold mr-auto`,onClick:()=>{g(m?.id),f()},children:`Delete`}),(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`12px`},children:[!D&&(0,s.jsx)(T.Subscribe,{selector:e=>[e.canSubmit,e.isSubmitting],children:([e,n])=>(0,s.jsx)(t.t,{type:`submit`,variant:`default`,className:`h-10 px-10 font-bold rounded-md shrink-0 flex items-center justify-center transition-all hover:opacity-90`,style:{minWidth:`120px`},disabled:!e||n,onClick:e=>{e.preventDefault(),e.stopPropagation(),T.handleSubmit()},children:n?`Saving...`:`Save`})}),(0,s.jsx)(t.t,{type:`button`,variant:`outline`,className:`h-10 px-8 font-bold border border-border hover:bg-highlight text-foreground shrink-0 rounded-md transition-all`,style:{minWidth:`100px`},onClick:f,children:`Cancel`})]})]})]})]}),document.body)};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return f}});
@@ -5,13 +5,13 @@ import { t as i } from "./label-DWEV--5W.js";
5
5
  import { t as a } from "./EzErrorBoundary-C7a6VisX.js";
6
6
  import { t as o } from "./useInitCoreServices-CuBrviDM.js";
7
7
  import { t as s } from "./NotificationPanel-BzpDc10Q.js";
8
- import { i as c } from "./EzScheduler-C1Jtvvju.js";
8
+ import { i as c } from "./EzScheduler-CjQbi1Na.js";
9
9
  import { t as l } from "./useServiceState-CkrJZm1D.js";
10
10
  import { n as u, r as d, t as f } from "./popover-D1akYj0W.js";
11
11
  import { a as p, i as m, n as h, r as g, t as _ } from "./select-D4tFaSai.js";
12
12
  import { t as v } from "./checkbox-DRkQuB4W.js";
13
13
  import { c as y } from "./card-ZUNxcdIM.js";
14
- import { f as b, s as x, t as S } from "./KanbanBoard-B7_Z5sh1.js";
14
+ import { f as b, s as x, t as S } from "./KanbanBoard-BsZP_PJi.js";
15
15
  import { t as C } from "./scroll-area-BJs87d45.js";
16
16
  import { t as w } from "./DeleteConfirmationModal-p8XGDGIw.js";
17
17
  import { forwardRef as T, useCallback as E, useEffect as D, useImperativeHandle as O, useMemo as k, useRef as A, useState as j } from "react";
@@ -1,2 +1,2 @@
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-CkqTngI6.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-CyitudI1.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(`
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
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}});