@burdenoff/microfe-botmanor 2026.1027.2 → 2026.1028.1

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 (91) hide show
  1. package/dist/botlit/BotlitRoutes.js +142 -132
  2. package/dist/botlit/BotlitRoutes.js.map +1 -1
  3. package/dist/botlit/components/AgentApprovalPanel.js +144 -126
  4. package/dist/botlit/components/AgentApprovalPanel.js.map +1 -1
  5. package/dist/botlit/components/ModelRegistrationPanel.js +4 -4
  6. package/dist/botlit/components/RetentionStatusPanel.js +95 -0
  7. package/dist/botlit/components/RetentionStatusPanel.js.map +1 -0
  8. package/dist/botlit/components/VersionHistoryPanel.js +92 -83
  9. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  10. package/dist/botlit/hooks/index.js +1 -0
  11. package/dist/botlit/hooks/useRetention.js +31 -0
  12. package/dist/botlit/hooks/useRetention.js.map +1 -0
  13. package/dist/botlit/pages/A2AAgentDetailPage.js +212 -203
  14. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  15. package/dist/botlit/pages/A2ARegistryPage.js +129 -117
  16. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  17. package/dist/botlit/pages/AgentApprovalsPage.js +122 -110
  18. package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
  19. package/dist/botlit/pages/AgentBuilderPage.js +18 -18
  20. package/dist/botlit/pages/AgentDetailPage.js +298 -273
  21. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  22. package/dist/botlit/pages/AgentsListPage.js +145 -121
  23. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  24. package/dist/botlit/pages/BotChannelsTab.js +238 -226
  25. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  26. package/dist/botlit/pages/BotDetailPage.js +307 -288
  27. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  28. package/dist/botlit/pages/BotWorkflowTab.js +125 -116
  29. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  30. package/dist/botlit/pages/BotsListPage.js +159 -144
  31. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  32. package/dist/botlit/pages/BucketsPage.js +279 -258
  33. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  34. package/dist/botlit/pages/ChannelDetailPage.js +346 -328
  35. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  36. package/dist/botlit/pages/ChannelRoutesPage.js +10 -10
  37. package/dist/botlit/pages/ChannelsPage.js +163 -148
  38. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  39. package/dist/botlit/pages/DashboardPage.js +129 -114
  40. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  41. package/dist/botlit/pages/ExecutionDetailPage.js +145 -139
  42. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
  43. package/dist/botlit/pages/ExecutionsPage.js +14 -14
  44. package/dist/botlit/pages/InstalledPackagesPage.js +245 -227
  45. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  46. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +168 -156
  47. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  48. package/dist/botlit/pages/KnowledgeBasesPage.js +91 -79
  49. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  50. package/dist/botlit/pages/MCPServerDetailPage.js +200 -188
  51. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  52. package/dist/botlit/pages/MCPServersPage.js +170 -155
  53. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  54. package/dist/botlit/pages/PoliciesPage.js +115 -104
  55. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  56. package/dist/botlit/pages/PolicyDetailPage.js +368 -324
  57. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
  58. package/dist/botlit/pages/PromptStudioPage.js +106 -97
  59. package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
  60. package/dist/botlit/pages/PromptTemplateDetailPage.js +359 -347
  61. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
  62. package/dist/botlit/pages/PromptTemplatesPage.js +127 -112
  63. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
  64. package/dist/botlit/pages/RetrievalProfileDetailPage.js +219 -210
  65. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
  66. package/dist/botlit/pages/RetrievalProfilesPage.js +112 -103
  67. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  68. package/dist/botlit/pages/SettingsPage.js +264 -252
  69. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  70. package/dist/botlit/pages/SkillDetailPage.js +235 -226
  71. package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
  72. package/dist/botlit/pages/SkillsPage.js +115 -106
  73. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  74. package/dist/botlit/pages/StorePackageDetailPage.js +194 -188
  75. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
  76. package/dist/botlit/pages/StorePage.js +161 -155
  77. package/dist/botlit/pages/StorePage.js.map +1 -1
  78. package/dist/botlit/permissions/PermissionRequired.js +45 -0
  79. package/dist/botlit/permissions/PermissionRequired.js.map +1 -0
  80. package/dist/botlit/permissions/botmanorPermissions.js +72 -0
  81. package/dist/botlit/permissions/botmanorPermissions.js.map +1 -0
  82. package/dist/botlit/permissions/index.js +3 -0
  83. package/dist/botlit/permissions/useBotmanorPermissions.js +19 -0
  84. package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -0
  85. package/dist/botlit/utils/policyConfig.js +67 -42
  86. package/dist/botlit/utils/policyConfig.js.map +1 -1
  87. package/dist/generated/global-types.js.map +1 -1
  88. package/dist/generated/wspace-operations.js +90 -54
  89. package/dist/generated/wspace-operations.js.map +1 -1
  90. package/dist/generated/wspace-types.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,457 +1,478 @@
1
1
  import { useBotlit as e } from "../providers/BotlitProvider.js";
2
2
  import { formatRelativeTime as t } from "../utils/formatters.js";
3
- import { PageLayout as n } from "../components/PageLayout.js";
4
- import { Card as r, CardContent as i, CardDescription as a, CardHeader as o, CardTitle as s } from "../components/Card.js";
5
- import { Button as c } from "../components/Button.js";
6
- import { isNative as l, nativeImpact as u, nativeNotify as d } from "../../utils/nativeBridge.js";
7
- import { EmptyState as f } from "../components/EmptyState.js";
8
- import { FormField as p, Input as m, Textarea as h } from "../components/Input.js";
9
- import { ErrorState as g } from "../components/ErrorState.js";
3
+ import { BOTMANOR_PERMISSIONS as n } from "../permissions/botmanorPermissions.js";
4
+ import { BotmanorPermissionGate as r, useBotmanorCan as i } from "../permissions/useBotmanorPermissions.js";
5
+ import { PageLayout as a } from "../components/PageLayout.js";
6
+ import { Button as o } from "../components/Button.js";
7
+ import "../permissions/index.js";
8
+ import { Card as s, CardContent as c, CardDescription as l, CardHeader as u, CardTitle as d } from "../components/Card.js";
9
+ import { isNative as f, nativeImpact as p, nativeNotify as m } from "../../utils/nativeBridge.js";
10
+ import { EmptyState as h } from "../components/EmptyState.js";
11
+ import { FormField as g, Input as _, Textarea as v } from "../components/Input.js";
12
+ import { ErrorState as y } from "../components/ErrorState.js";
10
13
  import { useBucketTree as ee, useBuckets as te, useCreateBucket as ne, useDeleteBucket as re, useUpdateBucket as ie } from "../hooks/useBuckets.js";
11
14
  import "../hooks/index.js";
12
- import { useState as _ } from "react";
13
- import { GlassCard as v, PagePurpose as ae } from "@burdenoff/fe-libs/ui";
14
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
15
- import { Link as S } from "react-router";
16
- import { ChevronDown as C, ChevronRight as w, Edit as T, Folder as E, FolderOpen as D, FolderTree as O, MoreHorizontal as k, Plus as A, Save as j, Search as oe, Settings as se, Trash2 as M, X as N } from "lucide-react";
17
- import { toast as P } from "sonner";
15
+ import { useState as b } from "react";
16
+ import { GlassCard as x, PagePurpose as ae } from "@burdenoff/fe-libs/ui";
17
+ import { Fragment as oe, jsx as S, jsxs as C } from "react/jsx-runtime";
18
+ import { Link as w } from "react-router";
19
+ import { ChevronDown as T, ChevronRight as E, Edit as D, Folder as O, FolderOpen as k, FolderTree as A, MoreHorizontal as j, Plus as M, Save as N, Search as se, Settings as ce, Trash2 as P, X as F } from "lucide-react";
20
+ import { toast as I } from "sonner";
18
21
  //#region src/botlit/pages/BucketsPage.tsx
19
- var F = ({ bucket: e, level: t, expanded: n, onToggle: r, getPath: i, onEdit: a, onDelete: o, onCreateChild: s, activeMenu: l, setActiveMenu: u }) => {
20
- let d = n.has(e.id), f = e.children.length > 0, p = l === e.id;
21
- return /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b(S, {
22
- to: i(`buckets/${e.id}`),
23
- children: /* @__PURE__ */ x("div", {
22
+ var L = ({ bucket: e, level: t, expanded: a, onToggle: s, getPath: c, onEdit: l, onDelete: u, onCreateChild: d, activeMenu: f, setActiveMenu: p }) => {
23
+ let m = a.has(e.id), h = e.children.length > 0, g = f === e.id, _ = i(), v = _(n.BUCKET_CREATE) || _(n.BUCKET_UPDATE) || _(n.BUCKET_DELETE);
24
+ return /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S(w, {
25
+ to: c(`buckets/${e.id}`),
26
+ children: /* @__PURE__ */ C("div", {
24
27
  className: "flex items-center gap-2 px-3 py-2 hover:bg-accent rounded-md transition-colors cursor-pointer group",
25
28
  style: { paddingLeft: `${t * 24 + 12}px` },
26
29
  children: [
27
- f ? /* @__PURE__ */ b("button", {
30
+ h ? /* @__PURE__ */ S("button", {
28
31
  onClick: (t) => {
29
- t.preventDefault(), r(e.id);
32
+ t.preventDefault(), s(e.id);
30
33
  },
31
34
  className: "p-0.5 hover:bg-bg-sunken rounded",
32
- children: b(d ? C : w, {
35
+ children: S(m ? T : E, {
33
36
  size: 16,
34
37
  className: "text-text-secondary"
35
38
  })
36
- }) : /* @__PURE__ */ b("div", { className: "w-5" }),
37
- d ? /* @__PURE__ */ b(D, {
39
+ }) : /* @__PURE__ */ S("div", { className: "w-5" }),
40
+ m ? /* @__PURE__ */ S(k, {
38
41
  size: 18,
39
42
  className: "text-primary"
40
- }) : /* @__PURE__ */ b(E, {
43
+ }) : /* @__PURE__ */ S(O, {
41
44
  size: 18,
42
45
  className: "text-text-secondary"
43
46
  }),
44
- /* @__PURE__ */ b("span", {
47
+ /* @__PURE__ */ S("span", {
45
48
  className: "flex-1 font-medium",
46
49
  children: e.name
47
50
  }),
48
- /* @__PURE__ */ x("div", {
51
+ v && /* @__PURE__ */ C("div", {
49
52
  className: "relative",
50
- children: [/* @__PURE__ */ b(c, {
53
+ children: [/* @__PURE__ */ S(o, {
51
54
  variant: "ghost",
52
55
  size: "icon",
53
56
  className: "h-7 w-7 opacity-0 group-hover:opacity-100 transition-opacity",
54
57
  onClick: (t) => {
55
- t.preventDefault(), t.stopPropagation(), u(p ? null : e.id);
58
+ t.preventDefault(), t.stopPropagation(), p(g ? null : e.id);
56
59
  },
57
- children: /* @__PURE__ */ b(k, { size: 14 })
58
- }), p && /* @__PURE__ */ x("div", {
60
+ children: /* @__PURE__ */ S(j, { size: 14 })
61
+ }), g && /* @__PURE__ */ C("div", {
59
62
  className: "absolute right-0 top-8 bg-popover border rounded-md shadow-lg z-50 py-1 min-w-[160px]",
60
63
  children: [
61
- /* @__PURE__ */ x("button", {
62
- className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left",
63
- onClick: (t) => {
64
- t.preventDefault(), t.stopPropagation(), s(e.id);
65
- },
66
- children: [/* @__PURE__ */ b(A, { size: 14 }), "Add Sub-Bucket"]
64
+ /* @__PURE__ */ S(r, {
65
+ permission: n.BUCKET_CREATE,
66
+ children: /* @__PURE__ */ C("button", {
67
+ className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left",
68
+ onClick: (t) => {
69
+ t.preventDefault(), t.stopPropagation(), d(e.id);
70
+ },
71
+ children: [/* @__PURE__ */ S(M, { size: 14 }), "Add Sub-Bucket"]
72
+ })
67
73
  }),
68
- /* @__PURE__ */ x("button", {
69
- className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left",
70
- onClick: (t) => {
71
- t.preventDefault(), t.stopPropagation(), a(e);
72
- },
73
- children: [/* @__PURE__ */ b(T, { size: 14 }), "Edit"]
74
+ /* @__PURE__ */ S(r, {
75
+ permission: n.BUCKET_UPDATE,
76
+ children: /* @__PURE__ */ C("button", {
77
+ className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-left",
78
+ onClick: (t) => {
79
+ t.preventDefault(), t.stopPropagation(), l(e);
80
+ },
81
+ children: [/* @__PURE__ */ S(D, { size: 14 }), "Edit"]
82
+ })
74
83
  }),
75
- /* @__PURE__ */ x("button", {
76
- className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-status-error-text text-left",
77
- onClick: (t) => {
78
- t.preventDefault(), t.stopPropagation(), o(e.id);
79
- },
80
- children: [/* @__PURE__ */ b(M, { size: 14 }), "Delete"]
84
+ /* @__PURE__ */ S(r, {
85
+ permission: n.BUCKET_DELETE,
86
+ children: /* @__PURE__ */ C("button", {
87
+ className: "w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent text-status-error-text text-left",
88
+ onClick: (t) => {
89
+ t.preventDefault(), t.stopPropagation(), u(e.id);
90
+ },
91
+ children: [/* @__PURE__ */ S(P, { size: 14 }), "Delete"]
92
+ })
81
93
  })
82
94
  ]
83
95
  })]
84
96
  })
85
97
  ]
86
98
  })
87
- }), d && e.children.map((e) => /* @__PURE__ */ b(F, {
99
+ }), m && e.children.map((e) => /* @__PURE__ */ S(L, {
88
100
  bucket: e,
89
101
  level: t + 1,
90
- expanded: n,
91
- onToggle: r,
92
- getPath: i,
93
- onEdit: a,
94
- onDelete: o,
95
- onCreateChild: s,
96
- activeMenu: l,
97
- setActiveMenu: u
102
+ expanded: a,
103
+ onToggle: s,
104
+ getPath: c,
105
+ onEdit: l,
106
+ onDelete: u,
107
+ onCreateChild: d,
108
+ activeMenu: f,
109
+ setActiveMenu: p
98
110
  }, e.id))] });
99
- }, I = () => {
100
- let { getPath: C } = e(), [w, T] = _(""), [D, k] = _("tree"), [I, L] = _(new Set(["bucket-1"])), [ce, R] = _(!1), [z, B] = _(null), [V, H] = _(null), [le, U] = _(null), [W, G] = _({
111
+ }, R = () => {
112
+ let { getPath: i } = e(), [T, E] = b(""), [D, k] = b("tree"), [j, R] = b(new Set(["bucket-1"])), [le, z] = b(!1), [B, V] = b(null), [H, U] = b(null), [ue, W] = b(null), [G, K] = b({
101
113
  name: "",
102
114
  description: "",
103
115
  visibility: "PRIVATE",
104
116
  parentBucketId: void 0
105
- }), { data: K, loading: ue, error: de, refetch: q } = te({ search: w }), { data: J, loading: fe, error: pe, refetch: Y } = ee(), [me, he] = ne(), [ge, _e] = ie(), [ve, ye] = re(), be = (e) => {
106
- L((t) => {
117
+ }), { data: q, loading: de, error: fe, refetch: J } = te({ search: T }), { data: Y, loading: pe, error: me, refetch: X } = ee(), [he, ge] = ne(), [_e, ve] = ie(), [ye, be] = re(), xe = (e) => {
118
+ R((t) => {
107
119
  let n = new Set(t);
108
120
  return n.has(e) ? n.delete(e) : n.add(e), n;
109
121
  });
110
- }, xe = () => {
111
- if (J) {
122
+ }, Se = () => {
123
+ if (Y) {
112
124
  let e = /* @__PURE__ */ new Set(), t = (n) => {
113
125
  for (let r of n) e.add(r.id), r.children && t(r.children);
114
126
  };
115
- t(J), L(e);
127
+ t(Y), R(e);
116
128
  }
117
- }, Se = () => {
118
- L(/* @__PURE__ */ new Set());
119
- }, X = D === "tree" ? fe : ue, Z = D === "tree" ? pe : de, Q = D === "tree" ? Y : q, Ce = async () => {
120
- if (W.name) {
129
+ }, Ce = () => {
130
+ R(/* @__PURE__ */ new Set());
131
+ }, we = D === "tree" ? pe : de, Z = D === "tree" ? me : fe, Q = D === "tree" ? X : J, Te = async () => {
132
+ if (G.name) {
121
133
  try {
122
- await me({
123
- name: W.name,
124
- slug: W.name.toLowerCase().replace(/\s+/g, "-"),
125
- description: W.description,
126
- parentBucketId: W.parentBucketId,
127
- metadata: { visibility: W.visibility }
134
+ await he({
135
+ name: G.name,
136
+ slug: G.name.toLowerCase().replace(/\s+/g, "-"),
137
+ description: G.description,
138
+ parentBucketId: G.parentBucketId,
139
+ metadata: { visibility: G.visibility }
128
140
  });
129
141
  } catch (e) {
130
- P.error(e instanceof Error ? e.message : "Failed to create bucket");
142
+ I.error(e instanceof Error ? e.message : "Failed to create bucket");
131
143
  return;
132
144
  }
133
- P.success(`Bucket "${W.name}" created`), q(), Y(), R(!1), G({
145
+ I.success(`Bucket "${G.name}" created`), J(), X(), z(!1), K({
134
146
  name: "",
135
147
  description: "",
136
148
  visibility: "PRIVATE",
137
149
  parentBucketId: void 0
138
150
  });
139
151
  }
140
- }, we = async () => {
141
- if (!(!V || !W.name)) {
152
+ }, Ee = async () => {
153
+ if (!(!H || !G.name)) {
142
154
  try {
143
- await ge({
144
- bucketId: V.id,
155
+ await _e({
156
+ bucketId: H.id,
145
157
  input: {
146
- name: W.name,
147
- description: W.description
158
+ name: G.name,
159
+ description: G.description
148
160
  }
149
161
  });
150
162
  } catch (e) {
151
- P.error(e instanceof Error ? e.message : "Failed to update bucket");
163
+ I.error(e instanceof Error ? e.message : "Failed to update bucket");
152
164
  return;
153
165
  }
154
- P.success("Bucket updated"), q(), Y(), H(null);
166
+ I.success("Bucket updated"), J(), X(), U(null);
155
167
  }
156
- }, Te = async (e) => {
168
+ }, De = async (e) => {
157
169
  try {
158
- await ve(e), l() && d("success"), P.success("Bucket deleted"), q(), Y();
170
+ await ye(e), f() && m("success"), I.success("Bucket deleted"), J(), X();
159
171
  } catch (e) {
160
- l() && d("error"), P.error(e instanceof Error ? e.message : "Failed to delete bucket");
172
+ f() && m("error"), I.error(e instanceof Error ? e.message : "Failed to delete bucket");
161
173
  return;
162
174
  }
163
- B(null);
164
- }, Ee = (e) => {
165
- G({
175
+ V(null);
176
+ }, Oe = (e) => {
177
+ K({
166
178
  name: e.name,
167
179
  description: e.description ?? "",
168
180
  visibility: "PRIVATE",
169
181
  parentBucketId: void 0
170
- }), H(e), U(null);
182
+ }), U(e), W(null);
171
183
  }, $ = (e) => {
172
- G({
184
+ K({
173
185
  name: "",
174
186
  description: "",
175
187
  visibility: "PRIVATE",
176
188
  parentBucketId: e
177
- }), R(!0);
189
+ }), z(!0);
178
190
  };
179
- return /* @__PURE__ */ b(n, {
191
+ return /* @__PURE__ */ S(a, {
180
192
  title: "Buckets",
181
193
  description: "Organize your agents, apps, and resources into hierarchical folders",
182
- actions: /* @__PURE__ */ b(c, {
183
- leftIcon: /* @__PURE__ */ b(A, { size: 16 }),
184
- onClick: () => $(),
185
- children: "Create Bucket"
194
+ actions: /* @__PURE__ */ S(r, {
195
+ permission: n.BUCKET_CREATE,
196
+ children: /* @__PURE__ */ S(o, {
197
+ leftIcon: /* @__PURE__ */ S(M, { size: 16 }),
198
+ onClick: () => $(),
199
+ children: "Create Bucket"
200
+ })
186
201
  }),
187
- children: /* @__PURE__ */ x("div", {
202
+ children: /* @__PURE__ */ C("div", {
188
203
  className: "space-y-6",
189
204
  children: [
190
- /* @__PURE__ */ b(ae, {
191
- icon: /* @__PURE__ */ b(O, { size: 18 }),
205
+ /* @__PURE__ */ S(ae, {
206
+ icon: /* @__PURE__ */ S(A, { size: 18 }),
192
207
  children: "Buckets are folders for everything you build in BotManor — agents, bots, skills, knowledge and more — arranged in a hierarchy that mirrors how your team works. Group resources by team, project or environment so they stay organised, easy to find and simple to share as your account grows. Browse the tree or list view to manage that structure."
193
208
  }),
194
- K.length > 0 ? /* @__PURE__ */ x("div", {
209
+ q.length > 0 ? /* @__PURE__ */ C("div", {
195
210
  className: "grid grid-cols-2 gap-4 sm:grid-cols-2",
196
- children: [/* @__PURE__ */ x(v, {
211
+ children: [/* @__PURE__ */ C(x, {
197
212
  treatment: "glass",
198
213
  glow: !0,
199
214
  className: "p-4",
200
- children: [/* @__PURE__ */ b("p", {
215
+ children: [/* @__PURE__ */ S("p", {
201
216
  className: "text-sm text-text-secondary",
202
217
  children: "Total buckets"
203
- }), /* @__PURE__ */ b("p", {
218
+ }), /* @__PURE__ */ S("p", {
204
219
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
205
- children: K.length
220
+ children: q.length
206
221
  })]
207
- }), /* @__PURE__ */ x(v, {
222
+ }), /* @__PURE__ */ C(x, {
208
223
  treatment: "metric",
209
224
  className: "p-4",
210
- children: [/* @__PURE__ */ b("p", {
225
+ children: [/* @__PURE__ */ S("p", {
211
226
  className: "text-sm text-text-secondary",
212
227
  children: "Top-level buckets"
213
- }), /* @__PURE__ */ b("p", {
228
+ }), /* @__PURE__ */ S("p", {
214
229
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
215
- children: J.length
230
+ children: Y.length
216
231
  })]
217
232
  })]
218
233
  }) : null,
219
- /* @__PURE__ */ x("div", {
234
+ /* @__PURE__ */ C("div", {
220
235
  className: "flex items-center justify-between gap-4",
221
- children: [/* @__PURE__ */ x("div", {
236
+ children: [/* @__PURE__ */ C("div", {
222
237
  className: "relative flex-1 max-w-md",
223
- children: [/* @__PURE__ */ b(oe, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ b(m, {
238
+ children: [/* @__PURE__ */ S(se, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ S(_, {
224
239
  placeholder: "Search buckets...",
225
- value: w,
226
- onChange: (e) => T(e.target.value),
240
+ value: T,
241
+ onChange: (e) => E(e.target.value),
227
242
  className: "pl-9"
228
243
  })]
229
- }), /* @__PURE__ */ x("div", {
244
+ }), /* @__PURE__ */ C("div", {
230
245
  className: "flex items-center gap-2",
231
246
  children: [
232
- /* @__PURE__ */ b(c, {
247
+ /* @__PURE__ */ S(o, {
233
248
  variant: "outline",
234
249
  size: "sm",
235
- onClick: xe,
250
+ onClick: Se,
236
251
  children: "Expand All"
237
252
  }),
238
- /* @__PURE__ */ b(c, {
253
+ /* @__PURE__ */ S(o, {
239
254
  variant: "outline",
240
255
  size: "sm",
241
- onClick: Se,
256
+ onClick: Ce,
242
257
  children: "Collapse All"
243
258
  }),
244
- /* @__PURE__ */ x("div", {
259
+ /* @__PURE__ */ C("div", {
245
260
  className: "flex border border-border-subtle rounded-md overflow-hidden",
246
- children: [/* @__PURE__ */ b(c, {
261
+ children: [/* @__PURE__ */ S(o, {
247
262
  variant: D === "tree" ? "default" : "ghost",
248
263
  size: "sm",
249
264
  className: "rounded-none",
250
265
  onClick: () => k("tree"),
251
- children: /* @__PURE__ */ b(O, { size: 16 })
252
- }), /* @__PURE__ */ b(c, {
266
+ children: /* @__PURE__ */ S(A, { size: 16 })
267
+ }), /* @__PURE__ */ S(o, {
253
268
  variant: D === "list" ? "default" : "ghost",
254
269
  size: "sm",
255
270
  className: "rounded-none",
256
271
  onClick: () => k("list"),
257
- children: /* @__PURE__ */ b(se, { size: 16 })
272
+ children: /* @__PURE__ */ S(ce, { size: 16 })
258
273
  })]
259
274
  })
260
275
  ]
261
276
  })]
262
277
  }),
263
- D === "tree" && /* @__PURE__ */ b(r, { children: /* @__PURE__ */ b(i, {
278
+ D === "tree" && /* @__PURE__ */ S(s, { children: /* @__PURE__ */ S(c, {
264
279
  className: "p-2",
265
- children: X ? /* @__PURE__ */ b("div", {
280
+ children: we ? /* @__PURE__ */ S("div", {
266
281
  className: "space-y-2 p-4",
267
282
  children: [
268
283
  1,
269
284
  2,
270
285
  3,
271
286
  4
272
- ].map((e) => /* @__PURE__ */ b("div", { className: "h-10 bg-bg-sunken motion-safe:animate-vc-shimmer rounded" }, e))
273
- }) : Z ? /* @__PURE__ */ b(g, {
287
+ ].map((e) => /* @__PURE__ */ S("div", { className: "h-10 bg-bg-sunken motion-safe:animate-vc-shimmer rounded" }, e))
288
+ }) : Z ? /* @__PURE__ */ S(y, {
274
289
  resource: "buckets",
275
290
  error: Z,
276
291
  onRetry: () => void Q()
277
- }) : J.length > 0 ? /* @__PURE__ */ b("div", {
292
+ }) : Y.length > 0 ? /* @__PURE__ */ S("div", {
278
293
  className: "py-2",
279
- onClick: () => U(null),
280
- children: J.map((e) => /* @__PURE__ */ b(F, {
294
+ onClick: () => W(null),
295
+ children: Y.map((e) => /* @__PURE__ */ S(L, {
281
296
  bucket: e,
282
297
  level: 0,
283
- expanded: I,
284
- onToggle: be,
285
- getPath: C,
286
- onEdit: Ee,
287
- onDelete: (e) => B(e),
298
+ expanded: j,
299
+ onToggle: xe,
300
+ getPath: i,
301
+ onEdit: Oe,
302
+ onDelete: (e) => V(e),
288
303
  onCreateChild: (e) => $(e),
289
- activeMenu: le,
290
- setActiveMenu: U
304
+ activeMenu: ue,
305
+ setActiveMenu: W
291
306
  }, e.id))
292
- }) : /* @__PURE__ */ b(f, {
307
+ }) : /* @__PURE__ */ S(h, {
293
308
  illustration: "empty-files",
294
309
  title: "No buckets created",
295
310
  description: "Create buckets to organize your BotManor resources.",
296
- action: /* @__PURE__ */ b(c, {
297
- leftIcon: /* @__PURE__ */ b(A, { size: 16 }),
298
- onClick: () => $(),
299
- children: "Create Bucket"
311
+ action: /* @__PURE__ */ S(r, {
312
+ permission: n.BUCKET_CREATE,
313
+ children: /* @__PURE__ */ S(o, {
314
+ leftIcon: /* @__PURE__ */ S(M, { size: 16 }),
315
+ onClick: () => $(),
316
+ children: "Create Bucket"
317
+ })
300
318
  })
301
319
  })
302
320
  }) }),
303
- D === "list" && /* @__PURE__ */ b(y, { children: X ? /* @__PURE__ */ b("div", {
321
+ D === "list" && /* @__PURE__ */ S(oe, { children: we ? /* @__PURE__ */ S("div", {
304
322
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
305
323
  children: [
306
324
  1,
307
325
  2,
308
326
  3
309
- ].map((e) => /* @__PURE__ */ b("div", { className: "h-32 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
310
- }) : Z ? /* @__PURE__ */ b(g, {
327
+ ].map((e) => /* @__PURE__ */ S("div", { className: "h-32 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
328
+ }) : Z ? /* @__PURE__ */ S(y, {
311
329
  resource: "buckets",
312
330
  error: Z,
313
331
  onRetry: () => void Q()
314
- }) : K.length > 0 ? /* @__PURE__ */ b("div", {
332
+ }) : q.length > 0 ? /* @__PURE__ */ S("div", {
315
333
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
316
- children: K.map((e) => /* @__PURE__ */ b(S, {
317
- to: C(`buckets/${e.id}`),
318
- children: /* @__PURE__ */ x(r, {
334
+ children: q.map((e) => /* @__PURE__ */ S(w, {
335
+ to: i(`buckets/${e.id}`),
336
+ children: /* @__PURE__ */ C(s, {
319
337
  className: "h-full hover:border-primary/50 transition-colors cursor-pointer",
320
- children: [/* @__PURE__ */ b(o, {
338
+ children: [/* @__PURE__ */ S(u, {
321
339
  className: "pb-2",
322
- children: /* @__PURE__ */ b("div", {
340
+ children: /* @__PURE__ */ S("div", {
323
341
  className: "flex items-start justify-between",
324
- children: /* @__PURE__ */ x("div", {
342
+ children: /* @__PURE__ */ C("div", {
325
343
  className: "flex items-center gap-3",
326
- children: [/* @__PURE__ */ b(E, { className: "h-5 w-5 text-primary" }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b(s, {
344
+ children: [/* @__PURE__ */ S(O, { className: "h-5 w-5 text-primary" }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S(d, {
327
345
  className: "text-base",
328
346
  children: e.name
329
- }), /* @__PURE__ */ b(a, {
347
+ }), /* @__PURE__ */ S(l, {
330
348
  className: "text-xs",
331
349
  children: e.path
332
350
  })] })]
333
351
  })
334
352
  })
335
- }), /* @__PURE__ */ b(i, { children: /* @__PURE__ */ x("div", {
353
+ }), /* @__PURE__ */ S(c, { children: /* @__PURE__ */ C("div", {
336
354
  className: "flex items-center justify-between text-sm",
337
- children: [/* @__PURE__ */ b("span", {
355
+ children: [/* @__PURE__ */ S("span", {
338
356
  className: "text-text-secondary",
339
357
  children: e.slug
340
- }), /* @__PURE__ */ b("span", {
358
+ }), /* @__PURE__ */ S("span", {
341
359
  className: "text-xs text-text-secondary",
342
360
  children: t(e.createdAt)
343
361
  })]
344
362
  }) })]
345
363
  })
346
364
  }, e.id))
347
- }) : /* @__PURE__ */ b(f, {
365
+ }) : /* @__PURE__ */ S(h, {
348
366
  illustration: "empty-search",
349
367
  title: "No buckets found",
350
368
  description: "Create buckets to organize your BotManor resources.",
351
- action: /* @__PURE__ */ b(c, {
352
- leftIcon: /* @__PURE__ */ b(A, { size: 16 }),
353
- onClick: () => $(),
354
- children: "Create Bucket"
369
+ action: /* @__PURE__ */ S(r, {
370
+ permission: n.BUCKET_CREATE,
371
+ children: /* @__PURE__ */ S(o, {
372
+ leftIcon: /* @__PURE__ */ S(M, { size: 16 }),
373
+ onClick: () => $(),
374
+ children: "Create Bucket"
375
+ })
355
376
  })
356
377
  }) }),
357
- /* @__PURE__ */ x(r, { children: [/* @__PURE__ */ x(o, { children: [/* @__PURE__ */ x(s, {
378
+ /* @__PURE__ */ C(s, { children: [/* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
358
379
  className: "flex items-center gap-2",
359
- children: [/* @__PURE__ */ b(O, { size: 18 }), "Organizing with Buckets"]
360
- }), /* @__PURE__ */ b(a, { children: "Buckets help you organize and manage permissions for your resources" })] }), /* @__PURE__ */ b(i, { children: /* @__PURE__ */ x("div", {
380
+ children: [/* @__PURE__ */ S(A, { size: 18 }), "Organizing with Buckets"]
381
+ }), /* @__PURE__ */ S(l, { children: "Buckets help you organize and manage permissions for your resources" })] }), /* @__PURE__ */ S(c, { children: /* @__PURE__ */ C("div", {
361
382
  className: "grid grid-cols-1 md:grid-cols-3 gap-6",
362
383
  children: [
363
- /* @__PURE__ */ x("div", {
384
+ /* @__PURE__ */ C("div", {
364
385
  className: "space-y-2",
365
- children: [/* @__PURE__ */ b("h4", {
386
+ children: [/* @__PURE__ */ S("h4", {
366
387
  className: "font-medium",
367
388
  children: "Hierarchical Organization"
368
- }), /* @__PURE__ */ b("p", {
389
+ }), /* @__PURE__ */ S("p", {
369
390
  className: "text-sm text-text-secondary",
370
391
  children: "Create nested folder structures to organize apps, agents, and other resources by team, project, or domain."
371
392
  })]
372
393
  }),
373
- /* @__PURE__ */ x("div", {
394
+ /* @__PURE__ */ C("div", {
374
395
  className: "space-y-2",
375
- children: [/* @__PURE__ */ b("h4", {
396
+ children: [/* @__PURE__ */ S("h4", {
376
397
  className: "font-medium",
377
398
  children: "Inherited Permissions"
378
- }), /* @__PURE__ */ b("p", {
399
+ }), /* @__PURE__ */ S("p", {
379
400
  className: "text-sm text-text-secondary",
380
401
  children: "Set owners, editors, and viewers at the bucket level. Permissions cascade to all items within."
381
402
  })]
382
403
  }),
383
- /* @__PURE__ */ x("div", {
404
+ /* @__PURE__ */ C("div", {
384
405
  className: "space-y-2",
385
- children: [/* @__PURE__ */ b("h4", {
406
+ children: [/* @__PURE__ */ S("h4", {
386
407
  className: "font-medium",
387
408
  children: "Default Policies"
388
- }), /* @__PURE__ */ b("p", {
409
+ }), /* @__PURE__ */ S("p", {
389
410
  className: "text-sm text-text-secondary",
390
411
  children: "Configure default policy bindings for buckets. All new items inherit these policies automatically."
391
412
  })]
392
413
  })
393
414
  ]
394
415
  }) })] }),
395
- ce && /* @__PURE__ */ b("div", {
416
+ le && /* @__PURE__ */ S("div", {
396
417
  className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50",
397
- children: /* @__PURE__ */ x(r, {
418
+ children: /* @__PURE__ */ C(s, {
398
419
  className: "w-full max-w-md mx-4",
399
420
  children: [
400
- /* @__PURE__ */ x(o, { children: [/* @__PURE__ */ x(s, {
421
+ /* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
401
422
  className: "flex items-center justify-between",
402
- children: [/* @__PURE__ */ b("span", { children: "Create Bucket" }), /* @__PURE__ */ b(c, {
423
+ children: [/* @__PURE__ */ S("span", { children: "Create Bucket" }), /* @__PURE__ */ S(o, {
403
424
  variant: "ghost",
404
425
  size: "icon",
405
- onClick: () => R(!1),
406
- children: /* @__PURE__ */ b(N, { size: 16 })
426
+ onClick: () => z(!1),
427
+ children: /* @__PURE__ */ S(F, { size: 16 })
407
428
  })]
408
- }), /* @__PURE__ */ b(a, { children: W.parentBucketId ? "Create a new sub-bucket" : "Create a new root bucket" })] }),
409
- /* @__PURE__ */ x(i, {
429
+ }), /* @__PURE__ */ S(l, { children: G.parentBucketId ? "Create a new sub-bucket" : "Create a new root bucket" })] }),
430
+ /* @__PURE__ */ C(c, {
410
431
  className: "space-y-4",
411
432
  children: [
412
- /* @__PURE__ */ b(p, {
433
+ /* @__PURE__ */ S(g, {
413
434
  label: "Bucket Name",
414
435
  required: !0,
415
- children: /* @__PURE__ */ b(m, {
436
+ children: /* @__PURE__ */ S(_, {
416
437
  placeholder: "e.g., Marketing Team",
417
- value: W.name,
418
- onChange: (e) => G({
419
- ...W,
438
+ value: G.name,
439
+ onChange: (e) => K({
440
+ ...G,
420
441
  name: e.target.value
421
442
  })
422
443
  })
423
444
  }),
424
- /* @__PURE__ */ b(p, {
445
+ /* @__PURE__ */ S(g, {
425
446
  label: "Description",
426
- children: /* @__PURE__ */ b(h, {
447
+ children: /* @__PURE__ */ S(v, {
427
448
  placeholder: "What is this bucket for?",
428
- value: W.description,
429
- onChange: (e) => G({
430
- ...W,
449
+ value: G.description,
450
+ onChange: (e) => K({
451
+ ...G,
431
452
  description: e.target.value
432
453
  }),
433
454
  rows: 2
434
455
  })
435
456
  }),
436
- /* @__PURE__ */ b(p, {
457
+ /* @__PURE__ */ S(g, {
437
458
  label: "Visibility",
438
- children: /* @__PURE__ */ x("select", {
459
+ children: /* @__PURE__ */ C("select", {
439
460
  className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
440
- value: W.visibility,
441
- onChange: (e) => G({
442
- ...W,
461
+ value: G.visibility,
462
+ onChange: (e) => K({
463
+ ...G,
443
464
  visibility: e.target.value
444
465
  }),
445
466
  children: [
446
- /* @__PURE__ */ b("option", {
467
+ /* @__PURE__ */ S("option", {
447
468
  value: "PRIVATE",
448
469
  children: "Private"
449
470
  }),
450
- /* @__PURE__ */ b("option", {
471
+ /* @__PURE__ */ S("option", {
451
472
  value: "WORKSPACE",
452
473
  children: "Workspace"
453
474
  }),
454
- /* @__PURE__ */ b("option", {
475
+ /* @__PURE__ */ S("option", {
455
476
  value: "PUBLIC",
456
477
  children: "Public"
457
478
  })
@@ -460,83 +481,83 @@ var F = ({ bucket: e, level: t, expanded: n, onToggle: r, getPath: i, onEdit: a,
460
481
  })
461
482
  ]
462
483
  }),
463
- /* @__PURE__ */ x("div", {
484
+ /* @__PURE__ */ C("div", {
464
485
  className: "flex justify-end gap-2 p-4 border-t",
465
- children: [/* @__PURE__ */ b(c, {
486
+ children: [/* @__PURE__ */ S(o, {
466
487
  variant: "outline",
467
- onClick: () => R(!1),
488
+ onClick: () => z(!1),
468
489
  children: "Cancel"
469
- }), /* @__PURE__ */ b(c, {
470
- onClick: Ce,
471
- isLoading: he.loading,
472
- disabled: !W.name,
473
- leftIcon: /* @__PURE__ */ b(j, { size: 16 }),
490
+ }), /* @__PURE__ */ S(o, {
491
+ onClick: Te,
492
+ isLoading: ge.loading,
493
+ disabled: !G.name,
494
+ leftIcon: /* @__PURE__ */ S(N, { size: 16 }),
474
495
  children: "Create Bucket"
475
496
  })]
476
497
  })
477
498
  ]
478
499
  })
479
500
  }),
480
- V && /* @__PURE__ */ b("div", {
501
+ H && /* @__PURE__ */ S("div", {
481
502
  className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50",
482
- children: /* @__PURE__ */ x(r, {
503
+ children: /* @__PURE__ */ C(s, {
483
504
  className: "w-full max-w-md mx-4",
484
505
  children: [
485
- /* @__PURE__ */ x(o, { children: [/* @__PURE__ */ x(s, {
506
+ /* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
486
507
  className: "flex items-center justify-between",
487
- children: [/* @__PURE__ */ b("span", { children: "Edit Bucket" }), /* @__PURE__ */ b(c, {
508
+ children: [/* @__PURE__ */ S("span", { children: "Edit Bucket" }), /* @__PURE__ */ S(o, {
488
509
  variant: "ghost",
489
510
  size: "icon",
490
- onClick: () => H(null),
491
- children: /* @__PURE__ */ b(N, { size: 16 })
511
+ onClick: () => U(null),
512
+ children: /* @__PURE__ */ S(F, { size: 16 })
492
513
  })]
493
- }), /* @__PURE__ */ b(a, { children: "Update bucket details" })] }),
494
- /* @__PURE__ */ x(i, {
514
+ }), /* @__PURE__ */ S(l, { children: "Update bucket details" })] }),
515
+ /* @__PURE__ */ C(c, {
495
516
  className: "space-y-4",
496
517
  children: [
497
- /* @__PURE__ */ b(p, {
518
+ /* @__PURE__ */ S(g, {
498
519
  label: "Bucket Name",
499
520
  required: !0,
500
- children: /* @__PURE__ */ b(m, {
521
+ children: /* @__PURE__ */ S(_, {
501
522
  placeholder: "e.g., Marketing Team",
502
- value: W.name,
503
- onChange: (e) => G({
504
- ...W,
523
+ value: G.name,
524
+ onChange: (e) => K({
525
+ ...G,
505
526
  name: e.target.value
506
527
  })
507
528
  })
508
529
  }),
509
- /* @__PURE__ */ b(p, {
530
+ /* @__PURE__ */ S(g, {
510
531
  label: "Description",
511
- children: /* @__PURE__ */ b(h, {
532
+ children: /* @__PURE__ */ S(v, {
512
533
  placeholder: "What is this bucket for?",
513
- value: W.description,
514
- onChange: (e) => G({
515
- ...W,
534
+ value: G.description,
535
+ onChange: (e) => K({
536
+ ...G,
516
537
  description: e.target.value
517
538
  }),
518
539
  rows: 2
519
540
  })
520
541
  }),
521
- /* @__PURE__ */ b(p, {
542
+ /* @__PURE__ */ S(g, {
522
543
  label: "Visibility",
523
- children: /* @__PURE__ */ x("select", {
544
+ children: /* @__PURE__ */ C("select", {
524
545
  className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
525
- value: W.visibility,
526
- onChange: (e) => G({
527
- ...W,
546
+ value: G.visibility,
547
+ onChange: (e) => K({
548
+ ...G,
528
549
  visibility: e.target.value
529
550
  }),
530
551
  children: [
531
- /* @__PURE__ */ b("option", {
552
+ /* @__PURE__ */ S("option", {
532
553
  value: "PRIVATE",
533
554
  children: "Private"
534
555
  }),
535
- /* @__PURE__ */ b("option", {
556
+ /* @__PURE__ */ S("option", {
536
557
  value: "WORKSPACE",
537
558
  children: "Workspace"
538
559
  }),
539
- /* @__PURE__ */ b("option", {
560
+ /* @__PURE__ */ S("option", {
540
561
  value: "PUBLIC",
541
562
  children: "Public"
542
563
  })
@@ -545,49 +566,49 @@ var F = ({ bucket: e, level: t, expanded: n, onToggle: r, getPath: i, onEdit: a,
545
566
  })
546
567
  ]
547
568
  }),
548
- /* @__PURE__ */ x("div", {
569
+ /* @__PURE__ */ C("div", {
549
570
  className: "flex justify-end gap-2 p-4 border-t",
550
- children: [/* @__PURE__ */ b(c, {
571
+ children: [/* @__PURE__ */ S(o, {
551
572
  variant: "outline",
552
- onClick: () => H(null),
573
+ onClick: () => U(null),
553
574
  children: "Cancel"
554
- }), /* @__PURE__ */ b(c, {
555
- onClick: we,
556
- isLoading: _e.loading,
557
- disabled: !W.name,
558
- leftIcon: /* @__PURE__ */ b(j, { size: 16 }),
575
+ }), /* @__PURE__ */ S(o, {
576
+ onClick: Ee,
577
+ isLoading: ve.loading,
578
+ disabled: !G.name,
579
+ leftIcon: /* @__PURE__ */ S(N, { size: 16 }),
559
580
  children: "Save Changes"
560
581
  })]
561
582
  })
562
583
  ]
563
584
  })
564
585
  }),
565
- z && /* @__PURE__ */ b("div", {
586
+ B && /* @__PURE__ */ S("div", {
566
587
  className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50",
567
- children: /* @__PURE__ */ x(r, {
588
+ children: /* @__PURE__ */ C(s, {
568
589
  className: "w-full max-w-md mx-4",
569
590
  children: [
570
- /* @__PURE__ */ x(o, { children: [/* @__PURE__ */ x(s, {
591
+ /* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
571
592
  className: "flex items-center gap-2 text-status-error-text",
572
- children: [/* @__PURE__ */ b(M, { size: 18 }), "Delete Bucket"]
573
- }), /* @__PURE__ */ b(a, { children: "Are you sure you want to delete this bucket? This action cannot be undone." })] }),
574
- /* @__PURE__ */ b(i, { children: /* @__PURE__ */ b("p", {
593
+ children: [/* @__PURE__ */ S(P, { size: 18 }), "Delete Bucket"]
594
+ }), /* @__PURE__ */ S(l, { children: "Are you sure you want to delete this bucket? This action cannot be undone." })] }),
595
+ /* @__PURE__ */ S(c, { children: /* @__PURE__ */ S("p", {
575
596
  className: "text-sm text-text-secondary",
576
597
  children: "Note: Buckets with children or items cannot be deleted. You must delete or move all contents first."
577
598
  }) }),
578
- /* @__PURE__ */ x("div", {
599
+ /* @__PURE__ */ C("div", {
579
600
  className: "flex justify-end gap-2 p-4 border-t",
580
- children: [/* @__PURE__ */ b(c, {
601
+ children: [/* @__PURE__ */ S(o, {
581
602
  variant: "outline",
582
- onClick: () => B(null),
603
+ onClick: () => V(null),
583
604
  children: "Cancel"
584
- }), /* @__PURE__ */ b(c, {
605
+ }), /* @__PURE__ */ S(o, {
585
606
  variant: "destructive",
586
607
  onClick: () => {
587
- u("medium"), Te(z);
608
+ p("medium"), De(B);
588
609
  },
589
- isLoading: ye.loading,
590
- leftIcon: /* @__PURE__ */ b(M, { size: 16 }),
610
+ isLoading: be.loading,
611
+ leftIcon: /* @__PURE__ */ S(P, { size: 16 }),
591
612
  children: "Delete Bucket"
592
613
  })]
593
614
  })
@@ -599,6 +620,6 @@ var F = ({ bucket: e, level: t, expanded: n, onToggle: r, getPath: i, onEdit: a,
599
620
  });
600
621
  };
601
622
  //#endregion
602
- export { I as BucketsPage };
623
+ export { R as BucketsPage };
603
624
 
604
625
  //# sourceMappingURL=BucketsPage.js.map