@burdenoff/microfe-workspaces 2026.625.3 → 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.
- package/dist/pages/ActivityListPage.js +32 -48
- package/dist/pages/ActivityListPage.js.map +1 -1
- package/dist/pages/MembersListPage.js +196 -241
- package/dist/pages/MembersListPage.js.map +1 -1
- package/dist/pages/PendingInvitesPage.js +69 -78
- package/dist/pages/PendingInvitesPage.js.map +1 -1
- package/dist/pages/ProjectDetailPage.js +37 -52
- package/dist/pages/ProjectDetailPage.js.map +1 -1
- package/dist/pages/ProjectMembersPage.js +73 -86
- package/dist/pages/ProjectMembersPage.js.map +1 -1
- package/dist/pages/ProjectsListPage.js +103 -118
- package/dist/pages/ProjectsListPage.js.map +1 -1
- package/dist/pages/WorkspaceDetailPage.js +74 -76
- package/dist/pages/WorkspaceDetailPage.js.map +1 -1
- package/dist/pages/WorkspacesListPage.js +167 -178
- package/dist/pages/WorkspacesListPage.js.map +1 -1
- package/dist/pages/dashboard/widgets/AgentsWidget.js +21 -22
- package/dist/pages/dashboard/widgets/AgentsWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/ProjectsWidget.js +26 -27
- package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js +19 -23
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/SessionsWidget.js +30 -32
- package/dist/pages/dashboard/widgets/SessionsWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +18 -20
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/VibesWidget.js +18 -19
- package/dist/pages/dashboard/widgets/VibesWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/WelcomeWidget.js +14 -12
- package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -1
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js +20 -21
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,9 +3,8 @@ import { useWorkspacesPageView as t } from "../hooks/useWorkspacesPageView.js";
|
|
|
3
3
|
import { useWorkspacePermissions as n } from "../hooks/useWorkspacePermissions.js";
|
|
4
4
|
import { formatDate as r } from "../utils/formatters.js";
|
|
5
5
|
import { useWorkspaceActivity as i } from "../hooks/useWorkspaceActivity.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { CardContent as c, CardHeader as l, CardTitle as u, GlassCard as d, Skeleton as f } from "@burdenoff/fe-libs/ui";
|
|
6
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
7
|
+
import { CardContent as s, CardHeader as c, CardTitle as l, GlassCard as u, IllustratedEmptyState as d, Skeleton as f } from "@burdenoff/fe-libs/ui";
|
|
9
8
|
import { useParams as p } from "react-router-dom";
|
|
10
9
|
import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
11
10
|
//#region src/pages/ActivityListPage.tsx
|
|
@@ -16,96 +15,81 @@ function h() {
|
|
|
16
15
|
requireParams: !0
|
|
17
16
|
});
|
|
18
17
|
let { data: _, isLoading: v, error: y } = i(g), { canViewActivity: b, isLoading: x } = n();
|
|
19
|
-
return x ? /* @__PURE__ */
|
|
18
|
+
return x ? /* @__PURE__ */ o("div", {
|
|
20
19
|
className: "space-y-4 p-6",
|
|
21
|
-
children: [/* @__PURE__ */
|
|
22
|
-
}) : b ? /* @__PURE__ */
|
|
20
|
+
children: [/* @__PURE__ */ a(f, { className: "h-10 w-1/3" }), /* @__PURE__ */ a(f, { className: "h-64" })]
|
|
21
|
+
}) : b ? /* @__PURE__ */ o("div", {
|
|
23
22
|
className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
|
|
24
|
-
children: [/* @__PURE__ */
|
|
23
|
+
children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
25
24
|
className: "text-2xl sm:text-3xl font-bold",
|
|
26
25
|
children: e(h, "activityList.title", "Activity")
|
|
27
|
-
}), /* @__PURE__ */
|
|
26
|
+
}), /* @__PURE__ */ a("p", {
|
|
28
27
|
className: "text-text-secondary",
|
|
29
28
|
children: e(h, "activityList.description", "Track workspace activity")
|
|
30
|
-
})] }), v ? /* @__PURE__ */
|
|
29
|
+
})] }), v ? /* @__PURE__ */ a(u, {
|
|
31
30
|
treatment: "plain",
|
|
32
31
|
className: "border-border-seam",
|
|
33
|
-
children: /* @__PURE__ */
|
|
32
|
+
children: /* @__PURE__ */ a(s, {
|
|
34
33
|
className: "py-8 text-sm text-text-muted",
|
|
35
34
|
children: e(h, "activityList.loading", "Loading activity…")
|
|
36
35
|
})
|
|
37
|
-
}) : y ? /* @__PURE__ */
|
|
36
|
+
}) : y ? /* @__PURE__ */ a(u, {
|
|
38
37
|
treatment: "plain",
|
|
39
38
|
className: "border-border-seam",
|
|
40
|
-
children: /* @__PURE__ */
|
|
39
|
+
children: /* @__PURE__ */ a(s, {
|
|
41
40
|
className: "py-8 text-sm text-status-error-text",
|
|
42
41
|
children: y instanceof Error ? y.message : e(h, "activityList.loadError", "Failed to load activity")
|
|
43
42
|
})
|
|
44
|
-
}) : (_?.length ?? 0) === 0 ? /* @__PURE__ */
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
children: /* @__PURE__ */ o(a, {
|
|
50
|
-
size: 48,
|
|
51
|
-
className: "text-text-secondary"
|
|
52
|
-
})
|
|
53
|
-
}),
|
|
54
|
-
/* @__PURE__ */ o("h3", {
|
|
55
|
-
className: "text-lg font-semibold mb-2",
|
|
56
|
-
children: e(h, "activityList.emptyTitle", "No recent activity")
|
|
57
|
-
}),
|
|
58
|
-
/* @__PURE__ */ o("p", {
|
|
59
|
-
className: "text-text-secondary max-w-sm",
|
|
60
|
-
children: e(h, "activityList.emptyDescription", "Recent workspace actions will appear here as your team creates, updates, and manages work.")
|
|
61
|
-
})
|
|
62
|
-
]
|
|
63
|
-
}) : /* @__PURE__ */ o("div", {
|
|
43
|
+
}) : (_?.length ?? 0) === 0 ? /* @__PURE__ */ a(d, {
|
|
44
|
+
illustration: "empty-data",
|
|
45
|
+
title: e(h, "activityList.emptyTitle", "No recent activity"),
|
|
46
|
+
description: e(h, "activityList.emptyDescription", "Recent workspace actions will appear here as your team creates, updates, and manages work.")
|
|
47
|
+
}) : /* @__PURE__ */ a("div", {
|
|
64
48
|
className: "space-y-3",
|
|
65
|
-
children: _?.map((t) => /* @__PURE__ */
|
|
49
|
+
children: _?.map((t) => /* @__PURE__ */ o(u, {
|
|
66
50
|
treatment: "insight",
|
|
67
51
|
className: "border-border-seam",
|
|
68
|
-
children: [/* @__PURE__ */
|
|
52
|
+
children: [/* @__PURE__ */ a(c, {
|
|
69
53
|
className: "pb-2",
|
|
70
|
-
children: /* @__PURE__ */
|
|
54
|
+
children: /* @__PURE__ */ a(l, {
|
|
71
55
|
className: "text-base",
|
|
72
56
|
children: t.description || t.action
|
|
73
57
|
})
|
|
74
|
-
}), /* @__PURE__ */ s
|
|
58
|
+
}), /* @__PURE__ */ o(s, {
|
|
75
59
|
className: "space-y-1 text-sm text-text-muted",
|
|
76
60
|
children: [
|
|
77
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ o("p", { children: [
|
|
78
62
|
e(h, "activityList.labelAction", "Action"),
|
|
79
63
|
":",
|
|
80
64
|
" ",
|
|
81
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ a("span", {
|
|
82
66
|
className: "text-text-primary",
|
|
83
67
|
children: t.action
|
|
84
68
|
})
|
|
85
69
|
] }),
|
|
86
|
-
t.resourceType && /* @__PURE__ */
|
|
70
|
+
t.resourceType && /* @__PURE__ */ o("p", { children: [
|
|
87
71
|
e(h, "activityList.labelResource", "Resource"),
|
|
88
72
|
":",
|
|
89
73
|
" ",
|
|
90
|
-
/* @__PURE__ */
|
|
74
|
+
/* @__PURE__ */ a("span", {
|
|
91
75
|
className: "text-text-primary",
|
|
92
76
|
children: t.resourceType
|
|
93
77
|
})
|
|
94
78
|
] }),
|
|
95
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ o("p", { children: [
|
|
96
80
|
e(h, "activityList.labelWhen", "When"),
|
|
97
81
|
":",
|
|
98
82
|
" ",
|
|
99
|
-
/* @__PURE__ */
|
|
83
|
+
/* @__PURE__ */ a("span", {
|
|
100
84
|
className: "text-text-primary",
|
|
101
85
|
children: r(t.timestamp)
|
|
102
86
|
})
|
|
103
87
|
] }),
|
|
104
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ o("p", { children: [
|
|
105
89
|
e(h, "activityList.labelActor", "Actor"),
|
|
106
90
|
":",
|
|
107
91
|
" ",
|
|
108
|
-
/* @__PURE__ */
|
|
92
|
+
/* @__PURE__ */ a("span", {
|
|
109
93
|
className: "break-all text-text-primary",
|
|
110
94
|
children: t.userId
|
|
111
95
|
})
|
|
@@ -114,14 +98,14 @@ function h() {
|
|
|
114
98
|
})]
|
|
115
99
|
}, t.id))
|
|
116
100
|
})]
|
|
117
|
-
}) : /* @__PURE__ */
|
|
101
|
+
}) : /* @__PURE__ */ a("div", {
|
|
118
102
|
className: "flex items-center justify-center min-h-[400px]",
|
|
119
|
-
children: /* @__PURE__ */
|
|
103
|
+
children: /* @__PURE__ */ o("div", {
|
|
120
104
|
className: "text-center space-y-2",
|
|
121
|
-
children: [/* @__PURE__ */
|
|
105
|
+
children: [/* @__PURE__ */ a("h2", {
|
|
122
106
|
className: "text-lg font-semibold",
|
|
123
107
|
children: e(h, "activityList.accessDenied", "Access Denied")
|
|
124
|
-
}), /* @__PURE__ */
|
|
108
|
+
}), /* @__PURE__ */ a("p", {
|
|
125
109
|
className: "text-sm text-text-secondary",
|
|
126
110
|
children: e(h, "activityList.accessDeniedDescription", "You don't have permission to view activity.")
|
|
127
111
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityListPage.js","names":[],"sources":["../../src/pages/ActivityListPage.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ActivityListPage.js","names":[],"sources":["../../src/pages/ActivityListPage.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport {\n GlassCard,\n CardContent,\n CardHeader,\n CardTitle,\n Skeleton,\n IllustratedEmptyState,\n} from '@burdenoff/fe-libs/ui';\nimport { useWorkspaceActivity } from '../hooks/useWorkspaceActivity';\nimport { useWorkspacePermissions } from '../hooks/useWorkspacePermissions';\nimport { useWorkspacesPageView } from '../hooks/useWorkspacesPageView';\nimport { formatDate } from '../utils/formatters';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { tWithFallback } from '../utils/i18n';\n\nexport function ActivityListPage() {\n const { t } = useI18n();\n\n // The URL path `:workspaceId` (when present) intentionally overrides the active\n // context. WorkspaceContextPathSync rewrites this segment on a context switch so\n // the override can't point at a stale workspace. (BOFF-2805 follow-up)\n const { workspaceId } = useParams<{ workspaceId: string }>();\n useWorkspacesPageView('workspaces.activity', { workspaceId, requireParams: true });\n const { data: activities, isLoading, error } = useWorkspaceActivity(workspaceId);\n const { canViewActivity, isLoading: permissionsLoading } = useWorkspacePermissions();\n\n if (permissionsLoading) {\n return (\n <div className=\"space-y-4 p-6\">\n <Skeleton className=\"h-10 w-1/3\" />\n <Skeleton className=\"h-64\" />\n </div>\n );\n }\n\n if (!canViewActivity) {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold\">\n {tWithFallback(t, 'activityList.accessDenied', 'Access Denied')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tWithFallback(\n t,\n 'activityList.accessDeniedDescription',\n \"You don't have permission to view activity.\"\n )}\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6\">\n <div>\n <h1 className=\"text-2xl sm:text-3xl font-bold\">\n {tWithFallback(t, 'activityList.title', 'Activity')}\n </h1>\n <p className=\"text-text-secondary\">\n {tWithFallback(t, 'activityList.description', 'Track workspace activity')}\n </p>\n </div>\n\n {isLoading ? (\n <GlassCard treatment=\"plain\" className=\"border-border-seam\">\n <CardContent className=\"py-8 text-sm text-text-muted\">\n {tWithFallback(t, 'activityList.loading', 'Loading activity…')}\n </CardContent>\n </GlassCard>\n ) : error ? (\n <GlassCard treatment=\"plain\" className=\"border-border-seam\">\n <CardContent className=\"py-8 text-sm text-status-error-text\">\n {error instanceof Error\n ? error.message\n : tWithFallback(t, 'activityList.loadError', 'Failed to load activity')}\n </CardContent>\n </GlassCard>\n ) : (activities?.length ?? 0) === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tWithFallback(t, 'activityList.emptyTitle', 'No recent activity')}\n description={tWithFallback(\n t,\n 'activityList.emptyDescription',\n 'Recent workspace actions will appear here as your team creates, updates, and manages work.'\n )}\n />\n ) : (\n <div className=\"space-y-3\">\n {activities?.map((item) => (\n <GlassCard key={item.id} treatment=\"insight\" className=\"border-border-seam\">\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-base\">{item.description || item.action}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-1 text-sm text-text-muted\">\n <p>\n {tWithFallback(t, 'activityList.labelAction', 'Action')}:{' '}\n <span className=\"text-text-primary\">{item.action}</span>\n </p>\n {item.resourceType && (\n <p>\n {tWithFallback(t, 'activityList.labelResource', 'Resource')}:{' '}\n <span className=\"text-text-primary\">{item.resourceType}</span>\n </p>\n )}\n <p>\n {tWithFallback(t, 'activityList.labelWhen', 'When')}:{' '}\n <span className=\"text-text-primary\">{formatDate(item.timestamp)}</span>\n </p>\n <p>\n {tWithFallback(t, 'activityList.labelActor', 'Actor')}:{' '}\n <span className=\"break-all text-text-primary\">{item.userId}</span>\n </p>\n </CardContent>\n </GlassCard>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAgBA,SAAgB,IAAmB;CACjC,IAAM,EAAE,SAAM,GAAS,EAKjB,EAAE,mBAAgB,GAAoC;AAC5D,GAAsB,uBAAuB;EAAE;EAAa,eAAe;EAAM,CAAC;CAClF,IAAM,EAAE,MAAM,GAAY,cAAW,aAAU,EAAqB,EAAY,EAC1E,EAAE,oBAAiB,WAAW,MAAuB,GAAyB;AA8BpF,QA5BI,IAEA,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,GAAD,EAAU,WAAU,cAAe,CAAA,EACnC,kBAAC,GAAD,EAAU,WAAU,QAAS,CAAA,CACzB;MAIL,IAoBH,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aACX,EAAc,GAAG,sBAAsB,WAAW;GAChD,CAAA,EACL,kBAAC,KAAD;GAAG,WAAU;aACV,EAAc,GAAG,4BAA4B,2BAA2B;GACvE,CAAA,CACA,EAAA,CAAA,EAEL,IACC,kBAAC,GAAD;GAAW,WAAU;GAAQ,WAAU;aACrC,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAc,GAAG,wBAAwB,oBAAoB;IAClD,CAAA;GACJ,CAAA,GACV,IACF,kBAAC,GAAD;GAAW,WAAU;GAAQ,WAAU;aACrC,kBAAC,GAAD;IAAa,WAAU;cACpB,aAAiB,QACd,EAAM,UACN,EAAc,GAAG,0BAA0B,0BAA0B;IAC7D,CAAA;GACJ,CAAA,IACT,GAAY,UAAU,OAAO,IAChC,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAc,GAAG,2BAA2B,qBAAqB;GACxE,aAAa,EACX,GACA,iCACA,6FACD;GACD,CAAA,GAEF,kBAAC,OAAD;GAAK,WAAU;aACZ,GAAY,KAAK,MAChB,kBAAC,GAAD;IAAyB,WAAU;IAAU,WAAU;cAAvD,CACE,kBAAC,GAAD;KAAY,WAAU;eACpB,kBAAC,GAAD;MAAW,WAAU;gBAAa,EAAK,eAAe,EAAK;MAAmB,CAAA;KACnE,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eAAvB;MACE,kBAAC,KAAD,EAAA,UAAA;OACG,EAAc,GAAG,4BAA4B,SAAS;OAAC;OAAE;OAC1D,kBAAC,QAAD;QAAM,WAAU;kBAAqB,EAAK;QAAc,CAAA;OACtD,EAAA,CAAA;MACH,EAAK,gBACJ,kBAAC,KAAD,EAAA,UAAA;OACG,EAAc,GAAG,8BAA8B,WAAW;OAAC;OAAE;OAC9D,kBAAC,QAAD;QAAM,WAAU;kBAAqB,EAAK;QAAoB,CAAA;OAC5D,EAAA,CAAA;MAEN,kBAAC,KAAD,EAAA,UAAA;OACG,EAAc,GAAG,0BAA0B,OAAO;OAAC;OAAE;OACtD,kBAAC,QAAD;QAAM,WAAU;kBAAqB,EAAW,EAAK,UAAU;QAAQ,CAAA;OACrE,EAAA,CAAA;MACJ,kBAAC,KAAD,EAAA,UAAA;OACG,EAAc,GAAG,2BAA2B,QAAQ;OAAC;OAAE;OACxD,kBAAC,QAAD;QAAM,WAAU;kBAA+B,EAAK;QAAc,CAAA;OAChE,EAAA,CAAA;MACQ;OACJ;MAxBI,EAAK,GAwBT,CACZ;GACE,CAAA,CAEJ;MAnFJ,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cACX,EAAc,GAAG,6BAA6B,gBAAgB;IAC5D,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cACV,EACC,GACA,wCACA,8CACD;IACC,CAAA,CACA;;EACF,CAAA"}
|