@burdenoff/microfe-workspaces 2026.625.2 → 2026.625.4

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 (33) hide show
  1. package/dist/pages/ActivityListPage.js +32 -48
  2. package/dist/pages/ActivityListPage.js.map +1 -1
  3. package/dist/pages/MembersListPage.js +196 -241
  4. package/dist/pages/MembersListPage.js.map +1 -1
  5. package/dist/pages/PendingInvitesPage.js +69 -78
  6. package/dist/pages/PendingInvitesPage.js.map +1 -1
  7. package/dist/pages/ProjectDetailPage.js +37 -52
  8. package/dist/pages/ProjectDetailPage.js.map +1 -1
  9. package/dist/pages/ProjectMembersPage.js +74 -87
  10. package/dist/pages/ProjectMembersPage.js.map +1 -1
  11. package/dist/pages/ProjectsListPage.js +103 -118
  12. package/dist/pages/ProjectsListPage.js.map +1 -1
  13. package/dist/pages/WorkspaceDetailPage.js +74 -76
  14. package/dist/pages/WorkspaceDetailPage.js.map +1 -1
  15. package/dist/pages/WorkspacesListPage.js +167 -178
  16. package/dist/pages/WorkspacesListPage.js.map +1 -1
  17. package/dist/pages/dashboard/widgets/AgentsWidget.js +21 -22
  18. package/dist/pages/dashboard/widgets/AgentsWidget.js.map +1 -1
  19. package/dist/pages/dashboard/widgets/ProjectsWidget.js +26 -27
  20. package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -1
  21. package/dist/pages/dashboard/widgets/RecentActivityWidget.js +19 -23
  22. package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -1
  23. package/dist/pages/dashboard/widgets/SessionsWidget.js +30 -32
  24. package/dist/pages/dashboard/widgets/SessionsWidget.js.map +1 -1
  25. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +18 -20
  26. package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -1
  27. package/dist/pages/dashboard/widgets/VibesWidget.js +18 -19
  28. package/dist/pages/dashboard/widgets/VibesWidget.js.map +1 -1
  29. package/dist/pages/dashboard/widgets/WelcomeWidget.js +14 -12
  30. package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -1
  31. package/dist/pages/dashboard/widgets/WorkspacesWidget.js +20 -21
  32. package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -1
  33. package/package.json +2 -2
@@ -6,12 +6,12 @@ import { useWorkspacePermissions as a } from "../hooks/useWorkspacePermissions.j
6
6
  import { useMyProjects as o } from "../hooks/useProjects.js";
7
7
  import { useArchiveProject as s, useDeleteProject as c, useUnarchiveProject as l } from "../hooks/useProjectMutations.js";
8
8
  import { getProjectDisplayTags as ee } from "../utils/projectTags.js";
9
- import { ProjectCard as te } from "../components/ProjectCard.js";
10
- import { CreateProjectDialog as u } from "../components/CreateProjectDialog.js";
11
- import { useEffect as d, useMemo as f, useState as p } from "react";
12
- import { FolderKanban as ne, Grid3x3 as re, List as ie, Plus as m, Search as ae } from "lucide-react";
13
- import { Fragment as oe, jsx as h, jsxs as g } from "react/jsx-runtime";
14
- import { Button as _, Card as se, CardContent as v, GlassCard as y, Input as ce, PageContainer as le, Select as b, SelectContent as x, SelectItem as S, SelectTrigger as C, SelectValue as w, Skeleton as T } from "@burdenoff/fe-libs/ui";
9
+ import { ProjectCard as u } from "../components/ProjectCard.js";
10
+ import { CreateProjectDialog as d } from "../components/CreateProjectDialog.js";
11
+ import { useEffect as f, useMemo as p, useState as m } from "react";
12
+ import { Grid3x3 as te, List as ne, Plus as h, Search as re } from "lucide-react";
13
+ import { Fragment as ie, jsx as g, jsxs as _ } from "react/jsx-runtime";
14
+ import { Button as v, Card as ae, CardContent as y, GlassCard as oe, IllustratedEmptyState as se, Input as ce, PageContainer as le, Select as b, SelectContent as x, SelectItem as S, SelectTrigger as C, SelectValue as w, Skeleton as T } from "@burdenoff/fe-libs/ui";
15
15
  import { useParams as ue } from "react-router-dom";
16
16
  import { useDebounce as de } from "@burdenoff/fe-libs/shared/hooks";
17
17
  import { useI18n as fe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
@@ -23,10 +23,10 @@ function E() {
23
23
  workspaceId: D,
24
24
  requireParams: !0
25
25
  });
26
- let { viewMode: O, setViewMode: k, projectFilters: A, setProjectFilters: j, clearProjectFilters: me, selectedProjectIds: M, toggleProjectSelection: N, clearProjectSelection: P, openCreateProjectDialog: he, isCreateProjectDialogOpen: ge } = e(), [F, I] = p(A.search || ""), [L, R] = p([]), [z, B] = p(!0), V = de(F, 500);
27
- d(() => {
26
+ let { viewMode: O, setViewMode: k, projectFilters: A, setProjectFilters: j, clearProjectFilters: me, selectedProjectIds: M, toggleProjectSelection: N, clearProjectSelection: P, openCreateProjectDialog: he, isCreateProjectDialogOpen: ge } = e(), [F, I] = m(A.search || ""), [L, R] = m([]), [z, B] = m(!0), V = de(F, 500);
27
+ f(() => {
28
28
  j({ search: V });
29
- }, [V, j]), d(() => {
29
+ }, [V, j]), f(() => {
30
30
  if (L.length === 0) {
31
31
  j({
32
32
  tagIds: void 0,
@@ -46,20 +46,20 @@ function E() {
46
46
  L,
47
47
  z,
48
48
  j
49
- ]), d(() => () => P(), [P]);
49
+ ]), f(() => () => P(), [P]);
50
50
  let { data: H, isLoading: U, error: W } = o({
51
51
  limit: 500,
52
52
  offset: 0
53
- }), G = f(() => {
53
+ }), G = p(() => {
54
54
  let e = H?.items ?? [], t = (A.search ?? "").trim().toLowerCase(), n = A.tagIds ?? [], r = A.matchAllTags ?? !0, i = (e) => !D || e.workspaceId === D, a = (e) => !t || e.name.toLowerCase().includes(t) || e.key.toLowerCase().includes(t), o = (e) => !A.status || e.status === A.status, s = (e) => A.archived === void 0 || e.archived === A.archived, c = (e) => {
55
55
  if (n.length === 0) return !0;
56
56
  let t = new Set(ee(e).map((e) => e.tagId));
57
57
  return r ? n.every((e) => t.has(e)) : n.some((e) => t.has(e));
58
- }, l = e.filter((e) => i(e) && a(e) && o(e) && s(e) && c(e)), te = H?.total ?? l.length, u = H?.hasMore ?? !1;
58
+ }, l = e.filter((e) => i(e) && a(e) && o(e) && s(e) && c(e)), u = H?.total ?? l.length, d = H?.hasMore ?? !1;
59
59
  return {
60
60
  items: l,
61
- total: D || n.length > 0 ? l.length : te,
62
- hasMore: u
61
+ total: D || n.length > 0 ? l.length : u,
62
+ hasMore: d
63
63
  };
64
64
  }, [
65
65
  H?.items,
@@ -67,15 +67,15 @@ function E() {
67
67
  H?.hasMore,
68
68
  A,
69
69
  D
70
- ]), { mutateAsync: _e } = s(D), { mutateAsync: ve } = l(D), { mutateAsync: ye } = c(D), K = f(() => G?.items.filter((e) => M.has(e.id)) ?? [], [G?.items, M]), q = f(() => K.filter((e) => !e.archived), [K]), J = f(() => K.filter((e) => e.archived), [K]), Y = (G?.items.length ?? 0) > 0 && (G?.items ?? []).every((e) => M.has(e.id)), be = (G?.items ?? []).some((e) => M.has(e.id)) && !Y, { canCreateProject: X, canDeleteProject: Z, canArchiveProject: Q, isLoading: xe } = a();
71
- if (xe) return /* @__PURE__ */ g("div", {
70
+ ]), { mutateAsync: _e } = s(D), { mutateAsync: ve } = l(D), { mutateAsync: ye } = c(D), K = p(() => G?.items.filter((e) => M.has(e.id)) ?? [], [G?.items, M]), q = p(() => K.filter((e) => !e.archived), [K]), J = p(() => K.filter((e) => e.archived), [K]), Y = (G?.items.length ?? 0) > 0 && (G?.items ?? []).every((e) => M.has(e.id)), be = (G?.items ?? []).some((e) => M.has(e.id)) && !Y, { canCreateProject: X, canDeleteProject: Z, canArchiveProject: Q, isLoading: xe } = a();
71
+ if (xe) return /* @__PURE__ */ _("div", {
72
72
  className: "space-y-4 p-6",
73
- children: [/* @__PURE__ */ h(T, { className: "h-10 w-1/3" }), /* @__PURE__ */ g("div", {
73
+ children: [/* @__PURE__ */ g(T, { className: "h-10 w-1/3" }), /* @__PURE__ */ _("div", {
74
74
  className: "grid grid-cols-1 md:grid-cols-3 gap-4",
75
75
  children: [
76
- /* @__PURE__ */ h(T, { className: "h-32" }),
77
- /* @__PURE__ */ h(T, { className: "h-32" }),
78
- /* @__PURE__ */ h(T, { className: "h-32" })
76
+ /* @__PURE__ */ g(T, { className: "h-32" }),
77
+ /* @__PURE__ */ g(T, { className: "h-32" }),
78
+ /* @__PURE__ */ g(T, { className: "h-32" })
79
79
  ]
80
80
  })]
81
81
  });
@@ -100,138 +100,138 @@ function E() {
100
100
  e !== M.has(t.id) && N(t.id);
101
101
  });
102
102
  };
103
- return /* @__PURE__ */ h(le, {
103
+ return /* @__PURE__ */ g(le, {
104
104
  padded: !1,
105
- children: /* @__PURE__ */ g("div", {
105
+ children: /* @__PURE__ */ _("div", {
106
106
  className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
107
107
  children: [
108
- /* @__PURE__ */ g("div", {
108
+ /* @__PURE__ */ _("div", {
109
109
  className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4",
110
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h1", {
110
+ children: [/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h1", {
111
111
  className: "text-2xl sm:text-3xl font-bold",
112
112
  children: t(E, "projectsList.pageTitle", "Projects")
113
- }), /* @__PURE__ */ h("p", {
113
+ }), /* @__PURE__ */ g("p", {
114
114
  className: "text-text-secondary",
115
115
  children: t(E, "projectsList.pageSubtitle", "Manage and organize your projects")
116
- })] }), /* @__PURE__ */ g("div", {
116
+ })] }), /* @__PURE__ */ _("div", {
117
117
  className: "flex items-center gap-2",
118
- children: [/* @__PURE__ */ g("div", {
118
+ children: [/* @__PURE__ */ _("div", {
119
119
  className: "flex items-center gap-1 border rounded-lg p-1",
120
- children: [/* @__PURE__ */ h(_, {
120
+ children: [/* @__PURE__ */ g(v, {
121
121
  variant: O === "grid" ? "secondary" : "ghost",
122
122
  size: "sm",
123
123
  onClick: () => k("grid"),
124
124
  className: "size-8 p-0",
125
125
  "aria-label": t(E, "projectsList.gridViewAriaLabel", "Show projects in grid view"),
126
- children: /* @__PURE__ */ h(re, { size: 16 })
127
- }), /* @__PURE__ */ h(_, {
126
+ children: /* @__PURE__ */ g(te, { size: 16 })
127
+ }), /* @__PURE__ */ g(v, {
128
128
  variant: O === "list" ? "secondary" : "ghost",
129
129
  size: "sm",
130
130
  onClick: () => k("list"),
131
131
  className: "size-8 p-0",
132
132
  "aria-label": t(E, "projectsList.listViewAriaLabel", "Show projects in list view"),
133
- children: /* @__PURE__ */ h(ie, { size: 16 })
133
+ children: /* @__PURE__ */ g(ne, { size: 16 })
134
134
  })]
135
- }), X && /* @__PURE__ */ g(_, {
135
+ }), X && /* @__PURE__ */ _(v, {
136
136
  onClick: Se,
137
- children: [/* @__PURE__ */ h(m, { className: "size-4 sm:mr-2" }), /* @__PURE__ */ h("span", {
137
+ children: [/* @__PURE__ */ g(h, { className: "size-4 sm:mr-2" }), /* @__PURE__ */ g("span", {
138
138
  className: "hidden sm:inline",
139
139
  children: t(E, "projectsList.createProject", "Create Project")
140
140
  })]
141
141
  })]
142
142
  })]
143
143
  }),
144
- /* @__PURE__ */ g("div", {
144
+ /* @__PURE__ */ _("div", {
145
145
  className: "flex flex-col sm:flex-row gap-3",
146
146
  children: [
147
- /* @__PURE__ */ g("div", {
147
+ /* @__PURE__ */ _("div", {
148
148
  className: "relative flex-1",
149
- children: [/* @__PURE__ */ h(ae, {
149
+ children: [/* @__PURE__ */ g(re, {
150
150
  className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-text-secondary",
151
151
  size: 18
152
- }), /* @__PURE__ */ h(ce, {
152
+ }), /* @__PURE__ */ g(ce, {
153
153
  placeholder: t(E, "projectsList.searchPlaceholder", "Search projects..."),
154
154
  value: F,
155
155
  onChange: (e) => I(e.target.value),
156
156
  className: "pl-[3.25rem]"
157
157
  })]
158
158
  }),
159
- /* @__PURE__ */ g(b, {
159
+ /* @__PURE__ */ _(b, {
160
160
  value: A.status || "all",
161
161
  onValueChange: Ce,
162
- children: [/* @__PURE__ */ h(C, {
162
+ children: [/* @__PURE__ */ g(C, {
163
163
  className: "w-full sm:w-[180px]",
164
- children: /* @__PURE__ */ h(w, { placeholder: t(E, "projectsList.filterByStatus", "Filter by status") })
165
- }), /* @__PURE__ */ g(x, { children: [
166
- /* @__PURE__ */ h(S, {
164
+ children: /* @__PURE__ */ g(w, { placeholder: t(E, "projectsList.filterByStatus", "Filter by status") })
165
+ }), /* @__PURE__ */ _(x, { children: [
166
+ /* @__PURE__ */ g(S, {
167
167
  value: "all",
168
168
  children: t(E, "projectsList.statusAll", "All Statuses")
169
169
  }),
170
- /* @__PURE__ */ h(S, {
170
+ /* @__PURE__ */ g(S, {
171
171
  value: "ACTIVE",
172
172
  children: t(E, "projectsList.statusActive", "Active")
173
173
  }),
174
- /* @__PURE__ */ h(S, {
174
+ /* @__PURE__ */ g(S, {
175
175
  value: "INACTIVE",
176
176
  children: t(E, "projectsList.statusInactive", "Inactive")
177
177
  })
178
178
  ] })]
179
179
  }),
180
- /* @__PURE__ */ g(b, {
180
+ /* @__PURE__ */ _(b, {
181
181
  value: A.archived === void 0 ? "all" : A.archived ? "true" : "false",
182
182
  onValueChange: we,
183
- children: [/* @__PURE__ */ h(C, {
183
+ children: [/* @__PURE__ */ g(C, {
184
184
  className: "w-full sm:w-[180px]",
185
- children: /* @__PURE__ */ h(w, { placeholder: t(E, "projectsList.filterByArchive", "Filter by archive") })
186
- }), /* @__PURE__ */ g(x, { children: [
187
- /* @__PURE__ */ h(S, {
185
+ children: /* @__PURE__ */ g(w, { placeholder: t(E, "projectsList.filterByArchive", "Filter by archive") })
186
+ }), /* @__PURE__ */ _(x, { children: [
187
+ /* @__PURE__ */ g(S, {
188
188
  value: "all",
189
189
  children: t(E, "projectsList.archiveAll", "All Projects")
190
190
  }),
191
- /* @__PURE__ */ h(S, {
191
+ /* @__PURE__ */ g(S, {
192
192
  value: "false",
193
193
  children: t(E, "projectsList.archiveActiveProjects", "Active Projects")
194
194
  }),
195
- /* @__PURE__ */ h(S, {
195
+ /* @__PURE__ */ g(S, {
196
196
  value: "true",
197
197
  children: t(E, "projectsList.archiveArchived", "Archived")
198
198
  })
199
199
  ] })]
200
200
  }),
201
- (A.search || A.status || A.archived !== void 0 || L.length > 0) && /* @__PURE__ */ h(_, {
201
+ (A.search || A.status || A.archived !== void 0 || L.length > 0) && /* @__PURE__ */ g(v, {
202
202
  variant: "outline",
203
203
  onClick: Te,
204
204
  children: t(E, "projectsList.clearFilters", "Clear Filters")
205
205
  })
206
206
  ]
207
207
  }),
208
- L.length > 0 && /* @__PURE__ */ g("div", {
208
+ L.length > 0 && /* @__PURE__ */ _("div", {
209
209
  className: "flex flex-col gap-3 rounded-lg border border-border-seam bg-bg-surface px-4 py-3",
210
- children: [/* @__PURE__ */ g("div", {
210
+ children: [/* @__PURE__ */ _("div", {
211
211
  className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
212
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
212
+ children: [/* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
213
213
  className: "text-sm font-medium",
214
214
  children: t(E, "projectsList.activeTagFilters", "Active tag filters")
215
- }), /* @__PURE__ */ h("p", {
215
+ }), /* @__PURE__ */ g("p", {
216
216
  className: "text-xs text-text-secondary",
217
217
  children: t(E, "projectsList.activeTagFiltersDescription", "Click a project tag to add or remove it from the current filter set.")
218
- })] }), /* @__PURE__ */ g(b, {
218
+ })] }), /* @__PURE__ */ _(b, {
219
219
  value: z ? "all" : "any",
220
220
  onValueChange: (e) => B(e === "all"),
221
- children: [/* @__PURE__ */ h(C, {
221
+ children: [/* @__PURE__ */ g(C, {
222
222
  className: "w-full sm:w-[180px]",
223
- children: /* @__PURE__ */ h(w, { placeholder: t(E, "projectsList.tagMatchMode", "Tag match mode") })
224
- }), /* @__PURE__ */ g(x, { children: [/* @__PURE__ */ h(S, {
223
+ children: /* @__PURE__ */ g(w, { placeholder: t(E, "projectsList.tagMatchMode", "Tag match mode") })
224
+ }), /* @__PURE__ */ _(x, { children: [/* @__PURE__ */ g(S, {
225
225
  value: "all",
226
226
  children: t(E, "projectsList.tagMatchAll", "Match all tags")
227
- }), /* @__PURE__ */ h(S, {
227
+ }), /* @__PURE__ */ g(S, {
228
228
  value: "any",
229
229
  children: t(E, "projectsList.tagMatchAny", "Match any tag")
230
230
  })] })]
231
231
  })]
232
- }), /* @__PURE__ */ h("div", {
232
+ }), /* @__PURE__ */ g("div", {
233
233
  className: "flex flex-wrap gap-2",
234
- children: L.map((e) => /* @__PURE__ */ h(pe, {
234
+ children: L.map((e) => /* @__PURE__ */ g(pe, {
235
235
  id: e.tagId,
236
236
  label: e.label,
237
237
  color: e.color ?? void 0,
@@ -243,80 +243,65 @@ function E() {
243
243
  }, e.tagId))
244
244
  })]
245
245
  }),
246
- W && /* @__PURE__ */ h(y, {
246
+ W && /* @__PURE__ */ g(oe, {
247
247
  treatment: "plain",
248
248
  className: "border-status-error-border",
249
- children: /* @__PURE__ */ h(v, {
249
+ children: /* @__PURE__ */ g(y, {
250
250
  className: "pt-6",
251
- children: /* @__PURE__ */ g("div", {
251
+ children: /* @__PURE__ */ _("div", {
252
252
  className: "flex flex-col items-center justify-center py-8 text-center",
253
- children: [/* @__PURE__ */ h("p", {
253
+ children: [/* @__PURE__ */ g("p", {
254
254
  className: "text-status-error-text font-semibold mb-2",
255
255
  children: t(E, "projectsList.errorLoading", "Error loading projects")
256
- }), /* @__PURE__ */ h("p", {
256
+ }), /* @__PURE__ */ g("p", {
257
257
  className: "text-sm text-text-secondary",
258
258
  children: W instanceof Error ? W.message : t(E, "projectsList.unknownError", "An unknown error occurred")
259
259
  })]
260
260
  })
261
261
  })
262
262
  }),
263
- U && /* @__PURE__ */ h("div", {
263
+ U && /* @__PURE__ */ g("div", {
264
264
  className: "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",
265
- children: Array.from({ length: 6 }).map((e, t) => /* @__PURE__ */ h(se, {
265
+ children: Array.from({ length: 6 }).map((e, t) => /* @__PURE__ */ g(ae, {
266
266
  className: "border-border-seam",
267
- children: /* @__PURE__ */ h(v, {
267
+ children: /* @__PURE__ */ g(y, {
268
268
  className: "pt-6",
269
- children: /* @__PURE__ */ g("div", {
269
+ children: /* @__PURE__ */ _("div", {
270
270
  className: "space-y-3",
271
271
  children: [
272
- /* @__PURE__ */ h(T, { className: "size-12 rounded-lg" }),
273
- /* @__PURE__ */ h(T, { className: "h-4 w-3/4" }),
274
- /* @__PURE__ */ h(T, { className: "h-4 w-1/2" })
272
+ /* @__PURE__ */ g(T, { className: "size-12 rounded-lg" }),
273
+ /* @__PURE__ */ g(T, { className: "h-4 w-3/4" }),
274
+ /* @__PURE__ */ g(T, { className: "h-4 w-1/2" })
275
275
  ]
276
276
  })
277
277
  })
278
278
  }, t))
279
279
  }),
280
- !U && !W && G?.items.length === 0 && /* @__PURE__ */ h(y, {
280
+ !U && !W && G?.items.length === 0 && /* @__PURE__ */ g(oe, {
281
281
  treatment: "plain",
282
282
  className: "border-border-seam",
283
- children: /* @__PURE__ */ h(v, {
283
+ children: /* @__PURE__ */ g(y, {
284
284
  className: "pt-6",
285
- children: /* @__PURE__ */ g("div", {
286
- className: "flex flex-col items-center justify-center py-12 text-center",
287
- children: [
288
- /* @__PURE__ */ h("div", {
289
- className: "rounded-full bg-bg-sunken p-6 mb-4",
290
- children: /* @__PURE__ */ h(ne, {
291
- size: 48,
292
- className: "text-text-secondary"
293
- })
294
- }),
295
- /* @__PURE__ */ h("h3", {
296
- className: "text-lg font-semibold mb-2",
297
- children: t(E, "projectsList.noProjectsFound", "No projects found")
298
- }),
299
- /* @__PURE__ */ h("p", {
300
- className: "text-text-secondary max-w-sm mb-4",
301
- children: A.search ? t(E, "projectsList.adjustSearchOrFilters", "Try adjusting your search or filters") : t(E, "projectsList.createFirstProject", "Create your first project to get started organizing your work")
302
- }),
303
- !A.search && X && /* @__PURE__ */ g(_, {
304
- onClick: Se,
305
- children: [/* @__PURE__ */ h(m, {
306
- size: 16,
307
- className: "mr-2"
308
- }), t(E, "projectsList.createProject", "Create Project")]
309
- })
310
- ]
285
+ children: /* @__PURE__ */ g(se, {
286
+ illustration: A.search ? "empty-search" : "empty-data",
287
+ title: t(E, "projectsList.noProjectsFound", "No projects found"),
288
+ description: A.search ? t(E, "projectsList.adjustSearchOrFilters", "Try adjusting your search or filters") : t(E, "projectsList.createFirstProject", "Create your first project to get started organizing your work"),
289
+ action: !A.search && X ? /* @__PURE__ */ _(v, {
290
+ onClick: Se,
291
+ children: [/* @__PURE__ */ g(h, {
292
+ size: 16,
293
+ className: "mr-2"
294
+ }), t(E, "projectsList.createProject", "Create Project")]
295
+ }) : void 0
311
296
  })
312
297
  })
313
298
  }),
314
- !U && !W && G && G.items.length > 0 && /* @__PURE__ */ g(oe, { children: [
315
- /* @__PURE__ */ g("div", {
299
+ !U && !W && G && G.items.length > 0 && /* @__PURE__ */ _(ie, { children: [
300
+ /* @__PURE__ */ _("div", {
316
301
  className: "flex flex-col gap-3 rounded-lg border border-border-seam bg-bg-surface p-4 sm:flex-row sm:items-center sm:justify-between",
317
- children: [/* @__PURE__ */ g("label", {
302
+ children: [/* @__PURE__ */ _("label", {
318
303
  className: "flex items-center gap-2 text-sm text-text-primary",
319
- children: [/* @__PURE__ */ h("input", {
304
+ children: [/* @__PURE__ */ g("input", {
320
305
  type: "checkbox",
321
306
  checked: Y,
322
307
  ref: (e) => {
@@ -325,11 +310,11 @@ function E() {
325
310
  onChange: (e) => Ee(e.target.checked),
326
311
  "aria-label": t(E, "projectsList.selectAllAriaLabel", "Select all projects"),
327
312
  className: "size-4 rounded border-border-subtle text-primary"
328
- }), /* @__PURE__ */ h("span", { children: t(E, "projectsList.selectAllVisible", "Select all visible") })]
329
- }), /* @__PURE__ */ g("div", {
313
+ }), /* @__PURE__ */ g("span", { children: t(E, "projectsList.selectAllVisible", "Select all visible") })]
314
+ }), /* @__PURE__ */ _("div", {
330
315
  className: "flex flex-wrap items-center gap-2",
331
316
  children: [
332
- /* @__PURE__ */ g("span", {
317
+ /* @__PURE__ */ _("span", {
333
318
  className: "text-sm text-text-secondary",
334
319
  children: [
335
320
  M.size,
@@ -337,13 +322,13 @@ function E() {
337
322
  t(E, "projectsList.selected", "selected")
338
323
  ]
339
324
  }),
340
- M.size > 0 && /* @__PURE__ */ h(_, {
325
+ M.size > 0 && /* @__PURE__ */ g(v, {
341
326
  variant: "ghost",
342
327
  size: "sm",
343
328
  onClick: P,
344
329
  children: t(E, "projectsList.clearSelection", "Clear selection")
345
330
  }),
346
- D && Q && /* @__PURE__ */ g(_, {
331
+ D && Q && /* @__PURE__ */ _(v, {
347
332
  variant: "outline",
348
333
  size: "sm",
349
334
  onClick: async () => {
@@ -352,7 +337,7 @@ function E() {
352
337
  disabled: q.length === 0,
353
338
  children: [t(E, "projectsList.archiveSelected", "Archive Selected"), q.length > 0 ? ` (${q.length})` : ""]
354
339
  }),
355
- D && Q && /* @__PURE__ */ g(_, {
340
+ D && Q && /* @__PURE__ */ _(v, {
356
341
  variant: "outline",
357
342
  size: "sm",
358
343
  onClick: async () => {
@@ -361,7 +346,7 @@ function E() {
361
346
  disabled: J.length === 0,
362
347
  children: [t(E, "projectsList.unarchiveSelected", "Unarchive Selected"), J.length > 0 ? ` (${J.length})` : ""]
363
348
  }),
364
- D && Z && /* @__PURE__ */ g(_, {
349
+ D && Z && /* @__PURE__ */ _(v, {
365
350
  variant: "outline",
366
351
  size: "sm",
367
352
  onClick: async () => {
@@ -382,9 +367,9 @@ function E() {
382
367
  ]
383
368
  })]
384
369
  }),
385
- /* @__PURE__ */ h("div", {
370
+ /* @__PURE__ */ g("div", {
386
371
  className: O === "list" ? "space-y-3" : "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4",
387
- children: G.items.map((e) => /* @__PURE__ */ h(te, {
372
+ children: G.items.map((e) => /* @__PURE__ */ g(u, {
388
373
  project: e,
389
374
  selected: M.has(e.id),
390
375
  canArchive: Q,
@@ -395,7 +380,7 @@ function E() {
395
380
  }
396
381
  }, e.id))
397
382
  }),
398
- G.total > G.items.length && /* @__PURE__ */ g("div", {
383
+ G.total > G.items.length && /* @__PURE__ */ _("div", {
399
384
  className: "text-center text-sm text-text-secondary",
400
385
  children: [
401
386
  t(E, "projectsList.showingPrefix", "Showing"),
@@ -410,7 +395,7 @@ function E() {
410
395
  ]
411
396
  })
412
397
  ] }),
413
- ge && /* @__PURE__ */ h(u, { workspaceId: D })
398
+ ge && /* @__PURE__ */ g(d, { workspaceId: D })
414
399
  ]
415
400
  })
416
401
  });