@burdenoff/microfe-botmanor 2026.1027.2 → 2026.1027.3

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 (80) 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/VersionHistoryPanel.js +92 -83
  7. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  8. package/dist/botlit/pages/A2AAgentDetailPage.js +212 -203
  9. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  10. package/dist/botlit/pages/A2ARegistryPage.js +129 -117
  11. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  12. package/dist/botlit/pages/AgentApprovalsPage.js +122 -110
  13. package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
  14. package/dist/botlit/pages/AgentBuilderPage.js +18 -18
  15. package/dist/botlit/pages/AgentDetailPage.js +298 -273
  16. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  17. package/dist/botlit/pages/AgentsListPage.js +145 -121
  18. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  19. package/dist/botlit/pages/BotChannelsTab.js +238 -226
  20. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  21. package/dist/botlit/pages/BotDetailPage.js +307 -288
  22. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  23. package/dist/botlit/pages/BotWorkflowTab.js +125 -116
  24. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  25. package/dist/botlit/pages/BotsListPage.js +159 -144
  26. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  27. package/dist/botlit/pages/BucketsPage.js +279 -258
  28. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  29. package/dist/botlit/pages/ChannelDetailPage.js +346 -328
  30. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  31. package/dist/botlit/pages/ChannelRoutesPage.js +10 -10
  32. package/dist/botlit/pages/ChannelsPage.js +163 -148
  33. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  34. package/dist/botlit/pages/DashboardPage.js +129 -114
  35. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  36. package/dist/botlit/pages/ExecutionDetailPage.js +145 -139
  37. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
  38. package/dist/botlit/pages/ExecutionsPage.js +14 -14
  39. package/dist/botlit/pages/InstalledPackagesPage.js +245 -227
  40. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  41. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +168 -156
  42. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  43. package/dist/botlit/pages/KnowledgeBasesPage.js +91 -79
  44. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  45. package/dist/botlit/pages/MCPServerDetailPage.js +200 -188
  46. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  47. package/dist/botlit/pages/MCPServersPage.js +170 -155
  48. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  49. package/dist/botlit/pages/PoliciesPage.js +113 -104
  50. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  51. package/dist/botlit/pages/PolicyDetailPage.js +145 -133
  52. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
  53. package/dist/botlit/pages/PromptStudioPage.js +106 -97
  54. package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
  55. package/dist/botlit/pages/PromptTemplateDetailPage.js +359 -347
  56. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
  57. package/dist/botlit/pages/PromptTemplatesPage.js +127 -112
  58. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
  59. package/dist/botlit/pages/RetrievalProfileDetailPage.js +219 -210
  60. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
  61. package/dist/botlit/pages/RetrievalProfilesPage.js +112 -103
  62. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  63. package/dist/botlit/pages/SettingsPage.js +264 -252
  64. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  65. package/dist/botlit/pages/SkillDetailPage.js +235 -226
  66. package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
  67. package/dist/botlit/pages/SkillsPage.js +115 -106
  68. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  69. package/dist/botlit/pages/StorePackageDetailPage.js +194 -188
  70. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
  71. package/dist/botlit/pages/StorePage.js +161 -155
  72. package/dist/botlit/pages/StorePage.js.map +1 -1
  73. package/dist/botlit/permissions/PermissionRequired.js +45 -0
  74. package/dist/botlit/permissions/PermissionRequired.js.map +1 -0
  75. package/dist/botlit/permissions/botmanorPermissions.js +72 -0
  76. package/dist/botlit/permissions/botmanorPermissions.js.map +1 -0
  77. package/dist/botlit/permissions/index.js +3 -0
  78. package/dist/botlit/permissions/useBotmanorPermissions.js +19 -0
  79. package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -0
  80. package/package.json +1 -1
@@ -1,21 +1,24 @@
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 { Badge as l } from "../components/Badge.js";
7
- import { EmptyState as u } from "../components/EmptyState.js";
8
- import { useInstallPackage as d, useStorePackage as f } from "../hooks/useStore.js";
3
+ import { BOTMANOR_PERMISSIONS as n } from "../permissions/botmanorPermissions.js";
4
+ import { BotmanorPermissionGate as r } from "../permissions/useBotmanorPermissions.js";
5
+ import { PageLayout as i } from "../components/PageLayout.js";
6
+ import { Button as a } from "../components/Button.js";
7
+ import "../permissions/index.js";
8
+ import { Card as o, CardContent as s, CardDescription as c, CardHeader as l, CardTitle as u } from "../components/Card.js";
9
+ import { Badge as d } from "../components/Badge.js";
10
+ import { EmptyState as f } from "../components/EmptyState.js";
11
+ import { useInstallPackage as p, useStorePackage as m } from "../hooks/useStore.js";
9
12
  import "../hooks/index.js";
10
- import { InstallMode as p } from "../../generated/wspace-types.js";
11
- import { useMemo as m, useState as h } from "react";
12
- import { PagePurpose as g } from "@burdenoff/fe-libs/ui";
13
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
14
- import { useParams as y } from "react-router";
15
- import { AlertTriangle as b, ArrowLeft as x, CheckCircle as S, Download as C, ExternalLink as w, FileText as T, GitBranch as E, Globe as D, Package as O, Shield as k, Tag as A } from "lucide-react";
16
- import { toast as j } from "sonner";
13
+ import { InstallMode as h } from "../../generated/wspace-types.js";
14
+ import { useMemo as g, useState as _ } from "react";
15
+ import { PagePurpose as v } from "@burdenoff/fe-libs/ui";
16
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
17
+ import { useParams as x } from "react-router";
18
+ import { AlertTriangle as S, ArrowLeft as C, CheckCircle as w, Download as T, ExternalLink as E, FileText as D, GitBranch as O, Globe as k, Package as A, Shield as j, Tag as M } from "lucide-react";
19
+ import { toast as N } from "sonner";
17
20
  //#region src/botlit/pages/StorePackageDetailPage.tsx
18
- var M = {
21
+ var P = {
19
22
  APP: "Bot",
20
23
  AGENT: "Agent",
21
24
  MCP_PACK: "MCP Pack",
@@ -32,7 +35,7 @@ var M = {
32
35
  TEMPLATE: "Template",
33
36
  TOOL: "Tool",
34
37
  WORKFLOW: "Workflow"
35
- }, N = ({ risk: e }) => e ? /* @__PURE__ */ v(l, {
38
+ }, F = ({ risk: e }) => e ? /* @__PURE__ */ b(d, {
36
39
  variant: {
37
40
  low: "success",
38
41
  medium: "warning",
@@ -40,245 +43,248 @@ var M = {
40
43
  }[e] ?? "secondary",
41
44
  className: "capitalize",
42
45
  children: [e, " Risk"]
43
- }) : /* @__PURE__ */ _(l, {
46
+ }) : /* @__PURE__ */ y(d, {
44
47
  variant: "secondary",
45
48
  children: "Risk unknown"
46
49
  });
47
- function P(e) {
50
+ function I(e) {
48
51
  return e && typeof e == "object" && !Array.isArray(e) ? e : {};
49
52
  }
50
- function F(e) {
53
+ function L(e) {
51
54
  return typeof e == "string" && e !== "" ? e : void 0;
52
55
  }
53
- function I(e) {
54
- let t = P(e.package), n = P(t.author), r = P(e.security), i = P(e.integrity), a = P(e.compatibility), o = {};
56
+ function R(e) {
57
+ let t = I(e.package), n = I(t.author), r = I(e.security), i = I(e.integrity), a = I(e.compatibility), o = {};
55
58
  for (let [e, t] of Object.entries(a)) {
56
- let n = F(t);
59
+ let n = L(t);
57
60
  n && (o[e] = n);
58
61
  }
59
62
  let s = Array.isArray(e.dependencies) ? e.dependencies.flatMap((e) => {
60
- let t = P(e), n = F(t.slug);
63
+ let t = I(e), n = L(t.slug);
61
64
  return n ? [{
62
65
  slug: n,
63
- version: F(t.version) ?? "*"
66
+ version: L(t.version) ?? "*"
64
67
  }] : [];
65
68
  }) : [];
66
69
  return {
67
- name: F(t.name),
68
- slug: F(t.slug),
69
- description: F(t.description),
70
- icon: F(t.icon),
71
- license: F(t.license),
72
- homepage: F(t.homepage),
73
- repository: F(t.repository),
74
- authorName: F(n.name),
75
- authorUrl: F(n.url),
70
+ name: L(t.name),
71
+ slug: L(t.slug),
72
+ description: L(t.description),
73
+ icon: L(t.icon),
74
+ license: L(t.license),
75
+ homepage: L(t.homepage),
76
+ repository: L(t.repository),
77
+ authorName: L(n.name),
78
+ authorUrl: L(n.url),
76
79
  tags: Array.isArray(t.tags) ? t.tags.filter((e) => typeof e == "string") : [],
77
80
  dependencies: s,
78
81
  compatibility: o,
79
- risk: F(r.risk),
82
+ risk: L(r.risk),
80
83
  requiresSecrets: r.requiresSecrets === !0,
81
- networkEgress: F(P(r.network).egress),
82
- checksum: F(i.checksum),
83
- signature: F(i.signature)
84
+ networkEgress: L(I(r.network).egress),
85
+ checksum: L(i.checksum),
86
+ signature: L(i.signature)
84
87
  };
85
88
  }
86
- var L = () => {
87
- let { slug: P } = y(), { navigateTo: F } = e(), { data: L, loading: R } = f(P ? decodeURIComponent(P) : void 0), { install: z, loading: B } = d(), [V, H] = h(p.Linked), [U, W] = h(!1), G = m(() => I(L?.manifest ?? {}), [L?.manifest]), K = async () => {
88
- if (L) {
89
+ var z = () => {
90
+ let { slug: I } = x(), { navigateTo: L } = e(), { data: z, loading: B } = m(I ? decodeURIComponent(I) : void 0), { install: V, loading: H } = p(), [U, W] = _(h.Linked), [G, K] = _(!1), q = g(() => R(z?.manifest ?? {}), [z?.manifest]), J = async () => {
91
+ if (z) {
89
92
  try {
90
- await z({
91
- packageId: L.id,
92
- mode: V
93
+ await V({
94
+ packageId: z.id,
95
+ mode: U
93
96
  });
94
97
  } catch (e) {
95
- j.error(e instanceof Error ? e.message : "Failed to install package");
98
+ N.error(e instanceof Error ? e.message : "Failed to install package");
96
99
  return;
97
100
  }
98
- j.success(`Installed "${G.name ?? L.slug}"`), W(!1), F("store/installed");
101
+ N.success(`Installed "${q.name ?? z.slug}"`), K(!1), L("store/installed");
99
102
  }
100
103
  };
101
- return R ? /* @__PURE__ */ _(n, {
104
+ return B ? /* @__PURE__ */ y(i, {
102
105
  title: "Loading...",
103
- children: /* @__PURE__ */ _("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
104
- }) : L ? /* @__PURE__ */ v(n, {
105
- title: /* @__PURE__ */ v("div", {
106
+ children: /* @__PURE__ */ y("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
107
+ }) : z ? /* @__PURE__ */ b(i, {
108
+ title: /* @__PURE__ */ b("div", {
106
109
  className: "flex items-center gap-3",
107
110
  children: [
108
- /* @__PURE__ */ _(c, {
111
+ /* @__PURE__ */ y(a, {
109
112
  variant: "ghost",
110
113
  size: "icon",
111
- onClick: () => F("store"),
112
- children: /* @__PURE__ */ _(x, { size: 20 })
114
+ onClick: () => L("store"),
115
+ children: /* @__PURE__ */ y(C, { size: 20 })
113
116
  }),
114
- /* @__PURE__ */ _("div", {
117
+ /* @__PURE__ */ y("div", {
115
118
  className: "p-2 rounded-lg bg-action-primary-bg/10",
116
- children: G.icon ? /* @__PURE__ */ _("span", {
119
+ children: q.icon ? /* @__PURE__ */ y("span", {
117
120
  className: "text-2xl",
118
- children: G.icon
119
- }) : /* @__PURE__ */ _(O, { className: "h-6 w-6 text-primary" })
121
+ children: q.icon
122
+ }) : /* @__PURE__ */ y(A, { className: "h-6 w-6 text-primary" })
120
123
  }),
121
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ v("div", {
124
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("div", {
122
125
  className: "flex items-center gap-2",
123
- children: [/* @__PURE__ */ _("span", { children: G.name ?? L.slug }), /* @__PURE__ */ v(l, {
126
+ children: [/* @__PURE__ */ y("span", { children: q.name ?? z.slug }), /* @__PURE__ */ b(d, {
124
127
  variant: "outline",
125
- children: ["v", L.version]
128
+ children: ["v", z.version]
126
129
  })]
127
- }), /* @__PURE__ */ _("p", {
130
+ }), /* @__PURE__ */ y("p", {
128
131
  className: "text-sm font-normal text-text-secondary",
129
- children: L.slug
132
+ children: z.slug
130
133
  })] })
131
134
  ]
132
135
  }),
133
- actions: /* @__PURE__ */ v("div", {
136
+ actions: /* @__PURE__ */ b("div", {
134
137
  className: "flex gap-2",
135
- children: [G.homepage && /* @__PURE__ */ _("a", {
136
- href: G.homepage,
138
+ children: [q.homepage && /* @__PURE__ */ y("a", {
139
+ href: q.homepage,
137
140
  target: "_blank",
138
141
  rel: "noopener noreferrer",
139
- children: /* @__PURE__ */ _(c, {
142
+ children: /* @__PURE__ */ y(a, {
140
143
  variant: "outline",
141
- leftIcon: /* @__PURE__ */ _(w, { size: 16 }),
144
+ leftIcon: /* @__PURE__ */ y(E, { size: 16 }),
142
145
  children: "Homepage"
143
146
  })
144
- }), /* @__PURE__ */ _(c, {
145
- leftIcon: /* @__PURE__ */ _(C, { size: 16 }),
146
- onClick: () => W(!0),
147
- children: "Install"
147
+ }), /* @__PURE__ */ y(r, {
148
+ permission: n.STORE_CREATE,
149
+ children: /* @__PURE__ */ y(a, {
150
+ leftIcon: /* @__PURE__ */ y(T, { size: 16 }),
151
+ onClick: () => K(!0),
152
+ children: "Install"
153
+ })
148
154
  })]
149
155
  }),
150
- children: [/* @__PURE__ */ v("div", {
156
+ children: [/* @__PURE__ */ b("div", {
151
157
  className: "space-y-6",
152
158
  children: [
153
- /* @__PURE__ */ _(g, {
154
- icon: /* @__PURE__ */ _(O, { size: 18 }),
159
+ /* @__PURE__ */ y(v, {
160
+ icon: /* @__PURE__ */ y(A, { size: 18 }),
155
161
  children: "This is a store package — a ready-made bot, agent, skill, tool pack or template you can install into your workspace. Review what it does, its security posture and version, then install it (linked so it stays updated, or forked as your own copy) to get a head start instead of building from scratch."
156
162
  }),
157
- /* @__PURE__ */ v("div", {
163
+ /* @__PURE__ */ b("div", {
158
164
  className: "grid grid-cols-2 md:grid-cols-4 gap-4",
159
165
  children: [
160
- /* @__PURE__ */ _(r, {
166
+ /* @__PURE__ */ y(o, {
161
167
  treatment: "glass",
162
168
  glow: !0,
163
- children: /* @__PURE__ */ v(i, {
169
+ children: /* @__PURE__ */ b(s, {
164
170
  className: "pt-6 text-center",
165
- children: [/* @__PURE__ */ _(l, {
171
+ children: [/* @__PURE__ */ y(d, {
166
172
  variant: "outline",
167
173
  className: "text-xs",
168
- children: M[L.kind] ?? L.kind
169
- }), /* @__PURE__ */ _("p", {
174
+ children: P[z.kind] ?? z.kind
175
+ }), /* @__PURE__ */ y("p", {
170
176
  className: "text-sm text-text-secondary mt-1",
171
177
  children: "Type"
172
178
  })]
173
179
  })
174
180
  }),
175
- /* @__PURE__ */ _(r, { children: /* @__PURE__ */ v(i, {
181
+ /* @__PURE__ */ y(o, { children: /* @__PURE__ */ b(s, {
176
182
  className: "pt-6 text-center",
177
- children: [/* @__PURE__ */ v("p", {
183
+ children: [/* @__PURE__ */ b("p", {
178
184
  className: "text-lg font-bold",
179
- children: ["v", L.version]
180
- }), /* @__PURE__ */ _("p", {
185
+ children: ["v", z.version]
186
+ }), /* @__PURE__ */ y("p", {
181
187
  className: "text-sm text-text-secondary",
182
188
  children: "Version"
183
189
  })]
184
190
  }) }),
185
- /* @__PURE__ */ _(r, { children: /* @__PURE__ */ v(i, {
191
+ /* @__PURE__ */ y(o, { children: /* @__PURE__ */ b(s, {
186
192
  className: "pt-6 text-center",
187
- children: [/* @__PURE__ */ _(N, { risk: G.risk }), /* @__PURE__ */ _("p", {
193
+ children: [/* @__PURE__ */ y(F, { risk: q.risk }), /* @__PURE__ */ y("p", {
188
194
  className: "text-sm text-text-secondary mt-1",
189
195
  children: "Security"
190
196
  })]
191
197
  }) }),
192
- /* @__PURE__ */ _(r, { children: /* @__PURE__ */ v(i, {
198
+ /* @__PURE__ */ y(o, { children: /* @__PURE__ */ b(s, {
193
199
  className: "pt-6 text-center",
194
- children: [/* @__PURE__ */ _("p", {
200
+ children: [/* @__PURE__ */ y("p", {
195
201
  className: "text-lg font-bold",
196
- children: G.license ?? "—"
197
- }), /* @__PURE__ */ _("p", {
202
+ children: q.license ?? "—"
203
+ }), /* @__PURE__ */ y("p", {
198
204
  className: "text-sm text-text-secondary",
199
205
  children: "License"
200
206
  })]
201
207
  }) })
202
208
  ]
203
209
  }),
204
- /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ _(s, { children: "Description" }) }), /* @__PURE__ */ v(i, { children: [/* @__PURE__ */ _("p", {
210
+ /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ y(u, { children: "Description" }) }), /* @__PURE__ */ b(s, { children: [/* @__PURE__ */ y("p", {
205
211
  className: "text-text-primary",
206
- children: G.description ?? "—"
207
- }), G.tags.length > 0 && /* @__PURE__ */ v("div", {
212
+ children: q.description ?? "—"
213
+ }), q.tags.length > 0 && /* @__PURE__ */ b("div", {
208
214
  className: "flex items-center gap-2 mt-4",
209
- children: [/* @__PURE__ */ _(A, {
215
+ children: [/* @__PURE__ */ y(M, {
210
216
  size: 14,
211
217
  className: "text-text-secondary"
212
- }), G.tags.map((e) => /* @__PURE__ */ _(l, {
218
+ }), q.tags.map((e) => /* @__PURE__ */ y(d, {
213
219
  variant: "secondary",
214
220
  children: e
215
221
  }, e))]
216
222
  })] })] }),
217
- L.readme && /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ v(s, {
223
+ z.readme && /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ b(u, {
218
224
  className: "flex items-center gap-2",
219
- children: [/* @__PURE__ */ _(T, { size: 18 }), "README"]
220
- }) }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ _("div", {
225
+ children: [/* @__PURE__ */ y(D, { size: 18 }), "README"]
226
+ }) }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ y("div", {
221
227
  className: "prose prose-sm max-w-none dark:prose-invert",
222
- children: /* @__PURE__ */ _("pre", {
228
+ children: /* @__PURE__ */ y("pre", {
223
229
  className: "whitespace-pre-wrap text-sm",
224
- children: L.readme
230
+ children: z.readme
225
231
  })
226
232
  }) })] }),
227
- /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ _(s, { children: "Author & Links" }) }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ v("div", {
233
+ /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ y(u, { children: "Author & Links" }) }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
228
234
  className: "grid grid-cols-2 md:grid-cols-4 gap-6",
229
235
  children: [
230
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
236
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
231
237
  className: "text-sm text-text-secondary",
232
238
  children: "Author"
233
- }), /* @__PURE__ */ v("div", {
239
+ }), /* @__PURE__ */ b("div", {
234
240
  className: "flex items-center gap-2 mt-1",
235
- children: [/* @__PURE__ */ _("span", {
241
+ children: [/* @__PURE__ */ y("span", {
236
242
  className: "font-medium",
237
- children: G.authorName ?? "—"
238
- }), G.authorUrl && /* @__PURE__ */ _("a", {
239
- href: G.authorUrl,
243
+ children: q.authorName ?? "—"
244
+ }), q.authorUrl && /* @__PURE__ */ y("a", {
245
+ href: q.authorUrl,
240
246
  target: "_blank",
241
247
  rel: "noopener noreferrer",
242
248
  className: "text-primary hover:underline",
243
- children: /* @__PURE__ */ _(w, { size: 12 })
249
+ children: /* @__PURE__ */ y(E, { size: 12 })
244
250
  })]
245
251
  })] }),
246
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
252
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
247
253
  className: "text-sm text-text-secondary",
248
254
  children: "Published"
249
- }), /* @__PURE__ */ _("p", {
255
+ }), /* @__PURE__ */ y("p", {
250
256
  className: "font-medium mt-1",
251
- children: t(L.publishedAt)
257
+ children: t(z.publishedAt)
252
258
  })] }),
253
- G.repository && /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
259
+ q.repository && /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
254
260
  className: "text-sm text-text-secondary",
255
261
  children: "Repository"
256
- }), /* @__PURE__ */ v("a", {
257
- href: G.repository,
262
+ }), /* @__PURE__ */ b("a", {
263
+ href: q.repository,
258
264
  target: "_blank",
259
265
  rel: "noopener noreferrer",
260
266
  className: "flex items-center gap-1 mt-1 text-primary hover:underline",
261
- children: [/* @__PURE__ */ _(E, { size: 14 }), "View Source"]
267
+ children: [/* @__PURE__ */ y(O, { size: 14 }), "View Source"]
262
268
  })] }),
263
- G.homepage && /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
269
+ q.homepage && /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
264
270
  className: "text-sm text-text-secondary",
265
271
  children: "Homepage"
266
- }), /* @__PURE__ */ v("a", {
267
- href: G.homepage,
272
+ }), /* @__PURE__ */ b("a", {
273
+ href: q.homepage,
268
274
  target: "_blank",
269
275
  rel: "noopener noreferrer",
270
276
  className: "flex items-center gap-1 mt-1 text-primary hover:underline",
271
- children: [/* @__PURE__ */ _(D, { size: 14 }), "Visit Site"]
277
+ children: [/* @__PURE__ */ y(k, { size: 14 }), "Visit Site"]
272
278
  })] })
273
279
  ]
274
280
  }) })] }),
275
- G.dependencies.length > 0 && /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ v(o, { children: [/* @__PURE__ */ _(s, { children: "Dependencies" }), /* @__PURE__ */ v(a, { children: [
281
+ q.dependencies.length > 0 && /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y(u, { children: "Dependencies" }), /* @__PURE__ */ b(c, { children: [
276
282
  "This package depends on ",
277
- G.dependencies.length,
283
+ q.dependencies.length,
278
284
  " other package(s)"
279
- ] })] }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ _("div", {
285
+ ] })] }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ y("div", {
280
286
  className: "flex flex-wrap gap-2",
281
- children: G.dependencies.map((e) => /* @__PURE__ */ v(l, {
287
+ children: q.dependencies.map((e) => /* @__PURE__ */ b(d, {
282
288
  variant: "outline",
283
289
  className: "font-mono",
284
290
  children: [
@@ -288,154 +294,154 @@ var L = () => {
288
294
  ]
289
295
  }, e.slug))
290
296
  }) })] }),
291
- /* @__PURE__ */ v("div", {
297
+ /* @__PURE__ */ b("div", {
292
298
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
293
- children: [/* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ v(s, {
299
+ children: [/* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ b(u, {
294
300
  className: "flex items-center gap-2",
295
- children: [/* @__PURE__ */ _(S, { size: 18 }), "Compatibility"]
296
- }) }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ _("div", {
301
+ children: [/* @__PURE__ */ y(w, { size: 18 }), "Compatibility"]
302
+ }) }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ y("div", {
297
303
  className: "space-y-2",
298
- children: Object.keys(G.compatibility).length === 0 ? /* @__PURE__ */ _("p", {
304
+ children: Object.keys(q.compatibility).length === 0 ? /* @__PURE__ */ y("p", {
299
305
  className: "text-sm text-text-secondary",
300
306
  children: "This package does not declare compatibility ranges."
301
- }) : Object.entries(G.compatibility).map(([e, t]) => /* @__PURE__ */ v("div", {
307
+ }) : Object.entries(q.compatibility).map(([e, t]) => /* @__PURE__ */ b("div", {
302
308
  className: "flex justify-between",
303
- children: [/* @__PURE__ */ _("span", {
309
+ children: [/* @__PURE__ */ y("span", {
304
310
  className: "text-text-secondary capitalize",
305
311
  children: e
306
- }), /* @__PURE__ */ _(l, {
312
+ }), /* @__PURE__ */ y(d, {
307
313
  variant: "outline",
308
314
  children: t
309
315
  })]
310
316
  }, e))
311
- }) })] }), /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ v(s, {
317
+ }) })] }), /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ b(u, {
312
318
  className: "flex items-center gap-2",
313
- children: [/* @__PURE__ */ _(k, { size: 18 }), "Security"]
314
- }) }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ v("div", {
319
+ children: [/* @__PURE__ */ y(j, { size: 18 }), "Security"]
320
+ }) }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
315
321
  className: "space-y-3",
316
322
  children: [
317
- /* @__PURE__ */ v("div", {
323
+ /* @__PURE__ */ b("div", {
318
324
  className: "flex items-center justify-between",
319
- children: [/* @__PURE__ */ _("span", {
325
+ children: [/* @__PURE__ */ y("span", {
320
326
  className: "text-text-secondary",
321
327
  children: "Risk Level"
322
- }), /* @__PURE__ */ _(N, { risk: G.risk })]
328
+ }), /* @__PURE__ */ y(F, { risk: q.risk })]
323
329
  }),
324
- /* @__PURE__ */ v("div", {
330
+ /* @__PURE__ */ b("div", {
325
331
  className: "flex items-center justify-between",
326
- children: [/* @__PURE__ */ _("span", {
332
+ children: [/* @__PURE__ */ y("span", {
327
333
  className: "text-text-secondary",
328
334
  children: "Requires Secrets"
329
- }), /* @__PURE__ */ _(l, {
330
- variant: G.requiresSecrets ? "warning" : "secondary",
331
- children: G.requiresSecrets ? "Yes" : "No"
335
+ }), /* @__PURE__ */ y(d, {
336
+ variant: q.requiresSecrets ? "warning" : "secondary",
337
+ children: q.requiresSecrets ? "Yes" : "No"
332
338
  })]
333
339
  }),
334
- /* @__PURE__ */ v("div", {
340
+ /* @__PURE__ */ b("div", {
335
341
  className: "flex items-center justify-between",
336
- children: [/* @__PURE__ */ _("span", {
342
+ children: [/* @__PURE__ */ y("span", {
337
343
  className: "text-text-secondary",
338
344
  children: "Network Egress"
339
- }), /* @__PURE__ */ _(l, {
340
- variant: G.networkEgress === "any" ? "warning" : G.networkEgress === "restricted" ? "secondary" : "success",
345
+ }), /* @__PURE__ */ y(d, {
346
+ variant: q.networkEgress === "any" ? "warning" : q.networkEgress === "restricted" ? "secondary" : "success",
341
347
  className: "capitalize",
342
- children: G.networkEgress ?? "unknown"
348
+ children: q.networkEgress ?? "unknown"
343
349
  })]
344
350
  })
345
351
  ]
346
352
  }) })] })]
347
353
  }),
348
- /* @__PURE__ */ v(r, { children: [/* @__PURE__ */ _(o, { children: /* @__PURE__ */ _(s, { children: "Integrity" }) }), /* @__PURE__ */ _(i, { children: /* @__PURE__ */ v("div", {
354
+ /* @__PURE__ */ b(o, { children: [/* @__PURE__ */ y(l, { children: /* @__PURE__ */ y(u, { children: "Integrity" }) }), /* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
349
355
  className: "space-y-2",
350
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
356
+ children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
351
357
  className: "text-sm text-text-secondary",
352
358
  children: "Checksum"
353
- }), /* @__PURE__ */ _("p", {
359
+ }), /* @__PURE__ */ y("p", {
354
360
  className: "font-mono text-sm break-all",
355
- children: G.checksum ?? "—"
356
- })] }), G.signature && /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
361
+ children: q.checksum ?? "—"
362
+ })] }), q.signature && /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
357
363
  className: "text-sm text-text-secondary",
358
364
  children: "Signature"
359
- }), /* @__PURE__ */ _("p", {
365
+ }), /* @__PURE__ */ y("p", {
360
366
  className: "font-mono text-sm break-all",
361
- children: G.signature
367
+ children: q.signature
362
368
  })] })]
363
369
  }) })] })
364
370
  ]
365
- }), U && /* @__PURE__ */ _("div", {
371
+ }), G && /* @__PURE__ */ y("div", {
366
372
  className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50",
367
- children: /* @__PURE__ */ v(r, {
373
+ children: /* @__PURE__ */ b(o, {
368
374
  className: "w-full max-w-md",
369
- children: [/* @__PURE__ */ v(o, { children: [/* @__PURE__ */ _(s, { children: "Install Package" }), /* @__PURE__ */ v(a, { children: [
375
+ children: [/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y(u, { children: "Install Package" }), /* @__PURE__ */ b(c, { children: [
370
376
  "Install ",
371
- G.name ?? L.slug,
377
+ q.name ?? z.slug,
372
378
  " v",
373
- L.version
374
- ] })] }), /* @__PURE__ */ v(i, {
379
+ z.version
380
+ ] })] }), /* @__PURE__ */ b(s, {
375
381
  className: "space-y-4",
376
382
  children: [
377
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
383
+ /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
378
384
  className: "text-sm font-medium mb-2",
379
385
  children: "Install Mode"
380
- }), /* @__PURE__ */ v("div", {
386
+ }), /* @__PURE__ */ b("div", {
381
387
  className: "space-y-2",
382
- children: [/* @__PURE__ */ v("label", {
388
+ children: [/* @__PURE__ */ b("label", {
383
389
  className: "flex items-start gap-3 p-3 border border-border-subtle rounded-lg cursor-pointer hover:bg-accent",
384
- children: [/* @__PURE__ */ _("input", {
390
+ children: [/* @__PURE__ */ y("input", {
385
391
  type: "radio",
386
392
  name: "mode",
387
393
  value: "LINKED",
388
- checked: V === p.Linked,
389
- onChange: () => H(p.Linked),
394
+ checked: U === h.Linked,
395
+ onChange: () => W(h.Linked),
390
396
  className: "mt-1"
391
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
397
+ }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
392
398
  className: "font-medium",
393
399
  children: "Linked"
394
- }), /* @__PURE__ */ _("p", {
400
+ }), /* @__PURE__ */ y("p", {
395
401
  className: "text-sm text-text-secondary",
396
402
  children: "Stay in sync with store updates. Recommended for most cases."
397
403
  })] })]
398
- }), /* @__PURE__ */ v("label", {
404
+ }), /* @__PURE__ */ b("label", {
399
405
  className: "flex items-start gap-3 p-3 border border-border-subtle rounded-lg cursor-pointer hover:bg-accent",
400
- children: [/* @__PURE__ */ _("input", {
406
+ children: [/* @__PURE__ */ y("input", {
401
407
  type: "radio",
402
408
  name: "mode",
403
409
  value: "FORKED",
404
- checked: V === p.Forked,
405
- onChange: () => H(p.Forked),
410
+ checked: U === h.Forked,
411
+ onChange: () => W(h.Forked),
406
412
  className: "mt-1"
407
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
413
+ }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
408
414
  className: "font-medium",
409
415
  children: "Forked"
410
- }), /* @__PURE__ */ _("p", {
416
+ }), /* @__PURE__ */ y("p", {
411
417
  className: "text-sm text-text-secondary",
412
418
  children: "Create a local copy you can customize. No automatic updates."
413
419
  })] })]
414
420
  })]
415
421
  })] }),
416
- G.requiresSecrets && /* @__PURE__ */ v("div", {
422
+ q.requiresSecrets && /* @__PURE__ */ b("div", {
417
423
  className: "p-3 bg-status-warning-bg-subtle rounded-lg",
418
- children: [/* @__PURE__ */ v("div", {
424
+ children: [/* @__PURE__ */ b("div", {
419
425
  className: "flex items-center gap-2 text-status-warning-text",
420
- children: [/* @__PURE__ */ _(b, { size: 16 }), /* @__PURE__ */ _("span", {
426
+ children: [/* @__PURE__ */ y(S, { size: 16 }), /* @__PURE__ */ y("span", {
421
427
  className: "text-sm font-medium",
422
428
  children: "Requires Secrets"
423
429
  })]
424
- }), /* @__PURE__ */ _("p", {
430
+ }), /* @__PURE__ */ y("p", {
425
431
  className: "text-sm text-text-secondary mt-1",
426
432
  children: "This package requires secret configuration after installation."
427
433
  })]
428
434
  }),
429
- /* @__PURE__ */ v("div", {
435
+ /* @__PURE__ */ b("div", {
430
436
  className: "flex justify-end gap-2 pt-4",
431
- children: [/* @__PURE__ */ _(c, {
437
+ children: [/* @__PURE__ */ y(a, {
432
438
  variant: "outline",
433
- onClick: () => W(!1),
439
+ onClick: () => K(!1),
434
440
  children: "Cancel"
435
- }), /* @__PURE__ */ _(c, {
436
- onClick: () => void K(),
437
- isLoading: B,
438
- leftIcon: /* @__PURE__ */ _(C, { size: 16 }),
441
+ }), /* @__PURE__ */ y(a, {
442
+ onClick: () => void J(),
443
+ isLoading: H,
444
+ leftIcon: /* @__PURE__ */ y(T, { size: 16 }),
439
445
  children: "Install"
440
446
  })]
441
447
  })
@@ -443,20 +449,20 @@ var L = () => {
443
449
  })]
444
450
  })
445
451
  })]
446
- }) : /* @__PURE__ */ _(n, {
452
+ }) : /* @__PURE__ */ y(i, {
447
453
  title: "Package Not Found",
448
- children: /* @__PURE__ */ _(u, {
454
+ children: /* @__PURE__ */ y(f, {
449
455
  illustration: "empty-search",
450
456
  title: "Package Not Found",
451
457
  description: "This package doesn't exist.",
452
- action: /* @__PURE__ */ _(c, {
453
- onClick: () => F("store"),
458
+ action: /* @__PURE__ */ y(a, {
459
+ onClick: () => L("store"),
454
460
  children: "Back to Store"
455
461
  })
456
462
  })
457
463
  });
458
464
  };
459
465
  //#endregion
460
- export { L as StorePackageDetailPage };
466
+ export { z as StorePackageDetailPage };
461
467
 
462
468
  //# sourceMappingURL=StorePackageDetailPage.js.map