@thebuoyant-tsdev/mui-ts-library 3.35.0 → 3.36.0

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.
@@ -2,89 +2,122 @@ import { kanbanBoardClasses as e } from "./kanbanBoardClasses.js";
2
2
  import { DEFAULT_KANBAN_BOARD_TRANSLATION as t } from "./KanbanBoard.types.js";
3
3
  import { KanbanBoardCard as n } from "./KanbanBoardCard.js";
4
4
  import { KanbanBoardCardDialog as r } from "./KanbanBoardCardDialog.js";
5
- import { KanbanBoardColumn as i } from "./KanbanBoardColumn.js";
6
- import { DndContext as a, DragOverlay as o, KeyboardSensor as s, PointerSensor as c, closestCorners as l, useSensor as u, useSensors as d } from "@dnd-kit/core";
7
- import { arrayMove as ee, sortableKeyboardCoordinates as f } from "@dnd-kit/sortable";
8
- import p from "@mui/icons-material/Search";
9
- import { Box as m, InputAdornment as h, TextField as g } from "@mui/material";
5
+ import { KanbanBoardColumnDialog as i } from "./KanbanBoardColumnDialog.js";
6
+ import { KanbanBoardColumn as a } from "./KanbanBoardColumn.js";
7
+ import { DndContext as o, DragOverlay as s, KeyboardSensor as c, PointerSensor as l, closestCorners as u, useSensor as d, useSensors as ee } from "@dnd-kit/core";
8
+ import { arrayMove as te, sortableKeyboardCoordinates as ne } from "@dnd-kit/sortable";
9
+ import f from "@mui/icons-material/Add";
10
+ import re from "@mui/icons-material/Search";
11
+ import { Box as p, Button as m, InputAdornment as h, TextField as g } from "@mui/material";
10
12
  import { useEffect as _, useState as v } from "react";
11
13
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
12
14
  //#region src/components/kanban-board/KanbanBoard.tsx
13
- function x({ tasks: x, columns: S, onTasksChange: C, onCardClick: w, enableBuiltinDialogs: T = !0, onTaskCreated: E, onTaskUpdated: D, onTaskDeleted: O, onTaskMoved: k, showPriority: A = !0, showAssignee: j = !0, showDueDate: M = !0, showDueDateWarning: N = !0, showSubtasks: P = !0, chipVariant: F = "outlined", showSearchField: I = !1, filterText: L = "", width: R = "100%", height: z = "100%", translation: B }) {
14
- let V = {
15
+ function x({ tasks: x, columns: S, onTasksChange: C, onCardClick: ie, enableBuiltinDialogs: w = !0, enableColumnManagement: T = !1, onTaskCreated: ae, onTaskUpdated: oe, onTaskDeleted: E, onTaskMoved: D, onColumnsChange: O, onColumnAdd: k, onColumnUpdate: A, onColumnDelete: se, showPriority: j = !0, showAssignee: M = !0, showDueDate: N = !0, showDueDateWarning: P = !0, showSubtasks: F = !0, chipVariant: I = "outlined", showSearchField: L = !1, filterText: R = "", width: z = "100%", height: B = "100%", translation: V }) {
16
+ let H = {
15
17
  ...t,
16
- ...B
17
- }, [H, U] = v(x);
18
+ ...V
19
+ }, [U, W] = v(x);
18
20
  _(() => {
19
- U(x);
21
+ W(x);
20
22
  }, [x]);
21
- let [W, G] = v(null), [K, q] = v(null), [J, Y] = v(""), X = d(u(c, { activationConstraint: { distance: 8 } }), u(s, { coordinateGetter: f }));
22
- function Z({ active: e }) {
23
- G(H.find((t) => t.id === e.id) ?? null);
23
+ let [G, K] = v(S);
24
+ _(() => {
25
+ K(S);
26
+ }, [S]);
27
+ let [q, J] = v(null), [Y, X] = v(null), [ce, Z] = v(null), [Q, le] = v(""), ue = ee(d(l, { activationConstraint: { distance: 8 } }), d(c, { coordinateGetter: ne }));
28
+ function de({ active: e }) {
29
+ J(U.find((t) => t.id === e.id) ?? null);
24
30
  }
25
- function Q({ active: e, over: t }) {
31
+ function fe({ active: e, over: t }) {
26
32
  if (!t) return;
27
- let n = e.id, r = t.id, i = H.find((e) => e.id === n);
33
+ let n = e.id, r = t.id, i = U.find((e) => e.id === n);
28
34
  if (!i) return;
29
- let a = S.find((e) => e.id === r), o = H.find((e) => e.id === r), s = a?.id ?? o?.status;
30
- !s || i.status === s || U((e) => e.map((e) => e.id === n ? {
35
+ let a = S.find((e) => e.id === r), o = U.find((e) => e.id === r), s = a?.id ?? o?.status;
36
+ !s || i.status === s || W((e) => e.map((e) => e.id === n ? {
31
37
  ...e,
32
38
  status: s
33
39
  } : e));
34
40
  }
35
- function te({ active: e, over: t }) {
36
- let n = W?.status;
37
- if (G(null), !t) {
38
- U(x);
41
+ function pe({ active: e, over: t }) {
42
+ let n = q?.status;
43
+ if (J(null), !t) {
44
+ W(x);
39
45
  return;
40
46
  }
41
- let r = e.id, i = t.id, a = H.findIndex((e) => e.id === r), o = H.findIndex((e) => e.id === i), s;
42
- if (s = a !== -1 && o !== -1 && a !== o ? ee(H, a, o) : [...H], U(s), C?.(s), n) {
47
+ let r = e.id, i = t.id, a = U.findIndex((e) => e.id === r), o = U.findIndex((e) => e.id === i), s;
48
+ if (s = a !== -1 && o !== -1 && a !== o ? te(U, a, o) : [...U], W(s), C?.(s), n) {
43
49
  let e = s.find((e) => e.id === r);
44
- e && e.status !== n && k?.(e, n, e.status);
50
+ e && e.status !== n && D?.(e, n, e.status);
45
51
  }
46
52
  }
47
- function ne(e) {
48
- T ? q({
53
+ function me(e) {
54
+ w ? X({
49
55
  mode: "edit",
50
56
  task: e
51
- }) : w?.(e);
57
+ }) : ie?.(e);
52
58
  }
53
- function re(e) {
54
- q({
59
+ function he(e) {
60
+ X({
55
61
  mode: "add",
56
62
  columnId: e
57
63
  });
58
64
  }
59
- function ie(e) {
60
- let t = !H.find((t) => t.id === e.id), n = t ? [...H, e] : H.map((t) => t.id === e.id ? e : t);
61
- U(n), C?.(n), t ? E?.(e) : D?.(e), q(null);
65
+ function ge(e) {
66
+ let t = !U.find((t) => t.id === e.id), n = t ? [...U, e] : U.map((t) => t.id === e.id ? e : t);
67
+ W(n), C?.(n), t ? ae?.(e) : oe?.(e), X(null);
62
68
  }
63
- function ae(e) {
64
- let t = H.filter((t) => t.id !== e);
65
- U(t), C?.(t), O?.(e), q(null);
69
+ function _e(e) {
70
+ let t = U.filter((t) => t.id !== e);
71
+ W(t), C?.(t), E?.(e), X(null);
66
72
  }
67
- function oe(e) {
68
- q({
73
+ function ve(e) {
74
+ X({
69
75
  mode: "delete",
70
76
  task: e
71
77
  });
72
78
  }
73
- let $ = (L || J).trim().toLowerCase();
74
- function se(e) {
79
+ let $ = (R || Q).trim().toLowerCase();
80
+ function ye(e) {
75
81
  return $ ? e.title.toLowerCase().includes($) || (e.assignee?.toLowerCase().includes($) ?? !1) : !0;
76
82
  }
77
- return /* @__PURE__ */ b(m, {
83
+ function be(e) {
84
+ let t = [...G, e];
85
+ K(t), k?.(e), O?.(t), Z(null);
86
+ }
87
+ function xe(e, t) {
88
+ let n = G.map((n) => n.id === e ? {
89
+ ...n,
90
+ label: t
91
+ } : n);
92
+ K(n);
93
+ let r = n.find((t) => t.id === e);
94
+ r && A?.(r), O?.(n);
95
+ }
96
+ function Se(e) {
97
+ let t = G.find((t) => t.id === e);
98
+ if (!t) return;
99
+ let n = U.filter((t) => t.status === e).length;
100
+ Z({
101
+ mode: "delete",
102
+ column: t,
103
+ cardCount: n
104
+ });
105
+ }
106
+ function Ce(e) {
107
+ let t = G.filter((t) => t.id !== e), n = U.filter((t) => t.status !== e);
108
+ K(t), W(n), se?.(e), O?.(t), C?.(n), Z(null);
109
+ }
110
+ return /* @__PURE__ */ b(p, {
78
111
  className: e.root,
79
112
  sx: {
80
- width: R,
81
- height: z,
113
+ width: z,
114
+ height: B,
82
115
  display: "flex",
83
116
  flexDirection: "column",
84
117
  overflow: "hidden"
85
118
  },
86
119
  children: [
87
- I && /* @__PURE__ */ y(m, {
120
+ L && /* @__PURE__ */ y(p, {
88
121
  className: e.searchFieldWrapper,
89
122
  sx: {
90
123
  px: 2,
@@ -94,29 +127,29 @@ function x({ tasks: x, columns: S, onTasksChange: C, onCardClick: w, enableBuilt
94
127
  children: /* @__PURE__ */ y(g, {
95
128
  className: e.searchField,
96
129
  size: "small",
97
- placeholder: V.searchFieldPlaceholder,
98
- value: J,
99
- onChange: (e) => Y(e.target.value),
130
+ placeholder: H.searchFieldPlaceholder,
131
+ value: Q,
132
+ onChange: (e) => le(e.target.value),
100
133
  slotProps: {
101
134
  input: { startAdornment: /* @__PURE__ */ y(h, {
102
135
  position: "start",
103
- children: /* @__PURE__ */ y(p, {
136
+ children: /* @__PURE__ */ y(re, {
104
137
  fontSize: "small",
105
138
  sx: { color: "text.disabled" }
106
139
  })
107
140
  }) },
108
- htmlInput: { "aria-label": V.searchFieldPlaceholder }
141
+ htmlInput: { "aria-label": H.searchFieldPlaceholder }
109
142
  },
110
143
  sx: { width: 280 }
111
144
  })
112
145
  }),
113
- /* @__PURE__ */ b(a, {
114
- sensors: X,
115
- collisionDetection: l,
116
- onDragStart: Z,
117
- onDragOver: Q,
118
- onDragEnd: te,
119
- children: [/* @__PURE__ */ y(m, {
146
+ /* @__PURE__ */ b(o, {
147
+ sensors: ue,
148
+ collisionDetection: u,
149
+ onDragStart: de,
150
+ onDragOver: fe,
151
+ onDragEnd: pe,
152
+ children: [/* @__PURE__ */ b(p, {
120
153
  className: e.columns,
121
154
  sx: {
122
155
  flex: 1,
@@ -127,48 +160,86 @@ function x({ tasks: x, columns: S, onTasksChange: C, onCardClick: w, enableBuilt
127
160
  overflowY: "hidden",
128
161
  alignItems: "stretch"
129
162
  },
130
- children: S.map((e) => {
131
- let t = H.filter((t) => t.status === e.id);
132
- return /* @__PURE__ */ y(i, {
163
+ children: [G.map((e) => {
164
+ let t = U.filter((t) => t.status === e.id);
165
+ return /* @__PURE__ */ y(a, {
133
166
  column: e,
134
- tasks: t.filter(se),
167
+ tasks: t.filter(ye),
135
168
  totalCount: t.length,
136
- showPriority: A,
137
- showAssignee: j,
138
- showDueDate: M,
139
- showDueDateWarning: N,
140
- showSubtasks: P,
141
- chipVariant: F,
142
- t: V,
143
- enableBuiltinDialogs: T,
144
- onCardClick: ne,
145
- onAddClick: re
169
+ showPriority: j,
170
+ showAssignee: M,
171
+ showDueDate: N,
172
+ showDueDateWarning: P,
173
+ showSubtasks: F,
174
+ chipVariant: I,
175
+ t: H,
176
+ enableBuiltinDialogs: w,
177
+ enableColumnManagement: T && w,
178
+ onCardClick: me,
179
+ onAddClick: he,
180
+ onColumnRename: xe,
181
+ onColumnDeleteRequest: Se
146
182
  }, e.id);
147
- })
148
- }), /* @__PURE__ */ y(o, { children: W && /* @__PURE__ */ y(n, {
149
- task: W,
150
- showPriority: A,
151
- showAssignee: j,
152
- showDueDate: M,
153
- showDueDateWarning: N,
154
- showSubtasks: P,
183
+ }), T && w && /* @__PURE__ */ y(p, {
184
+ sx: {
185
+ display: "flex",
186
+ alignItems: "flex-start",
187
+ pt: .5
188
+ },
189
+ children: /* @__PURE__ */ y(m, {
190
+ className: e.columnAddButton,
191
+ startIcon: /* @__PURE__ */ y(f, {}),
192
+ size: "small",
193
+ onClick: () => Z({ mode: "add" }),
194
+ sx: {
195
+ minWidth: 140,
196
+ whiteSpace: "nowrap",
197
+ color: "text.secondary",
198
+ border: "1px dashed",
199
+ borderColor: "divider",
200
+ borderRadius: 2,
201
+ py: 1,
202
+ px: 2,
203
+ fontWeight: 600,
204
+ "&:hover": {
205
+ bgcolor: "action.hover",
206
+ borderColor: "text.secondary"
207
+ }
208
+ },
209
+ children: H.columnAddLabel
210
+ })
211
+ })]
212
+ }), /* @__PURE__ */ y(s, { children: q && /* @__PURE__ */ y(n, {
213
+ task: q,
214
+ showPriority: j,
215
+ showAssignee: M,
216
+ showDueDate: N,
217
+ showDueDateWarning: P,
218
+ showSubtasks: F,
155
219
  enableBuiltinDialogs: !1,
156
- chipVariant: F,
157
- t: V,
220
+ chipVariant: I,
221
+ t: H,
158
222
  onCardClick: () => {},
159
223
  isOverlay: !0
160
224
  }) })]
161
225
  }),
162
- T && /* @__PURE__ */ y(r, {
163
- state: K,
164
- columns: S,
165
- t: V,
166
- showSubtasks: P,
167
- onSave: ie,
168
- onDelete: ae,
169
- onRequestDelete: oe,
170
- onClose: () => q(null)
171
- }, K ? `${K.mode}-${K.mode === "add" ? K.columnId : K.task.id}` : "closed")
226
+ w && /* @__PURE__ */ y(r, {
227
+ state: Y,
228
+ columns: G,
229
+ t: H,
230
+ showSubtasks: F,
231
+ onSave: ge,
232
+ onDelete: _e,
233
+ onRequestDelete: ve,
234
+ onClose: () => X(null)
235
+ }, Y ? `${Y.mode}-${Y.mode === "add" ? Y.columnId : Y.task.id}` : "closed"),
236
+ T && w && /* @__PURE__ */ y(i, {
237
+ state: ce,
238
+ t: H,
239
+ onAdd: be,
240
+ onDelete: Ce,
241
+ onClose: () => Z(null)
242
+ })
172
243
  ]
173
244
  });
174
245
  }
@@ -52,6 +52,18 @@ export type KanbanBoardTranslation = {
52
52
  dialogSubtaskAdd: string;
53
53
  /** Tooltip for the "+" button on the card's subtask progress bar. */
54
54
  cardSubtaskAdd: string;
55
+ /** Button label for the "Add column" ghost button (`enableColumnManagement`). */
56
+ columnAddLabel: string;
57
+ /** Placeholder inside the add-column dialog text field. */
58
+ columnAddPlaceholder: string;
59
+ /** Confirmation dialog title when deleting a column. "{label}" → column name. */
60
+ columnDeleteConfirm: string;
61
+ /** Warning line shown when the column being deleted still has cards. "{count}" → number of cards. */
62
+ columnDeleteCardsWarning: string;
63
+ /** Tooltip on the rename icon in the column header. */
64
+ columnRenameTooltip: string;
65
+ /** Tooltip on the delete icon in the column header. */
66
+ columnDeleteTooltip: string;
55
67
  };
56
68
  export declare const DEFAULT_KANBAN_BOARD_TRANSLATION: Required<KanbanBoardTranslation>;
57
69
  export type KanbanBoardProps = {
@@ -131,6 +143,25 @@ export type KanbanBoardProps = {
131
143
  * Alternative: set `showSearchField={true}` to let the board render a built-in field.
132
144
  */
133
145
  filterText?: string;
146
+ /**
147
+ * When `true`, shows inline rename / delete controls on column headers and an
148
+ * "Add column" button at the end of the board. Default: `false`.
149
+ *
150
+ * Requires `enableBuiltinDialogs` to be `true` (the controls are suppressed
151
+ * when built-in dialogs are disabled).
152
+ */
153
+ enableColumnManagement?: boolean;
154
+ /**
155
+ * Called after every column add, rename, or delete with the full updated column list.
156
+ * Mirror of `onTasksChange` for columns.
157
+ */
158
+ onColumnsChange?: (columns: KanbanColumn[]) => void;
159
+ /** Called after a new column is added via the built-in UI. */
160
+ onColumnAdd?: (column: KanbanColumn) => void;
161
+ /** Called after a column label is changed via the inline rename. */
162
+ onColumnUpdate?: (column: KanbanColumn) => void;
163
+ /** Called after a column (and all its cards) is deleted via the built-in UI. */
164
+ onColumnDelete?: (columnId: string) => void;
134
165
  /** Width of the board. Default: "100%". */
135
166
  width?: number | string;
136
167
  /** Height of the board. Default: "100%". */
@@ -17,7 +17,13 @@ var e = {
17
17
  searchFieldPlaceholder: "Search by title or assignee…",
18
18
  dialogFieldSubtasks: "Subtasks",
19
19
  dialogSubtaskAdd: "Add subtask",
20
- cardSubtaskAdd: "Add subtask"
20
+ cardSubtaskAdd: "Add subtask",
21
+ columnAddLabel: "Add column",
22
+ columnAddPlaceholder: "Column name",
23
+ columnDeleteConfirm: "Delete column \"{label}\"?",
24
+ columnDeleteCardsWarning: "{count} card(s) in this column will also be deleted.",
25
+ columnRenameTooltip: "Rename",
26
+ columnDeleteTooltip: "Delete column"
21
27
  };
22
28
  //#endregion
23
29
  export { e as DEFAULT_KANBAN_BOARD_TRANSLATION };
@@ -1,9 +1,9 @@
1
1
  import { muiTsStateClasses as e } from "../../utils/muiTsClasses.js";
2
2
  import { kanbanBoardClasses as t } from "./kanbanBoardClasses.js";
3
3
  import { useSortable as n } from "@dnd-kit/sortable";
4
- import { Box as r, Card as i, CardActionArea as a, CardContent as o, Chip as s, IconButton as c, LinearProgress as l, Tooltip as u, Typography as d } from "@mui/material";
5
- import { CSS as f } from "@dnd-kit/utilities";
6
- import p from "@mui/icons-material/Add";
4
+ import r from "@mui/icons-material/Add";
5
+ import { Box as i, Card as a, CardActionArea as o, CardContent as s, Chip as c, IconButton as l, LinearProgress as u, Tooltip as d, Typography as f } from "@mui/material";
6
+ import { CSS as p } from "@dnd-kit/utilities";
7
7
  import m from "@mui/icons-material/CalendarToday";
8
8
  import h from "@mui/icons-material/Person";
9
9
  import { alpha as g } from "@mui/material/styles";
@@ -34,7 +34,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
34
34
  id: x.id,
35
35
  disabled: j
36
36
  }), R = j ? void 0 : {
37
- transform: f.Transform.toString(F),
37
+ transform: p.Transform.toString(F),
38
38
  transition: I,
39
39
  opacity: +!L
40
40
  }, z = C && !!x.assignee || w && !!x.dueDate, B = E && !!x.subtasks?.length, V = x.subtasks?.length ?? 0, H = x.subtasks?.filter((e) => e.done).length ?? 0, U = x.dueDate ? x.dueDate.toLocaleDateString(void 0, {
@@ -44,7 +44,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
44
44
  }) : null, W = /* @__PURE__ */ new Date();
45
45
  W.setHours(0, 0, 0, 0);
46
46
  let G = T && !!x.dueDate && x.dueDate < W;
47
- return /* @__PURE__ */ _(i, {
47
+ return /* @__PURE__ */ _(a, {
48
48
  ref: j ? void 0 : P,
49
49
  style: R,
50
50
  elevation: 0,
@@ -71,23 +71,23 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
71
71
  },
72
72
  onClick: () => !L && A(x),
73
73
  "aria-label": x.title,
74
- children: /* @__PURE__ */ _(a, {
74
+ children: /* @__PURE__ */ _(o, {
75
75
  component: "div",
76
76
  sx: { cursor: "inherit" },
77
- children: /* @__PURE__ */ v(o, {
77
+ children: /* @__PURE__ */ v(s, {
78
78
  sx: {
79
79
  p: 1.5,
80
80
  "&:last-child": { pb: 1.5 }
81
81
  },
82
82
  children: [
83
- /* @__PURE__ */ v(r, {
83
+ /* @__PURE__ */ v(i, {
84
84
  sx: {
85
85
  display: "flex",
86
86
  alignItems: "flex-start",
87
87
  gap: .75,
88
88
  mb: z || B ? 1 : 0
89
89
  },
90
- children: [S && x.priority && /* @__PURE__ */ _(r, {
90
+ children: [S && x.priority && /* @__PURE__ */ _(i, {
91
91
  className: t.cardPriorityDot,
92
92
  role: "img",
93
93
  "aria-label": `Priority: ${x.priority}`,
@@ -100,7 +100,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
100
100
  mt: "5px",
101
101
  flexShrink: 0
102
102
  }
103
- }), /* @__PURE__ */ _(d, {
103
+ }), /* @__PURE__ */ _(f, {
104
104
  className: t.cardTitle,
105
105
  variant: "body2",
106
106
  sx: {
@@ -111,7 +111,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
111
111
  children: x.title
112
112
  })]
113
113
  }),
114
- z && /* @__PURE__ */ v(r, {
114
+ z && /* @__PURE__ */ v(i, {
115
115
  className: t.cardMeta,
116
116
  sx: {
117
117
  display: "flex",
@@ -119,7 +119,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
119
119
  flexWrap: "wrap",
120
120
  alignItems: "center"
121
121
  },
122
- children: [C && x.assignee && /* @__PURE__ */ _(s, {
122
+ children: [C && x.assignee && /* @__PURE__ */ _(c, {
123
123
  className: t.cardAssignee,
124
124
  icon: /* @__PURE__ */ _(h, {}),
125
125
  label: x.assignee,
@@ -127,7 +127,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
127
127
  variant: O,
128
128
  "aria-label": `${k.dialogFieldAssignee}: ${x.assignee}`,
129
129
  sx: b
130
- }), w && U && /* @__PURE__ */ _(s, {
130
+ }), w && U && /* @__PURE__ */ _(c, {
131
131
  className: t.cardDueDate,
132
132
  icon: /* @__PURE__ */ _(m, {}),
133
133
  label: U,
@@ -138,7 +138,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
138
138
  sx: b
139
139
  })]
140
140
  }),
141
- B && /* @__PURE__ */ v(r, {
141
+ B && /* @__PURE__ */ v(i, {
142
142
  className: t.cardSubtasks,
143
143
  sx: {
144
144
  display: "flex",
@@ -147,7 +147,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
147
147
  mt: z ? .75 : 0
148
148
  },
149
149
  children: [
150
- /* @__PURE__ */ _(l, {
150
+ /* @__PURE__ */ _(u, {
151
151
  className: t.cardSubtasksBar,
152
152
  variant: "determinate",
153
153
  value: H / V * 100,
@@ -158,7 +158,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
158
158
  },
159
159
  "aria-label": `${H} of ${V} subtasks done`
160
160
  }),
161
- /* @__PURE__ */ v(d, {
161
+ /* @__PURE__ */ v(f, {
162
162
  variant: "caption",
163
163
  sx: {
164
164
  whiteSpace: "nowrap",
@@ -173,11 +173,11 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
173
173
  " ✓"
174
174
  ]
175
175
  }),
176
- D && !j && /* @__PURE__ */ _(u, {
176
+ D && !j && /* @__PURE__ */ _(d, {
177
177
  title: k.cardSubtaskAdd,
178
178
  placement: "top",
179
179
  arrow: !0,
180
- children: /* @__PURE__ */ _(c, {
180
+ children: /* @__PURE__ */ _(l, {
181
181
  size: "small",
182
182
  "aria-label": k.cardSubtaskAdd,
183
183
  onClick: (e) => {
@@ -189,7 +189,7 @@ function x({ task: x, showPriority: S, showAssignee: C, showDueDate: w, showDueD
189
189
  transition: "opacity 0.15s",
190
190
  [`.${t.card}:hover &`]: { opacity: 1 }
191
191
  },
192
- children: /* @__PURE__ */ _(p, { sx: { fontSize: "0.85rem" } })
192
+ children: /* @__PURE__ */ _(r, { sx: { fontSize: "0.85rem" } })
193
193
  })
194
194
  })
195
195
  ]