@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.
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 +73 -86
  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
@@ -1,9 +1,9 @@
1
1
  import { WidgetWrapper as e } from "../WidgetWrapper.js";
2
2
  import { ArrowRight as t, Plus as n, Sparkles as r } from "lucide-react";
3
3
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
- import { Button as o } from "@burdenoff/fe-libs/ui";
4
+ import { Button as o, IllustratedEmptyState as s } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/pages/dashboard/widgets/VibesWidget.tsx
6
- function s(e) {
6
+ function c(e) {
7
7
  let t = Date.now() - new Date(e).getTime(), n = Math.floor(t / 6e4);
8
8
  if (n < 1) return "just now";
9
9
  if (n < 60) return `${n}m ago`;
@@ -15,50 +15,49 @@ function s(e) {
15
15
  day: "numeric"
16
16
  });
17
17
  }
18
- function c({ workspaceData: c, isLoading: l, navigate: u }) {
19
- let d = c?.recentVibes ?? [];
18
+ function l({ workspaceData: l, isLoading: u, navigate: d }) {
19
+ let f = l?.recentVibes ?? [];
20
20
  return /* @__PURE__ */ i(e, {
21
21
  title: "Recent Vibes",
22
22
  icon: /* @__PURE__ */ i(r, { className: "size-4" }),
23
23
  size: "medium",
24
- isLoading: l,
25
- unavailable: !c,
24
+ isLoading: u,
25
+ unavailable: !l,
26
26
  headerAction: /* @__PURE__ */ a(o, {
27
27
  variant: "ghost",
28
28
  size: "sm",
29
29
  className: "text-xs",
30
- onClick: () => u("/vibecontrols/vibes"),
30
+ onClick: () => d("/vibecontrols/vibes"),
31
31
  children: ["View all ", /* @__PURE__ */ i(t, { className: "ml-1 size-3" })]
32
32
  }),
33
- children: d.length === 0 ? /* @__PURE__ */ a("div", {
34
- className: "text-center py-4",
35
- children: [/* @__PURE__ */ i("p", {
36
- className: "text-sm text-text-secondary mb-2",
37
- children: "No vibes yet"
38
- }), /* @__PURE__ */ a(o, {
33
+ children: f.length === 0 ? /* @__PURE__ */ i(s, {
34
+ illustration: "empty-vibes",
35
+ title: "No vibes yet",
36
+ className: "py-4",
37
+ action: /* @__PURE__ */ a(o, {
39
38
  variant: "outline",
40
39
  size: "sm",
41
- onClick: () => u("/vibecontrols/vibes/new"),
40
+ onClick: () => d("/vibecontrols/vibes/new"),
42
41
  children: [/* @__PURE__ */ i(n, { className: "mr-1.5 size-3.5" }), " Create your first vibe"]
43
- })]
42
+ })
44
43
  }) : /* @__PURE__ */ i("ul", {
45
44
  className: "space-y-1.5",
46
- children: d.slice(0, 5).map((e) => /* @__PURE__ */ i("li", { children: /* @__PURE__ */ a("button", {
45
+ children: f.slice(0, 5).map((e) => /* @__PURE__ */ i("li", { children: /* @__PURE__ */ a("button", {
47
46
  type: "button",
48
- onClick: () => u(`/vibecontrols/vibes/${e.id}`),
47
+ onClick: () => d(`/vibecontrols/vibes/${e.id}`),
49
48
  className: "flex w-full items-center justify-between gap-2 rounded-md p-2 text-left transition-colors hover:bg-accent/5",
50
49
  children: [/* @__PURE__ */ i("span", {
51
50
  className: "truncate text-sm font-medium text-text-primary",
52
51
  children: e.name
53
52
  }), /* @__PURE__ */ i("span", {
54
53
  className: "shrink-0 text-[11px] text-text-secondary",
55
- children: s(e.updatedAt)
54
+ children: c(e.updatedAt)
56
55
  })]
57
56
  }) }, e.id))
58
57
  })
59
58
  });
60
59
  }
61
60
  //#endregion
62
- export { c as VibesWidget };
61
+ export { l as VibesWidget };
63
62
 
64
63
  //# sourceMappingURL=VibesWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VibesWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/VibesWidget.tsx"],"sourcesContent":["import { Sparkles, ArrowRight, Plus } from 'lucide-react';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nfunction formatRelative(dateString: string): string {\n const diffMs = Date.now() - new Date(dateString).getTime();\n const diffMin = Math.floor(diffMs / 60000);\n if (diffMin < 1) return 'just now';\n if (diffMin < 60) return `${diffMin}m ago`;\n const diffHr = Math.floor(diffMin / 60);\n if (diffHr < 24) return `${diffHr}h ago`;\n const diffDay = Math.floor(diffHr / 24);\n if (diffDay < 7) return `${diffDay}d ago`;\n return new Date(dateString).toLocaleDateString(undefined, {\n month: 'short',\n day: 'numeric',\n });\n}\n\nexport function VibesWidget({ workspaceData, isLoading, navigate }: WidgetProps) {\n const vibes = workspaceData?.recentVibes ?? [];\n\n return (\n <WidgetWrapper\n title=\"Recent Vibes\"\n icon={<Sparkles className=\"size-4\" />}\n size=\"medium\"\n isLoading={isLoading}\n unavailable={!workspaceData}\n headerAction={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => navigate('/vibecontrols/vibes')}\n >\n View all <ArrowRight className=\"ml-1 size-3\" />\n </Button>\n }\n >\n {vibes.length === 0 ? (\n <div className=\"text-center py-4\">\n <p className=\"text-sm text-text-secondary mb-2\">No vibes yet</p>\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/vibecontrols/vibes/new')}>\n <Plus className=\"mr-1.5 size-3.5\" /> Create your first vibe\n </Button>\n </div>\n ) : (\n <ul className=\"space-y-1.5\">\n {vibes.slice(0, 5).map((vibe) => (\n <li key={vibe.id}>\n <button\n type=\"button\"\n onClick={() => navigate(`/vibecontrols/vibes/${vibe.id}`)}\n className=\"flex w-full items-center justify-between gap-2 rounded-md p-2 text-left transition-colors hover:bg-accent/5\"\n >\n <span className=\"truncate text-sm font-medium text-text-primary\">{vibe.name}</span>\n <span className=\"shrink-0 text-[11px] text-text-secondary\">\n {formatRelative(vibe.updatedAt)}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,SAAS,EAAe,GAA4B;CAClD,IAAM,IAAS,KAAK,KAAK,GAAG,IAAI,KAAK,EAAW,CAAC,SAAS,EACpD,IAAU,KAAK,MAAM,IAAS,IAAM;AAC1C,KAAI,IAAU,EAAG,QAAO;AACxB,KAAI,IAAU,GAAI,QAAO,GAAG,EAAQ;CACpC,IAAM,IAAS,KAAK,MAAM,IAAU,GAAG;AACvC,KAAI,IAAS,GAAI,QAAO,GAAG,EAAO;CAClC,IAAM,IAAU,KAAK,MAAM,IAAS,GAAG;AAEvC,QADI,IAAU,IAAU,GAAG,EAAQ,SAC5B,IAAI,KAAK,EAAW,CAAC,mBAAmB,KAAA,GAAW;EACxD,OAAO;EACP,KAAK;EACN,CAAC;;AAGJ,SAAgB,EAAY,EAAE,kBAAe,cAAW,eAAyB;CAC/E,IAAM,IAAQ,GAAe,eAAe,EAAE;AAE9C,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;EACrC,MAAK;EACM;EACX,aAAa,CAAC;EACd,cACE,kBAAC,GAAD;GACE,SAAQ;GACR,MAAK;GACL,WAAU;GACV,eAAe,EAAS,sBAAsB;aAJhD,CAKC,aACU,kBAAC,GAAD,EAAY,WAAU,eAAgB,CAAA,CACxC;;YAGV,EAAM,WAAW,IAChB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD;IAAG,WAAU;cAAmC;IAAgB,CAAA,EAChE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,MAAK;IAAK,eAAe,EAAS,0BAA0B;cAAtF,CACE,kBAAC,GAAD,EAAM,WAAU,mBAAoB,CAAA,EAAA,0BAC7B;MACL;OAEN,kBAAC,MAAD;GAAI,WAAU;aACX,EAAM,MAAM,GAAG,EAAE,CAAC,KAAK,MACtB,kBAAC,MAAD,EAAA,UACE,kBAAC,UAAD;IACE,MAAK;IACL,eAAe,EAAS,uBAAuB,EAAK,KAAK;IACzD,WAAU;cAHZ,CAKE,kBAAC,QAAD;KAAM,WAAU;eAAkD,EAAK;KAAY,CAAA,EACnF,kBAAC,QAAD;KAAM,WAAU;eACb,EAAe,EAAK,UAAU;KAC1B,CAAA,CACA;OACN,EAXI,EAAK,GAWT,CACL;GACC,CAAA;EAEO,CAAA"}
1
+ {"version":3,"file":"VibesWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/VibesWidget.tsx"],"sourcesContent":["import { Sparkles, ArrowRight, Plus } from 'lucide-react';\nimport { Button, IllustratedEmptyState } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nfunction formatRelative(dateString: string): string {\n const diffMs = Date.now() - new Date(dateString).getTime();\n const diffMin = Math.floor(diffMs / 60000);\n if (diffMin < 1) return 'just now';\n if (diffMin < 60) return `${diffMin}m ago`;\n const diffHr = Math.floor(diffMin / 60);\n if (diffHr < 24) return `${diffHr}h ago`;\n const diffDay = Math.floor(diffHr / 24);\n if (diffDay < 7) return `${diffDay}d ago`;\n return new Date(dateString).toLocaleDateString(undefined, {\n month: 'short',\n day: 'numeric',\n });\n}\n\nexport function VibesWidget({ workspaceData, isLoading, navigate }: WidgetProps) {\n const vibes = workspaceData?.recentVibes ?? [];\n\n return (\n <WidgetWrapper\n title=\"Recent Vibes\"\n icon={<Sparkles className=\"size-4\" />}\n size=\"medium\"\n isLoading={isLoading}\n unavailable={!workspaceData}\n headerAction={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => navigate('/vibecontrols/vibes')}\n >\n View all <ArrowRight className=\"ml-1 size-3\" />\n </Button>\n }\n >\n {vibes.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-vibes\"\n title=\"No vibes yet\"\n className=\"py-4\"\n action={\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/vibecontrols/vibes/new')}>\n <Plus className=\"mr-1.5 size-3.5\" /> Create your first vibe\n </Button>\n }\n />\n ) : (\n <ul className=\"space-y-1.5\">\n {vibes.slice(0, 5).map((vibe) => (\n <li key={vibe.id}>\n <button\n type=\"button\"\n onClick={() => navigate(`/vibecontrols/vibes/${vibe.id}`)}\n className=\"flex w-full items-center justify-between gap-2 rounded-md p-2 text-left transition-colors hover:bg-accent/5\"\n >\n <span className=\"truncate text-sm font-medium text-text-primary\">{vibe.name}</span>\n <span className=\"shrink-0 text-[11px] text-text-secondary\">\n {formatRelative(vibe.updatedAt)}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,SAAS,EAAe,GAA4B;CAClD,IAAM,IAAS,KAAK,KAAK,GAAG,IAAI,KAAK,EAAW,CAAC,SAAS,EACpD,IAAU,KAAK,MAAM,IAAS,IAAM;AAC1C,KAAI,IAAU,EAAG,QAAO;AACxB,KAAI,IAAU,GAAI,QAAO,GAAG,EAAQ;CACpC,IAAM,IAAS,KAAK,MAAM,IAAU,GAAG;AACvC,KAAI,IAAS,GAAI,QAAO,GAAG,EAAO;CAClC,IAAM,IAAU,KAAK,MAAM,IAAS,GAAG;AAEvC,QADI,IAAU,IAAU,GAAG,EAAQ,SAC5B,IAAI,KAAK,EAAW,CAAC,mBAAmB,KAAA,GAAW;EACxD,OAAO;EACP,KAAK;EACN,CAAC;;AAGJ,SAAgB,EAAY,EAAE,kBAAe,cAAW,eAAyB;CAC/E,IAAM,IAAQ,GAAe,eAAe,EAAE;AAE9C,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;EACrC,MAAK;EACM;EACX,aAAa,CAAC;EACd,cACE,kBAAC,GAAD;GACE,SAAQ;GACR,MAAK;GACL,WAAU;GACV,eAAe,EAAS,sBAAsB;aAJhD,CAKC,aACU,kBAAC,GAAD,EAAY,WAAU,eAAgB,CAAA,CACxC;;YAGV,EAAM,WAAW,IAChB,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,WAAU;GACV,QACE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,MAAK;IAAK,eAAe,EAAS,0BAA0B;cAAtF,CACE,kBAAC,GAAD,EAAM,WAAU,mBAAoB,CAAA,EAAA,0BAC7B;;GAEX,CAAA,GAEF,kBAAC,MAAD;GAAI,WAAU;aACX,EAAM,MAAM,GAAG,EAAE,CAAC,KAAK,MACtB,kBAAC,MAAD,EAAA,UACE,kBAAC,UAAD;IACE,MAAK;IACL,eAAe,EAAS,uBAAuB,EAAK,KAAK;IACzD,WAAU;cAHZ,CAKE,kBAAC,QAAD;KAAM,WAAU;eAAkD,EAAK;KAAY,CAAA,EACnF,kBAAC,QAAD;KAAM,WAAU;eACb,EAAe,EAAK,UAAU;KAC1B,CAAA,CACA;OACN,EAXI,EAAK,GAWT,CACL;GACC,CAAA;EAEO,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { WidgetWrapper as e } from "../WidgetWrapper.js";
2
2
  import { Activity as t, Building2 as n, FolderKanban as r, LayoutDashboard as i, Users as a } from "lucide-react";
3
3
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
- import { EmphasisPanel as c, GlassCard as l } from "@burdenoff/fe-libs/ui";
4
+ import { GlassCard as c, GradientText as l } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/pages/dashboard/widgets/WelcomeWidget.tsx
6
6
  function u({ icon: e, label: t, value: n }) {
7
- return /* @__PURE__ */ o(l, {
7
+ return /* @__PURE__ */ o(c, {
8
8
  treatment: "metric",
9
9
  className: "p-3",
10
10
  children: /* @__PURE__ */ s("div", {
@@ -22,23 +22,25 @@ function u({ icon: e, label: t, value: n }) {
22
22
  })
23
23
  });
24
24
  }
25
- function d({ workspaceData: l, globalData: d, isLoading: f }) {
26
- let p = d?.currentUser, m = p?.firstName || p?.name?.split(" ")[0] || "there", h = (/* @__PURE__ */ new Date()).getHours(), g = h < 12 ? "Good morning" : h < 18 ? "Good afternoon" : "Good evening", _ = l?.workspaces.total ?? 0, v = l?.projects.total ?? 0, y = l?.groups.totalCount ?? 0, b = l?.recentActivities.length ?? 0;
25
+ function d({ workspaceData: d, globalData: f, isLoading: p }) {
26
+ let m = f?.currentUser, h = m?.firstName || m?.name?.split(" ")[0] || "there", g = (/* @__PURE__ */ new Date()).getHours(), _ = g < 12 ? "Good morning" : g < 18 ? "Good afternoon" : "Good evening", v = d?.workspaces.total ?? 0, y = d?.projects.total ?? 0, b = d?.groups.totalCount ?? 0, x = d?.recentActivities.length ?? 0;
27
27
  return /* @__PURE__ */ o(e, {
28
28
  title: "Dashboard",
29
29
  icon: /* @__PURE__ */ o(i, { className: "size-4" }),
30
30
  size: "large",
31
- isLoading: f,
31
+ isLoading: p,
32
32
  children: /* @__PURE__ */ s("div", {
33
33
  className: "space-y-4",
34
34
  children: [/* @__PURE__ */ s(c, {
35
- className: "p-4",
35
+ treatment: "glass",
36
+ glow: !0,
37
+ className: "relative overflow-hidden p-4",
36
38
  children: [/* @__PURE__ */ s("h2", {
37
39
  className: "text-xl font-bold text-text-primary",
38
40
  children: [
39
- g,
41
+ _,
40
42
  ", ",
41
- m,
43
+ /* @__PURE__ */ o(l, { children: h }),
42
44
  "!"
43
45
  ]
44
46
  }), /* @__PURE__ */ o("p", {
@@ -51,22 +53,22 @@ function d({ workspaceData: l, globalData: d, isLoading: f }) {
51
53
  /* @__PURE__ */ o(u, {
52
54
  icon: /* @__PURE__ */ o(n, { className: "size-4" }),
53
55
  label: "Workspaces",
54
- value: _
56
+ value: v
55
57
  }),
56
58
  /* @__PURE__ */ o(u, {
57
59
  icon: /* @__PURE__ */ o(r, { className: "size-4" }),
58
60
  label: "Projects",
59
- value: v
61
+ value: y
60
62
  }),
61
63
  /* @__PURE__ */ o(u, {
62
64
  icon: /* @__PURE__ */ o(a, { className: "size-4" }),
63
65
  label: "Groups",
64
- value: y
66
+ value: b
65
67
  }),
66
68
  /* @__PURE__ */ o(u, {
67
69
  icon: /* @__PURE__ */ o(t, { className: "size-4" }),
68
70
  label: "Recent Activity",
69
- value: b
71
+ value: x
70
72
  })
71
73
  ]
72
74
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"WelcomeWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/WelcomeWidget.tsx"],"sourcesContent":["import { LayoutDashboard, Building2, FolderKanban, Users, Activity } from 'lucide-react';\nimport { GlassCard, EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nfunction StatCard({\n icon,\n label,\n value,\n}: {\n icon: React.ReactNode;\n label: string;\n value: number | string;\n}) {\n return (\n <GlassCard treatment=\"metric\" className=\"p-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary\">{icon}</div>\n <div>\n <p className=\"text-2xl font-bold text-text-primary tabular-nums\">{value}</p>\n <p className=\"text-xs text-text-muted\">{label}</p>\n </div>\n </div>\n </GlassCard>\n );\n}\n\nexport function WelcomeWidget({ workspaceData, globalData, isLoading }: WidgetProps) {\n const user = globalData?.currentUser;\n const firstName = user?.firstName || user?.name?.split(' ')[0] || 'there';\n const hour = new Date().getHours();\n const greeting = hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening';\n\n const totalWorkspaces = workspaceData?.workspaces.total ?? 0;\n const totalProjects = workspaceData?.projects.total ?? 0;\n const totalGroups = workspaceData?.groups.totalCount ?? 0;\n const activityCount = workspaceData?.recentActivities.length ?? 0;\n\n return (\n <WidgetWrapper\n title=\"Dashboard\"\n icon={<LayoutDashboard className=\"size-4\" />}\n size=\"large\"\n isLoading={isLoading}\n >\n <div className=\"space-y-4\">\n <EmphasisPanel className=\"p-4\">\n <h2 className=\"text-xl font-bold text-text-primary\">\n {greeting}, {firstName}!\n </h2>\n <p className=\"text-sm text-text-secondary mt-1\">\n Here's what's happening across your workspaces today.\n </p>\n </EmphasisPanel>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <StatCard\n icon={<Building2 className=\"size-4\" />}\n label=\"Workspaces\"\n value={totalWorkspaces}\n />\n <StatCard\n icon={<FolderKanban className=\"size-4\" />}\n label=\"Projects\"\n value={totalProjects}\n />\n <StatCard icon={<Users className=\"size-4\" />} label=\"Groups\" value={totalGroups} />\n <StatCard\n icon={<Activity className=\"size-4\" />}\n label=\"Recent Activity\"\n value={activityCount}\n />\n </div>\n </div>\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,SAAS,EAAS,EAChB,SACA,UACA,YAKC;AACD,QACE,kBAAC,GAAD;EAAW,WAAU;EAAS,WAAU;YACtC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAuD;IAAW,CAAA,EACjF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAAqD;IAAU,CAAA,EAC5E,kBAAC,KAAD;IAAG,WAAU;cAA2B;IAAU,CAAA,CAC9C,EAAA,CAAA,CACF;;EACI,CAAA;;AAIhB,SAAgB,EAAc,EAAE,kBAAe,eAAY,gBAA0B;CACnF,IAAM,IAAO,GAAY,aACnB,IAAY,GAAM,aAAa,GAAM,MAAM,MAAM,IAAI,CAAC,MAAM,SAC5D,qBAAO,IAAI,MAAM,EAAC,UAAU,EAC5B,IAAW,IAAO,KAAK,iBAAiB,IAAO,KAAK,mBAAmB,gBAEvE,IAAkB,GAAe,WAAW,SAAS,GACrD,IAAgB,GAAe,SAAS,SAAS,GACjD,IAAc,GAAe,OAAO,cAAc,GAClD,IAAgB,GAAe,iBAAiB,UAAU;AAEhE,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAiB,WAAU,UAAW,CAAA;EAC5C,MAAK;EACM;YAEX,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IAAe,WAAU;cAAzB,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACG;MAAS;MAAG;MAAU;MACpB;QACL,kBAAC,KAAD;KAAG,WAAU;eAAmC;KAE5C,CAAA,CACU;OAChB,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;MACtC,OAAM;MACN,OAAO;MACP,CAAA;KACF,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAc,WAAU,UAAW,CAAA;MACzC,OAAM;MACN,OAAO;MACP,CAAA;KACF,kBAAC,GAAD;MAAU,MAAM,kBAAC,GAAD,EAAO,WAAU,UAAW,CAAA;MAAE,OAAM;MAAS,OAAO;MAAe,CAAA;KACnF,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;MACrC,OAAM;MACN,OAAO;MACP,CAAA;KACE;MACF;;EACQ,CAAA"}
1
+ {"version":3,"file":"WelcomeWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/WelcomeWidget.tsx"],"sourcesContent":["import { LayoutDashboard, Building2, FolderKanban, Users, Activity } from 'lucide-react';\nimport { GlassCard, GradientText } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nfunction StatCard({\n icon,\n label,\n value,\n}: {\n icon: React.ReactNode;\n label: string;\n value: number | string;\n}) {\n return (\n <GlassCard treatment=\"metric\" className=\"p-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary\">{icon}</div>\n <div>\n <p className=\"text-2xl font-bold text-text-primary tabular-nums\">{value}</p>\n <p className=\"text-xs text-text-muted\">{label}</p>\n </div>\n </div>\n </GlassCard>\n );\n}\n\nexport function WelcomeWidget({ workspaceData, globalData, isLoading }: WidgetProps) {\n const user = globalData?.currentUser;\n const firstName = user?.firstName || user?.name?.split(' ')[0] || 'there';\n const hour = new Date().getHours();\n const greeting = hour < 12 ? 'Good morning' : hour < 18 ? 'Good afternoon' : 'Good evening';\n\n const totalWorkspaces = workspaceData?.workspaces.total ?? 0;\n const totalProjects = workspaceData?.projects.total ?? 0;\n const totalGroups = workspaceData?.groups.totalCount ?? 0;\n const activityCount = workspaceData?.recentActivities.length ?? 0;\n\n return (\n <WidgetWrapper\n title=\"Dashboard\"\n icon={<LayoutDashboard className=\"size-4\" />}\n size=\"large\"\n isLoading={isLoading}\n >\n <div className=\"space-y-4\">\n <GlassCard treatment=\"glass\" glow className=\"relative overflow-hidden p-4\">\n <h2 className=\"text-xl font-bold text-text-primary\">\n {greeting}, <GradientText>{firstName}</GradientText>!\n </h2>\n <p className=\"text-sm text-text-secondary mt-1\">\n Here's what's happening across your workspaces today.\n </p>\n </GlassCard>\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n <StatCard\n icon={<Building2 className=\"size-4\" />}\n label=\"Workspaces\"\n value={totalWorkspaces}\n />\n <StatCard\n icon={<FolderKanban className=\"size-4\" />}\n label=\"Projects\"\n value={totalProjects}\n />\n <StatCard icon={<Users className=\"size-4\" />} label=\"Groups\" value={totalGroups} />\n <StatCard\n icon={<Activity className=\"size-4\" />}\n label=\"Recent Activity\"\n value={activityCount}\n />\n </div>\n </div>\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,SAAS,EAAS,EAChB,SACA,UACA,YAKC;AACD,QACE,kBAAC,GAAD;EAAW,WAAU;EAAS,WAAU;YACtC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAuD;IAAW,CAAA,EACjF,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;IAAG,WAAU;cAAqD;IAAU,CAAA,EAC5E,kBAAC,KAAD;IAAG,WAAU;cAA2B;IAAU,CAAA,CAC9C,EAAA,CAAA,CACF;;EACI,CAAA;;AAIhB,SAAgB,EAAc,EAAE,kBAAe,eAAY,gBAA0B;CACnF,IAAM,IAAO,GAAY,aACnB,IAAY,GAAM,aAAa,GAAM,MAAM,MAAM,IAAI,CAAC,MAAM,SAC5D,qBAAO,IAAI,MAAM,EAAC,UAAU,EAC5B,IAAW,IAAO,KAAK,iBAAiB,IAAO,KAAK,mBAAmB,gBAEvE,IAAkB,GAAe,WAAW,SAAS,GACrD,IAAgB,GAAe,SAAS,SAAS,GACjD,IAAc,GAAe,OAAO,cAAc,GAClD,IAAgB,GAAe,iBAAiB,UAAU;AAEhE,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAiB,WAAU,UAAW,CAAA;EAC5C,MAAK;EACM;YAEX,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,GAAD;IAAW,WAAU;IAAQ,MAAA;IAAK,WAAU;cAA5C,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACG;MAAS;MAAE,kBAAC,GAAD,EAAA,UAAe,GAAyB,CAAA;;MACjD;QACL,kBAAC,KAAD;KAAG,WAAU;eAAmC;KAE5C,CAAA,CACM;OACZ,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;MACtC,OAAM;MACN,OAAO;MACP,CAAA;KACF,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAc,WAAU,UAAW,CAAA;MACzC,OAAM;MACN,OAAO;MACP,CAAA;KACF,kBAAC,GAAD;MAAU,MAAM,kBAAC,GAAD,EAAO,WAAU,UAAW,CAAA;MAAE,OAAM;MAAS,OAAO;MAAe,CAAA;KACnF,kBAAC,GAAD;MACE,MAAM,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;MACrC,OAAM;MACN,OAAO;MACP,CAAA;KACE;MACF;;EACQ,CAAA"}
@@ -1,48 +1,47 @@
1
1
  import { WidgetWrapper as e } from "../WidgetWrapper.js";
2
2
  import { ArrowRight as t, Building2 as n, Circle as r } from "lucide-react";
3
3
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
- import { Badge as o, Button as s } from "@burdenoff/fe-libs/ui";
4
+ import { Badge as o, Button as s, IllustratedEmptyState as c } from "@burdenoff/fe-libs/ui";
5
5
  //#region src/pages/dashboard/widgets/WorkspacesWidget.tsx
6
- var c = {
6
+ var l = {
7
7
  ACTIVE: "bg-status-success-bg",
8
8
  SUSPENDED: "bg-status-warning-bg",
9
9
  ARCHIVED: "bg-text-tertiary"
10
10
  };
11
- function l({ workspaceData: l, isLoading: u, navigate: d }) {
12
- let f = l?.workspaces.items ?? [], p = l?.workspaces.total ?? 0;
11
+ function u({ workspaceData: u, isLoading: d, navigate: f }) {
12
+ let p = u?.workspaces.items ?? [], m = u?.workspaces.total ?? 0;
13
13
  return /* @__PURE__ */ i(e, {
14
14
  title: "Workspaces",
15
15
  icon: /* @__PURE__ */ i(n, { className: "size-4" }),
16
16
  size: "medium",
17
- isLoading: u,
18
- unavailable: !l,
17
+ isLoading: d,
18
+ unavailable: !u,
19
19
  headerAction: /* @__PURE__ */ a(s, {
20
20
  variant: "ghost",
21
21
  size: "sm",
22
22
  className: "text-xs",
23
- onClick: () => d("/workspaces/list"),
23
+ onClick: () => f("/workspaces/list"),
24
24
  children: ["View all ", /* @__PURE__ */ i(t, { className: "ml-1 size-3" })]
25
25
  }),
26
- children: f.length === 0 ? /* @__PURE__ */ a("div", {
27
- className: "text-center py-4",
28
- children: [/* @__PURE__ */ i("p", {
29
- className: "text-sm text-text-secondary mb-2",
30
- children: "No workspaces yet"
31
- }), /* @__PURE__ */ i(s, {
26
+ children: p.length === 0 ? /* @__PURE__ */ i(c, {
27
+ illustration: "empty-data",
28
+ title: "No workspaces yet",
29
+ className: "py-4",
30
+ action: /* @__PURE__ */ i(s, {
32
31
  variant: "outline",
33
32
  size: "sm",
34
- onClick: () => d("/workspaces/list"),
33
+ onClick: () => f("/workspaces/list"),
35
34
  children: "Create your first workspace"
36
- })]
35
+ })
37
36
  }) : /* @__PURE__ */ a("div", {
38
37
  className: "space-y-2",
39
- children: [f.slice(0, 5).map((e) => /* @__PURE__ */ a("button", {
38
+ children: [p.slice(0, 5).map((e) => /* @__PURE__ */ a("button", {
40
39
  type: "button",
41
40
  className: "w-full flex items-center justify-between p-2 rounded-md hover:bg-accent/5 cursor-pointer transition-colors text-left",
42
- onClick: () => d(`/workspaces/${e.id}`),
41
+ onClick: () => f(`/workspaces/${e.id}`),
43
42
  children: [/* @__PURE__ */ a("div", {
44
43
  className: "flex items-center gap-2 min-w-0",
45
- children: [/* @__PURE__ */ i(r, { className: `size-2 ${c[e.status] || "bg-text-tertiary"} fill-current` }), /* @__PURE__ */ i("span", {
44
+ children: [/* @__PURE__ */ i(r, { className: `size-2 ${l[e.status] || "bg-text-tertiary"} fill-current ${e.status === "ACTIVE" ? "motion-safe:animate-vc-glow-pulse" : ""}` }), /* @__PURE__ */ i("span", {
46
45
  className: "text-sm font-medium text-text-primary truncate",
47
46
  children: e.name
48
47
  })]
@@ -51,11 +50,11 @@ function l({ workspaceData: l, isLoading: u, navigate: d }) {
51
50
  className: "text-[10px] shrink-0",
52
51
  children: e.type
53
52
  })]
54
- }, e.id)), p > 5 && /* @__PURE__ */ a("p", {
53
+ }, e.id)), m > 5 && /* @__PURE__ */ a("p", {
55
54
  className: "text-xs text-text-secondary text-center pt-1",
56
55
  children: [
57
56
  "+",
58
- p - 5,
57
+ m - 5,
59
58
  " more workspaces"
60
59
  ]
61
60
  })]
@@ -63,6 +62,6 @@ function l({ workspaceData: l, isLoading: u, navigate: d }) {
63
62
  });
64
63
  }
65
64
  //#endregion
66
- export { l as WorkspacesWidget };
65
+ export { u as WorkspacesWidget };
67
66
 
68
67
  //# sourceMappingURL=WorkspacesWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspacesWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/WorkspacesWidget.tsx"],"sourcesContent":["import { Building2, ArrowRight, Circle } from 'lucide-react';\nimport { Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nconst statusColors: Record<string, string> = {\n ACTIVE: 'bg-status-success-bg',\n SUSPENDED: 'bg-status-warning-bg',\n ARCHIVED: 'bg-text-tertiary',\n};\n\nexport function WorkspacesWidget({ workspaceData, isLoading, navigate }: WidgetProps) {\n const workspaces = workspaceData?.workspaces.items ?? [];\n const total = workspaceData?.workspaces.total ?? 0;\n\n return (\n <WidgetWrapper\n title=\"Workspaces\"\n icon={<Building2 className=\"size-4\" />}\n size=\"medium\"\n isLoading={isLoading}\n unavailable={!workspaceData}\n headerAction={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => navigate('/workspaces/list')}\n >\n View all <ArrowRight className=\"ml-1 size-3\" />\n </Button>\n }\n >\n {workspaces.length === 0 ? (\n <div className=\"text-center py-4\">\n <p className=\"text-sm text-text-secondary mb-2\">No workspaces yet</p>\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/workspaces/list')}>\n Create your first workspace\n </Button>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {workspaces.slice(0, 5).map((ws) => (\n <button\n key={ws.id}\n type=\"button\"\n className=\"w-full flex items-center justify-between p-2 rounded-md hover:bg-accent/5 cursor-pointer transition-colors text-left\"\n onClick={() => navigate(`/workspaces/${ws.id}`)}\n >\n <div className=\"flex items-center gap-2 min-w-0\">\n <Circle\n className={`size-2 ${statusColors[ws.status] || 'bg-text-tertiary'} fill-current`}\n />\n <span className=\"text-sm font-medium text-text-primary truncate\">{ws.name}</span>\n </div>\n <Badge variant=\"outline\" className=\"text-[10px] shrink-0\">\n {ws.type}\n </Badge>\n </button>\n ))}\n {total > 5 && (\n <p className=\"text-xs text-text-secondary text-center pt-1\">\n +{total - 5} more workspaces\n </p>\n )}\n </div>\n )}\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,IAAM,IAAuC;CAC3C,QAAQ;CACR,WAAW;CACX,UAAU;CACX;AAED,SAAgB,EAAiB,EAAE,kBAAe,cAAW,eAAyB;CACpF,IAAM,IAAa,GAAe,WAAW,SAAS,EAAE,EAClD,IAAQ,GAAe,WAAW,SAAS;AAEjD,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;EACtC,MAAK;EACM;EACX,aAAa,CAAC;EACd,cACE,kBAAC,GAAD;GACE,SAAQ;GACR,MAAK;GACL,WAAU;GACV,eAAe,EAAS,mBAAmB;aAJ7C,CAKC,aACU,kBAAC,GAAD,EAAY,WAAU,eAAgB,CAAA,CACxC;;YAGV,EAAW,WAAW,IACrB,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD;IAAG,WAAU;cAAmC;IAAqB,CAAA,EACrE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,MAAK;IAAK,eAAe,EAAS,mBAAmB;cAAE;IAExE,CAAA,CACL;OAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,EAAW,MAAM,GAAG,EAAE,CAAC,KAAK,MAC3B,kBAAC,UAAD;IAEE,MAAK;IACL,WAAU;IACV,eAAe,EAAS,eAAe,EAAG,KAAK;cAJjD,CAME,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EACE,WAAW,UAAU,EAAa,EAAG,WAAW,mBAAmB,gBACnE,CAAA,EACF,kBAAC,QAAD;MAAM,WAAU;gBAAkD,EAAG;MAAY,CAAA,CAC7E;QACN,kBAAC,GAAD;KAAO,SAAQ;KAAU,WAAU;eAChC,EAAG;KACE,CAAA,CACD;MAdF,EAAG,GAcD,CACT,EACD,IAAQ,KACP,kBAAC,KAAD;IAAG,WAAU;cAAb;KAA4D;KACxD,IAAQ;KAAE;KACV;MAEF;;EAEM,CAAA"}
1
+ {"version":3,"file":"WorkspacesWidget.js","names":[],"sources":["../../../../src/pages/dashboard/widgets/WorkspacesWidget.tsx"],"sourcesContent":["import { Building2, ArrowRight, Circle } from 'lucide-react';\nimport { Badge, Button, IllustratedEmptyState } from '@burdenoff/fe-libs/ui';\nimport { WidgetWrapper } from '../WidgetWrapper';\nimport type { WidgetProps } from '../types';\n\nconst statusColors: Record<string, string> = {\n ACTIVE: 'bg-status-success-bg',\n SUSPENDED: 'bg-status-warning-bg',\n ARCHIVED: 'bg-text-tertiary',\n};\n\nexport function WorkspacesWidget({ workspaceData, isLoading, navigate }: WidgetProps) {\n const workspaces = workspaceData?.workspaces.items ?? [];\n const total = workspaceData?.workspaces.total ?? 0;\n\n return (\n <WidgetWrapper\n title=\"Workspaces\"\n icon={<Building2 className=\"size-4\" />}\n size=\"medium\"\n isLoading={isLoading}\n unavailable={!workspaceData}\n headerAction={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-xs\"\n onClick={() => navigate('/workspaces/list')}\n >\n View all <ArrowRight className=\"ml-1 size-3\" />\n </Button>\n }\n >\n {workspaces.length === 0 ? (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title=\"No workspaces yet\"\n className=\"py-4\"\n action={\n <Button variant=\"outline\" size=\"sm\" onClick={() => navigate('/workspaces/list')}>\n Create your first workspace\n </Button>\n }\n />\n ) : (\n <div className=\"space-y-2\">\n {workspaces.slice(0, 5).map((ws) => (\n <button\n key={ws.id}\n type=\"button\"\n className=\"w-full flex items-center justify-between p-2 rounded-md hover:bg-accent/5 cursor-pointer transition-colors text-left\"\n onClick={() => navigate(`/workspaces/${ws.id}`)}\n >\n <div className=\"flex items-center gap-2 min-w-0\">\n <Circle\n className={`size-2 ${statusColors[ws.status] || 'bg-text-tertiary'} fill-current ${\n ws.status === 'ACTIVE' ? 'motion-safe:animate-vc-glow-pulse' : ''\n }`}\n />\n <span className=\"text-sm font-medium text-text-primary truncate\">{ws.name}</span>\n </div>\n <Badge variant=\"outline\" className=\"text-[10px] shrink-0\">\n {ws.type}\n </Badge>\n </button>\n ))}\n {total > 5 && (\n <p className=\"text-xs text-text-secondary text-center pt-1\">\n +{total - 5} more workspaces\n </p>\n )}\n </div>\n )}\n </WidgetWrapper>\n );\n}\n"],"mappings":";;;;;AAKA,IAAM,IAAuC;CAC3C,QAAQ;CACR,WAAW;CACX,UAAU;CACX;AAED,SAAgB,EAAiB,EAAE,kBAAe,cAAW,eAAyB;CACpF,IAAM,IAAa,GAAe,WAAW,SAAS,EAAE,EAClD,IAAQ,GAAe,WAAW,SAAS;AAEjD,QACE,kBAAC,GAAD;EACE,OAAM;EACN,MAAM,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;EACtC,MAAK;EACM;EACX,aAAa,CAAC;EACd,cACE,kBAAC,GAAD;GACE,SAAQ;GACR,MAAK;GACL,WAAU;GACV,eAAe,EAAS,mBAAmB;aAJ7C,CAKC,aACU,kBAAC,GAAD,EAAY,WAAU,eAAgB,CAAA,CACxC;;YAGV,EAAW,WAAW,IACrB,kBAAC,GAAD;GACE,cAAa;GACb,OAAM;GACN,WAAU;GACV,QACE,kBAAC,GAAD;IAAQ,SAAQ;IAAU,MAAK;IAAK,eAAe,EAAS,mBAAmB;cAAE;IAExE,CAAA;GAEX,CAAA,GAEF,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,EAAW,MAAM,GAAG,EAAE,CAAC,KAAK,MAC3B,kBAAC,UAAD;IAEE,MAAK;IACL,WAAU;IACV,eAAe,EAAS,eAAe,EAAG,KAAK;cAJjD,CAME,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EACE,WAAW,UAAU,EAAa,EAAG,WAAW,mBAAmB,gBACjE,EAAG,WAAW,WAAW,sCAAsC,MAEjE,CAAA,EACF,kBAAC,QAAD;MAAM,WAAU;gBAAkD,EAAG;MAAY,CAAA,CAC7E;QACN,kBAAC,GAAD;KAAO,SAAQ;KAAU,WAAU;eAChC,EAAG;KACE,CAAA,CACD;MAhBF,EAAG,GAgBD,CACT,EACD,IAAQ,KACP,kBAAC,KAAD;IAAG,WAAU;cAAb;KAA4D;KACxD,IAAQ;KAAE;KACV;MAEF;;EAEM,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-workspaces",
3
- "version": "2026.625.3",
3
+ "version": "2026.625.4",
4
4
  "description": "Workspaces microfrontend for Burdenoff products",
5
5
  "type": "module",
6
6
  "files": [
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@apollo/client": "^4.0.11",
47
- "@burdenoff/fe-libs": "2026.625.2",
47
+ "@burdenoff/fe-libs": "2026.625.3",
48
48
  "@radix-ui/react-icons": "^1.3.2",
49
49
  "@tanstack/react-query": "^5.62.13",
50
50
  "axios": "^1.15.2",