@burdenoff/microfe-devportal 2026.916.7 → 2026.917.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 (31) hide show
  1. package/dist/devportal/components/ImageUploadField.d.ts +30 -0
  2. package/dist/devportal/components/ImageUploadField.d.ts.map +1 -0
  3. package/dist/devportal/components/ImageUploadField.js +182 -0
  4. package/dist/devportal/components/ImageUploadField.js.map +1 -0
  5. package/dist/devportal/components/ManifestViewer.d.ts +12 -0
  6. package/dist/devportal/components/ManifestViewer.d.ts.map +1 -0
  7. package/dist/devportal/components/ManifestViewer.js +58 -0
  8. package/dist/devportal/components/ManifestViewer.js.map +1 -0
  9. package/dist/devportal/components/index.d.ts +1 -0
  10. package/dist/devportal/components/index.d.ts.map +1 -1
  11. package/dist/devportal/components/index.js +1 -0
  12. package/dist/devportal/pages/AdminReviewPage.d.ts.map +1 -1
  13. package/dist/devportal/pages/AdminReviewPage.js +54 -64
  14. package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
  15. package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
  16. package/dist/devportal/pages/ApplicationDetailPage.js +712 -883
  17. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  18. package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
  19. package/dist/devportal/pages/ApplicationVersionsPage.js +304 -272
  20. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  21. package/dist/devportal/pages/CreatePhysicalItemPage.d.ts.map +1 -1
  22. package/dist/devportal/pages/CreatePhysicalItemPage.js +238 -331
  23. package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
  24. package/dist/devportal/pages/EditPhysicalItemPage.d.ts.map +1 -1
  25. package/dist/devportal/pages/EditPhysicalItemPage.js +352 -408
  26. package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
  27. package/dist/translations/en.d.ts +4 -1
  28. package/dist/translations/en.d.ts.map +1 -1
  29. package/dist/translations/en.js +5 -2
  30. package/dist/translations/en.js.map +1 -1
  31. package/package.json +1 -1
@@ -16,16 +16,17 @@ import { GrantDelegationModal as oe } from "../components/GrantDelegationModal.j
16
16
  import { MarkdownEditor as se } from "../components/MarkdownEditor.js";
17
17
  import { useDevportalPermission as ce } from "../hooks/usePermission.js";
18
18
  import { DEVPORTAL_PERMISSIONS as le } from "../constants/permissions.js";
19
- import { usePackageUpload as ue } from "../hooks/usePackageUpload.js";
20
- import { useCallback as A, useEffect as de, useMemo as j, useRef as M, useState as N } from "react";
21
- import { Markdown as fe } from "@burdenoff/fe-libs/shared/components";
22
- import { AlertCircle as P, AppWindow as pe, BarChart3 as me, Check as F, CheckCircle as he, ChevronRight as ge, CircleDollarSign as I, Clock as _e, Copy as ve, Edit as ye, ExternalLink as L, FlaskConical as be, Gift as xe, Info as Se, Key as Ce, Link as we, Loader2 as R, Lock as Te, MoreHorizontal as Ee, Package as De, Plus as z, Power as Oe, RefreshCw as ke, SendHorizontal as Ae, Shield as je, Store as Me, TrendingUp as Ne, Upload as B, Users as Pe, Wallet as Fe, Webhook as V, X as Ie, XCircle as Le } from "lucide-react";
23
- import { useParams as Re } from "react-router";
24
- import { Fragment as H, jsx as U, jsxs as W } from "react/jsx-runtime";
25
- import { useI18n as G } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
26
- import { CTAOverflowMenu as ze, EmphasisPanel as Be, GlassCard as Ve } from "@burdenoff/fe-libs/ui";
19
+ import { ImageUploadField as ue, ScreenshotGallery as de } from "../components/ImageUploadField.js";
20
+ import { usePackageUpload as fe } from "../hooks/usePackageUpload.js";
21
+ import { useCallback as A, useEffect as j, useMemo as M, useRef as pe, useState as N } from "react";
22
+ import { Markdown as me } from "@burdenoff/fe-libs/shared/components";
23
+ import { AlertCircle as P, AppWindow as he, BarChart3 as ge, Check as F, CheckCircle as _e, ChevronRight as ve, CircleDollarSign as ye, Clock as be, Copy as xe, Edit as Se, ExternalLink as I, FlaskConical as Ce, Gift as we, Info as Te, Key as Ee, Link as De, Loader2 as L, Lock as Oe, MoreHorizontal as ke, Package as Ae, Plus as R, Power as je, RefreshCw as Me, SendHorizontal as Ne, Shield as z, Store as Pe, TrendingUp as Fe, Upload as Ie, Users as B, Wallet as Le, Webhook as Re, X as ze, XCircle as Be } from "lucide-react";
24
+ import { useParams as Ve } from "react-router";
25
+ import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
26
+ import { useI18n as W } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
27
+ import { CTAOverflowMenu as He, EmphasisPanel as Ue, GlassCard as We } from "@burdenoff/fe-libs/ui";
27
28
  //#region src/devportal/pages/ApplicationDetailPage.tsx
28
- function He(e) {
29
+ function Ge(e) {
29
30
  return e ? {
30
31
  id: e.id,
31
32
  name: e.name,
@@ -79,7 +80,7 @@ function He(e) {
79
80
  updatedAt: e.updatedAt
80
81
  } : null;
81
82
  }
82
- function Ue(e) {
83
+ function Ke(e) {
83
84
  return {
84
85
  id: e.id,
85
86
  applicationId: e.applicationId,
@@ -103,7 +104,7 @@ function Ue(e) {
103
104
  updatedAt: e.updatedAt
104
105
  };
105
106
  }
106
- function We(e) {
107
+ function qe(e) {
107
108
  return {
108
109
  id: e.id,
109
110
  applicationId: e.applicationId,
@@ -119,7 +120,7 @@ function We(e) {
119
120
  createdAt: e.createdAt
120
121
  };
121
122
  }
122
- function Ge(e) {
123
+ function Je(e) {
123
124
  return {
124
125
  id: e.id,
125
126
  appId: e.appId,
@@ -141,218 +142,218 @@ function Ge(e) {
141
142
  revokedBy: e.revokedBy || void 0
142
143
  };
143
144
  }
144
- var Ke = [
145
+ var Ye = [
145
146
  {
146
147
  id: "overview",
147
148
  label: "Overview",
148
- icon: pe
149
+ icon: he
149
150
  },
150
151
  {
151
152
  id: "analytics",
152
153
  label: "Analytics",
153
- icon: me
154
+ icon: ge
154
155
  },
155
156
  {
156
157
  id: "store-listing",
157
158
  label: "Store Listing",
158
- icon: Me
159
+ icon: Pe
159
160
  },
160
161
  {
161
162
  id: "versions",
162
163
  label: "Versions",
163
- icon: De
164
+ icon: Ae
164
165
  },
165
166
  {
166
167
  id: "pricing",
167
168
  label: "Pricing",
168
- icon: I
169
+ icon: ye
169
170
  },
170
171
  {
171
172
  id: "permissions",
172
173
  label: "Permissions",
173
- icon: je
174
+ icon: z
174
175
  },
175
176
  {
176
177
  id: "webhooks",
177
178
  label: "Webhooks",
178
- icon: V
179
+ icon: Re
179
180
  },
180
181
  {
181
182
  id: "delegations",
182
183
  label: "Delegations",
183
- icon: Pe
184
+ icon: B
184
185
  },
185
186
  {
186
187
  id: "playground",
187
188
  label: "API Playground",
188
- icon: L
189
+ icon: I
189
190
  },
190
191
  {
191
192
  id: "oauth",
192
193
  label: "OAuth",
193
- icon: Te
194
+ icon: Oe
194
195
  },
195
196
  {
196
197
  id: "api-keys",
197
198
  label: "API Keys",
198
- icon: Ce
199
+ icon: Ee
199
200
  }
200
- ], qe = {
201
+ ], Xe = {
201
202
  ACTIVE: "bg-status-success-bg-subtle text-status-success-text",
202
203
  REVOKED: "bg-status-error-bg-subtle text-status-error-text",
203
204
  EXPIRED: "bg-bg-sunken text-text-secondary"
204
- }, Je = ({ message: e = "Loading..." }) => /* @__PURE__ */ W("div", {
205
+ }, G = ({ message: e = "Loading..." }) => /* @__PURE__ */ U("div", {
205
206
  className: "flex items-center justify-center gap-3 py-12",
206
- children: [/* @__PURE__ */ U(R, {
207
+ children: [/* @__PURE__ */ H(L, {
207
208
  size: 20,
208
209
  className: "animate-spin text-text-secondary"
209
- }), /* @__PURE__ */ U("p", {
210
+ }), /* @__PURE__ */ H("p", {
210
211
  className: "text-sm text-text-secondary",
211
212
  children: e
212
213
  })]
213
- }), Ye = ({ message: e }) => /* @__PURE__ */ W("div", {
214
+ }), K = ({ message: e }) => /* @__PURE__ */ U("div", {
214
215
  className: "flex flex-col items-center justify-center gap-2 py-12 text-center",
215
- children: [/* @__PURE__ */ U(P, {
216
+ children: [/* @__PURE__ */ H(P, {
216
217
  size: 32,
217
218
  className: "text-status-error-text"
218
- }), /* @__PURE__ */ U("p", {
219
+ }), /* @__PURE__ */ H("p", {
219
220
  className: "text-sm text-text-secondary",
220
221
  children: e
221
222
  })]
222
- }), K = () => {
223
- let { navigate: i, basePath: o, workspaceId: c } = e(), { t: u } = G(), m = (e, t) => {
223
+ }), q = () => {
224
+ let { navigate: i, basePath: o, workspaceId: c } = e(), { t: u } = W(), m = (e, t) => {
224
225
  let n = u(e);
225
226
  return n === e ? t : n;
226
- }, { allowed: g } = ce(le.APP_UPDATE), { allowed: y } = ce(le.APP_DELETE), { appId: b } = Re(), [S, D] = N("overview"), [te, ne] = N(!1), [k, ie] = N(!1), [se, ue] = N(null), [de, j] = N(!1), { data: M, loading: fe, error: me, refetch: I } = s({
227
+ }, { allowed: g } = ce(le.APP_UPDATE), { allowed: y } = ce(le.APP_DELETE), { appId: b } = Ve(), [S, D] = N("overview"), [te, ne] = N(!1), [k, ie] = N(!1), [se, ue] = N(null), [de, fe] = N(!1), { data: j, loading: M, error: pe, refetch: me } = s({
227
228
  variables: { id: b },
228
229
  skip: !b
229
- }), [ve, { loading: L }] = h(), [xe, { loading: Se }] = a(), [Ce, { loading: we }] = _(), [Te] = p(), [Ee, { loading: De }] = f(), [z, { loading: je }] = v(), { data: Ne, refetch: B } = d({
230
+ }), [ge, { loading: ye }] = h(), [xe, { loading: I }] = a(), [we, { loading: Te }] = _(), [Ee] = p(), [De, { loading: Oe }] = f(), [ke, { loading: Ae }] = v(), { data: R, refetch: z } = d({
230
231
  variables: {
231
232
  applicationId: b,
232
233
  workspaceId: c ?? void 0
233
234
  },
234
235
  skip: !c || !b,
235
236
  fetchPolicy: "cache-and-network"
236
- }), Pe = Ne?.appInstallations?.edges?.[0]?.node ?? null, { data: Fe } = l({
237
- variables: { id: M?.application?.developerOrganizationId ?? "" },
238
- skip: !M?.application?.developerOrganizationId,
237
+ }), Fe = R?.appInstallations?.edges?.[0]?.node ?? null, { data: Ie } = l({
238
+ variables: { id: j?.application?.developerOrganizationId ?? "" },
239
+ skip: !j?.application?.developerOrganizationId,
239
240
  fetchPolicy: "cache-first"
240
- }), V = A((e) => {
241
+ }), B = A((e) => {
241
242
  i?.(`${o}${e}`);
242
- }, [i, o]), Ie = A(async () => {
243
- let e = M?.application?.appId;
243
+ }, [i, o]), Le = A(async () => {
244
+ let e = j?.application?.appId;
244
245
  if (e) try {
245
- let t = (await ve({ variables: { id: e } })).data?.rotateAppSecret.clientSecret;
246
+ let t = (await ge({ variables: { id: e } })).data?.rotateAppSecret.clientSecret;
246
247
  t && ue(t), ne(!1);
247
248
  } catch {}
248
- }, [M?.application?.appId, ve]), Be = A(async () => {
249
+ }, [j?.application?.appId, ge]), Re = A(async () => {
249
250
  if (b) try {
250
- await xe({ variables: { id: b } }), ie(!1), V("/apps");
251
+ await xe({ variables: { id: b } }), ie(!1), B("/apps");
251
252
  } catch {}
252
253
  }, [
253
254
  b,
254
255
  xe,
255
- V
256
- ]), Ve = A(async (e) => {
256
+ B
257
+ ]), ze = A(async (e) => {
257
258
  if (!(!b || !c)) try {
258
- await Ee({ variables: { input: {
259
+ await De({ variables: { input: {
259
260
  applicationId: b,
260
261
  scope: "WORKSPACE",
261
262
  workspaceId: c,
262
263
  autoUpdate: !1,
263
264
  ...e ? { version: e } : {}
264
- } } }), B(), O("success");
265
+ } } }), z(), O("success");
265
266
  } catch (e) {
266
267
  console.error("[DevPortal] Test in Workspace failed:", e), O("error");
267
268
  }
268
269
  }, [
269
270
  b,
270
271
  c,
271
- Ee,
272
- B
273
- ]), [Ue, We] = N(!1), [Ge, qe] = N(""), Je = A(async (e) => {
272
+ De,
273
+ z
274
+ ]), [Ue, We] = N(!1), [Ke, qe] = N(""), Je = A(async (e) => {
274
275
  try {
275
- await z({ variables: { id: e } }), B(), O("success");
276
+ await ke({ variables: { id: e } }), z(), O("success");
276
277
  } catch {
277
278
  O("error");
278
279
  }
279
- }, [z, B]), Ye = A(async () => {
280
+ }, [ke, z]), Xe = A(async () => {
280
281
  if (b) try {
281
- let e = (M?.application?.versions?.edges ?? []).map((e) => e.node).filter((e) => e.status === "draft");
282
- for (let t of e) await Te({ variables: { id: t.id } });
283
- await Ce({ variables: { id: b } }), O("success");
282
+ let e = (j?.application?.versions?.edges ?? []).map((e) => e.node).filter((e) => e.status === "draft");
283
+ for (let t of e) await Ee({ variables: { id: t.id } });
284
+ await we({ variables: { id: b } }), O("success");
284
285
  } catch (e) {
285
286
  console.error("[DevPortal] Submit failed:", e), O("error");
286
287
  } finally {
287
- I();
288
+ me();
288
289
  }
289
290
  }, [
290
291
  b,
291
- M?.application?.versions?.edges,
292
- Te,
293
- Ce,
294
- I
292
+ j?.application?.versions?.edges,
293
+ Ee,
294
+ we,
295
+ me
295
296
  ]);
296
- if (fe && !M) return /* @__PURE__ */ U(n, { message: m("devportal.loadingApplication", "Loading application...") });
297
- if (me) return /* @__PURE__ */ U(x, {
297
+ if (M && !j) return /* @__PURE__ */ H(n, { message: m("devportal.loadingApplication", "Loading application...") });
298
+ if (pe) return /* @__PURE__ */ H(x, {
298
299
  title: m("devportal.error", "Error"),
299
300
  backLink: `${o}/apps`,
300
301
  backLabel: m("devportal.backToApplications", "Back to Applications"),
301
- children: /* @__PURE__ */ W("div", {
302
+ children: /* @__PURE__ */ U("div", {
302
303
  className: "flex flex-col items-center justify-center py-12 text-center",
303
304
  children: [
304
- /* @__PURE__ */ U(P, {
305
+ /* @__PURE__ */ H(P, {
305
306
  size: 48,
306
307
  className: "text-status-error-text mb-4"
307
308
  }),
308
- /* @__PURE__ */ U("h3", {
309
+ /* @__PURE__ */ H("h3", {
309
310
  className: "text-lg font-semibold mb-2",
310
311
  children: m("devportal.failedToLoadApplication", "Failed to load application")
311
312
  }),
312
- /* @__PURE__ */ U("p", {
313
+ /* @__PURE__ */ H("p", {
313
314
  className: "text-sm text-text-secondary",
314
- children: me.message
315
+ children: pe.message
315
316
  })
316
317
  ]
317
318
  })
318
319
  });
319
- let K = He(M?.application);
320
- if (!K) return /* @__PURE__ */ U(x, {
320
+ let G = Ge(j?.application);
321
+ if (!G) return /* @__PURE__ */ H(x, {
321
322
  title: m("devportal.notFound", "Not Found"),
322
323
  backLink: `${o}/apps`,
323
324
  backLabel: m("devportal.backToApplications", "Back to Applications"),
324
- children: /* @__PURE__ */ U(r, {
325
+ children: /* @__PURE__ */ H(r, {
325
326
  illustration: "empty-generic",
326
- icon: /* @__PURE__ */ U(pe, { size: 48 }),
327
+ icon: /* @__PURE__ */ H(he, { size: 48 }),
327
328
  title: m("devportal.applicationNotFound", "Application not found"),
328
329
  description: m("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
329
330
  })
330
331
  });
331
- let q = [
332
+ let K = [
332
333
  "NODE",
333
334
  "WORKFLOW",
334
335
  "PARSER",
335
336
  "WIDGET",
336
337
  "DASHBOARD"
337
- ].includes(K.appType), J = K.appType === "API_INTEGRATION", Qe = M?.application?.versions?.totalCount ?? 0, at = K.appType === "NODE", ot = M?.application?.versions?.edges ?? [], st = ot.find((e) => e.node.isLatest)?.node ?? ot[0]?.node ?? null, ct = (st?.metadata ?? {}).sandboxBuildStatus, ut = at && ct !== "READY", dt = ut ? ct === "FAILED" || ct === "DISPATCH_FAILED" ? m("devportal.testInWorkspaceBuildFailed", "Test in Workspace (sandbox build failed)") : m("devportal.testInWorkspaceBuilding", "Test in Workspace (building sandbox image…)") : m("devportal.testInWorkspace", "Test in Workspace"), Y = K.pricingType === "PAID", ft = Fe?.developerOrganization, pt = ft?.platformFeeRate ?? .3, X = !!ft?.billingAccountId, mt = K.pricingDetails ?? {}, Z = K.pricingType === "FREE" || K.pricingType === "PAID" && typeof mt.price == "number" && mt.price > 0, Q = !!K.description?.trim() && !!K.category && !!K.iconUrl && (K.visibility === "PUBLIC" || K.visibility === "UNLISTED") && (!q && !J || Qe > 0) && (!Y || X) && Z, $ = Q && K.status !== "PUBLISHED" && K.status !== "SUBMITTED" && K.status !== "INACTIVE" && K.status !== "REVOKED", gt = [
338
- ...q ? [] : [{
338
+ ].includes(G.appType), q = G.appType === "API_INTEGRATION", J = j?.application?.versions?.totalCount ?? 0, $e = G.appType === "NODE", et = j?.application?.versions?.edges ?? [], st = et.find((e) => e.node.isLatest)?.node ?? et[0]?.node ?? null, ct = (st?.metadata ?? {}).sandboxBuildStatus, lt = $e && ct !== "READY", ut = lt ? ct === "FAILED" || ct === "DISPATCH_FAILED" ? m("devportal.testInWorkspaceBuildFailed", "Test in Workspace (sandbox build failed)") : m("devportal.testInWorkspaceBuilding", "Test in Workspace (building sandbox image…)") : m("devportal.testInWorkspace", "Test in Workspace"), Y = G.pricingType === "PAID", ft = Ie?.developerOrganization, pt = ft?.platformFeeRate ?? .3, X = !!ft?.billingAccountId, mt = G.pricingDetails ?? {}, Z = G.pricingType === "FREE" || G.pricingType === "PAID" && typeof mt.price == "number" && mt.price > 0, Q = !!G.description?.trim() && !!G.category && !!G.iconUrl && (G.visibility === "PUBLIC" || G.visibility === "UNLISTED") && (!K && !q || J > 0) && (!Y || X) && Z, $ = Q && G.status !== "PUBLISHED" && G.status !== "SUBMITTED" && G.status !== "INACTIVE" && G.status !== "REVOKED", gt = [
339
+ ...K ? [] : [{
339
340
  label: m("devportal.rotateSecret", "Rotate Secret"),
340
- icon: /* @__PURE__ */ U(ke, { size: 16 }),
341
- disabled: !K.appId,
341
+ icon: /* @__PURE__ */ H(Me, { size: 16 }),
342
+ disabled: !G.appId,
342
343
  onSelect: () => ne(!0)
343
344
  }],
344
- ...!q || at ? Pe ? [{
345
+ ...!K || $e ? Fe ? [{
345
346
  label: m("devportal.uninstallFromWorkspace", "Uninstall from Workspace"),
346
- icon: /* @__PURE__ */ U(Le, { size: 16 }),
347
- disabled: je || !c,
348
- onSelect: () => void Je(Pe.id)
347
+ icon: /* @__PURE__ */ H(Be, { size: 16 }),
348
+ disabled: Ae || !c,
349
+ onSelect: () => void Je(Fe.id)
349
350
  }] : [{
350
- label: dt,
351
- icon: /* @__PURE__ */ U(be, { size: 16 }),
352
- disabled: De || !c || ut,
351
+ label: ut,
352
+ icon: /* @__PURE__ */ H(Ce, { size: 16 }),
353
+ disabled: Oe || !c || lt,
353
354
  onSelect: () => {
354
- if (ot.length <= 1) {
355
- Ve(st?.version);
355
+ if (et.length <= 1) {
356
+ ze(st?.version);
356
357
  return;
357
358
  }
358
359
  qe(st?.version ?? ""), We(!0);
@@ -360,177 +361,177 @@ var Ke = [
360
361
  }] : [],
361
362
  {
362
363
  label: m("devportal.deactivate", "Deactivate"),
363
- icon: /* @__PURE__ */ U(Oe, { size: 16 }),
364
+ icon: /* @__PURE__ */ H(je, { size: 16 }),
364
365
  intent: "destructive",
365
366
  disabled: !y,
366
367
  onSelect: () => ie(!0)
367
368
  }
368
369
  ];
369
- return /* @__PURE__ */ W(x, {
370
- title: K.name,
371
- description: K.shortDescription,
370
+ return /* @__PURE__ */ U(x, {
371
+ title: G.name,
372
+ description: G.shortDescription,
372
373
  purpose: m("devportal.appDetailPurpose", "Everything about this application in one place — its credentials, the permissions and webhooks it uses, its analytics, and its store listing. Use the tabs to configure each area, then edit or publish when it is ready."),
373
374
  backLink: `${o}/apps`,
374
375
  backLabel: m("devportal.backToApplications", "Back to Applications"),
375
- actions: /* @__PURE__ */ W("div", {
376
+ actions: /* @__PURE__ */ U("div", {
376
377
  className: "flex items-center gap-2",
377
- children: [K.status === "SUBMITTED" ? /* @__PURE__ */ W("div", {
378
+ children: [G.status === "SUBMITTED" ? /* @__PURE__ */ U("div", {
378
379
  className: "flex items-center gap-1.5 rounded-full border border-status-warning-bg bg-status-warning-bg-subtle px-3 py-1.5 text-xs font-medium text-status-warning-text",
379
- children: [/* @__PURE__ */ U(_e, { size: 13 }), m("devportal.underReview", "Under Review")]
380
- }) : K.status !== "PUBLISHED" && K.status !== "INACTIVE" && K.status !== "REVOKED" ? /* @__PURE__ */ U("button", {
380
+ children: [/* @__PURE__ */ H(be, { size: 13 }), m("devportal.underReview", "Under Review")]
381
+ }) : G.status !== "PUBLISHED" && G.status !== "INACTIVE" && G.status !== "REVOKED" ? /* @__PURE__ */ H("button", {
381
382
  type: "button",
382
- onClick: () => void Ye(),
383
- disabled: !$ || we,
383
+ onClick: () => void Xe(),
384
+ disabled: !$ || Te,
384
385
  title: Q ? void 0 : [
385
- !K.description?.trim() && "Add full description",
386
- !K.category && "Select a category",
387
- !K.iconUrl && "Upload an app icon",
388
- (K.visibility === "PRIVATE" || K.visibility === "INTERNAL") && "Set visibility to Public (marketplace) or Unlisted (link sharing) — Private and Internal cannot be submitted for review",
389
- q && Qe === 0 && "Upload at least one version",
386
+ !G.description?.trim() && "Add full description",
387
+ !G.category && "Select a category",
388
+ !G.iconUrl && "Upload an app icon",
389
+ (G.visibility === "PRIVATE" || G.visibility === "INTERNAL") && "Set visibility to Public (marketplace) or Unlisted (link sharing) — Private and Internal cannot be submitted for review",
390
+ K && J === 0 && "Upload at least one version",
390
391
  !Z && "Set pricing (choose Free or Paid in the Pricing tab)",
391
392
  Y && !X && "Link a billing account to receive payments"
392
393
  ].filter(Boolean).join(" · "),
393
- className: t("inline-flex items-center gap-2 rounded-md px-5 py-2 text-sm font-medium whitespace-nowrap transition-colors", $ && !we ? "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90 cursor-pointer" : "cursor-not-allowed bg-bg-muted text-text-tertiary ring-1 ring-border-subtle"),
394
- children: we ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
394
+ className: t("inline-flex items-center gap-2 rounded-md px-5 py-2 text-sm font-medium whitespace-nowrap transition-colors", $ && !Te ? "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90 cursor-pointer" : "cursor-not-allowed bg-bg-muted text-text-tertiary ring-1 ring-border-subtle"),
395
+ children: Te ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
395
396
  size: 15,
396
397
  className: "animate-spin"
397
- }), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(Ae, { size: 15 }), m("devportal.submitForReview", "Submit for Review")] })
398
- }) : null, /* @__PURE__ */ U(ze, {
398
+ }), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Ne, { size: 15 }), m("devportal.submitForReview", "Submit for Review")] })
399
+ }) : null, /* @__PURE__ */ H(He, {
399
400
  primary: {
400
401
  label: m("devportal.editApp", "Edit App"),
401
- icon: /* @__PURE__ */ U(ye, { size: 16 }),
402
+ icon: /* @__PURE__ */ H(Se, { size: 16 }),
402
403
  disabled: !g,
403
- onSelect: () => V(`/apps/${K.id}/edit`)
404
+ onSelect: () => B(`/apps/${G.id}/edit`)
404
405
  },
405
406
  actions: gt
406
407
  })]
407
408
  }),
408
409
  children: [
409
- se && /* @__PURE__ */ U(ee, {
410
+ se && /* @__PURE__ */ H(ee, {
410
411
  title: m("devportal.newAppSecretGenerated", "New App Secret Generated"),
411
412
  secret: se,
412
413
  description: m("devportal.appSecretRotatedDescription", "Your app secret has been rotated. The old secret is no longer valid."),
413
414
  onDismiss: () => ue(null)
414
415
  }),
415
- /* @__PURE__ */ W("div", {
416
+ /* @__PURE__ */ U("div", {
416
417
  className: "flex flex-wrap items-center gap-2",
417
418
  children: [
418
- /* @__PURE__ */ U(T, {
419
- status: K.status,
419
+ /* @__PURE__ */ H(T, {
420
+ status: G.status,
420
421
  type: "app"
421
422
  }),
422
- /* @__PURE__ */ U("span", {
423
- title: K.visibility === "PUBLIC" ? "Public — discoverable in the marketplace. Requires review approval before going live." : K.visibility === "UNLISTED" ? "Unlisted — not in the store, but accessible via a direct share link. You can still submit for marketplace review." : K.visibility === "INTERNAL" ? "Internal — visible to all members of your developer organization, but not to anyone outside." : "Private — only you (the creator) can see this. Other org members cannot access it.",
424
- children: /* @__PURE__ */ U(T, {
425
- status: K.visibility,
423
+ /* @__PURE__ */ H("span", {
424
+ title: G.visibility === "PUBLIC" ? "Public — discoverable in the marketplace. Requires review approval before going live." : G.visibility === "UNLISTED" ? "Unlisted — not in the store, but accessible via a direct share link. You can still submit for marketplace review." : G.visibility === "INTERNAL" ? "Internal — visible to all members of your developer organization, but not to anyone outside." : "Private — only you (the creator) can see this. Other org members cannot access it.",
425
+ children: /* @__PURE__ */ H(T, {
426
+ status: G.visibility,
426
427
  type: "app"
427
428
  })
428
429
  }),
429
- K.isVerified && /* @__PURE__ */ U(E, { verified: !0 }),
430
- K.isFeatured && /* @__PURE__ */ U(w, {}),
431
- /* @__PURE__ */ U("span", {
430
+ G.isVerified && /* @__PURE__ */ H(E, { verified: !0 }),
431
+ G.isFeatured && /* @__PURE__ */ H(w, {}),
432
+ /* @__PURE__ */ H("span", {
432
433
  className: "text-sm text-text-secondary",
433
- children: C[K.appType] || K.appType
434
+ children: C[G.appType] || G.appType
434
435
  })
435
436
  ]
436
437
  }),
437
- K.status === "SUBMITTED" && /* @__PURE__ */ W("div", {
438
+ G.status === "SUBMITTED" && /* @__PURE__ */ U("div", {
438
439
  className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4",
439
- children: [/* @__PURE__ */ U(_e, {
440
+ children: [/* @__PURE__ */ H(be, {
440
441
  size: 18,
441
442
  className: "text-status-warning-text mt-0.5 flex-shrink-0"
442
- }), /* @__PURE__ */ W("div", {
443
+ }), /* @__PURE__ */ U("div", {
443
444
  className: "text-sm",
444
- children: [/* @__PURE__ */ U("p", {
445
+ children: [/* @__PURE__ */ H("p", {
445
446
  className: "font-medium text-status-warning-text",
446
447
  children: m("devportal.underReview", "Under Review")
447
- }), /* @__PURE__ */ W("p", {
448
+ }), /* @__PURE__ */ U("p", {
448
449
  className: "mt-0.5 text-text-secondary",
449
- children: [m("devportal.underReviewDesc", "Your submission is being reviewed by our team. You'll be notified of the outcome."), K.submittedAt && /* @__PURE__ */ W("span", {
450
+ children: [m("devportal.underReviewDesc", "Your submission is being reviewed by our team. You'll be notified of the outcome."), G.submittedAt && /* @__PURE__ */ U("span", {
450
451
  className: "ml-1",
451
452
  children: [
452
453
  "Submitted ",
453
- new Date(K.submittedAt).toLocaleDateString(),
454
+ new Date(G.submittedAt).toLocaleDateString(),
454
455
  "."
455
456
  ]
456
457
  })]
457
458
  })]
458
459
  })]
459
460
  }),
460
- K.status === "REJECTED" && /* @__PURE__ */ W("div", {
461
+ G.status === "REJECTED" && /* @__PURE__ */ U("div", {
461
462
  className: "flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-4",
462
- children: [/* @__PURE__ */ U(Le, {
463
+ children: [/* @__PURE__ */ H(Be, {
463
464
  size: 18,
464
465
  className: "text-status-error-text mt-0.5 flex-shrink-0"
465
- }), /* @__PURE__ */ W("div", {
466
+ }), /* @__PURE__ */ U("div", {
466
467
  className: "text-sm",
467
468
  children: [
468
- /* @__PURE__ */ U("p", {
469
+ /* @__PURE__ */ H("p", {
469
470
  className: "font-medium text-status-error-text",
470
471
  children: m("devportal.reviewRejected", "Review Rejected")
471
472
  }),
472
- /* @__PURE__ */ U("p", {
473
+ /* @__PURE__ */ H("p", {
473
474
  className: "mt-0.5 text-text-secondary",
474
- children: K.reviewNotes || m("devportal.reviewRejectedDesc", "Your submission was not approved. Please review the feedback, update your app, and re-submit.")
475
+ children: G.reviewNotes || m("devportal.reviewRejectedDesc", "Your submission was not approved. Please review the feedback, update your app, and re-submit.")
475
476
  }),
476
- /* @__PURE__ */ U("button", {
477
+ /* @__PURE__ */ H("button", {
477
478
  type: "button",
478
- onClick: () => V(`/apps/${K.id}/edit`),
479
+ onClick: () => B(`/apps/${G.id}/edit`),
479
480
  className: "mt-2 inline-flex items-center gap-1 text-xs font-medium text-primary underline",
480
481
  children: m("devportal.editAndResubmit", "Edit app and re-submit →")
481
482
  })
482
483
  ]
483
484
  })]
484
485
  }),
485
- K.status === "PUBLISHED" && /* @__PURE__ */ W("div", {
486
+ G.status === "PUBLISHED" && /* @__PURE__ */ U("div", {
486
487
  className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle p-4",
487
- children: [/* @__PURE__ */ U(he, {
488
+ children: [/* @__PURE__ */ H(_e, {
488
489
  size: 18,
489
490
  className: "text-status-success-text mt-0.5 flex-shrink-0"
490
- }), /* @__PURE__ */ W("div", {
491
+ }), /* @__PURE__ */ U("div", {
491
492
  className: "text-sm",
492
- children: [/* @__PURE__ */ U("p", {
493
+ children: [/* @__PURE__ */ H("p", {
493
494
  className: "font-medium text-status-success-text",
494
495
  children: m("devportal.liveInStore", "Live in the Store")
495
- }), /* @__PURE__ */ U("p", {
496
+ }), /* @__PURE__ */ H("p", {
496
497
  className: "mt-0.5 text-text-secondary",
497
498
  children: m("devportal.liveInStoreDesc", "Your app is published and visible to users in the marketplace.")
498
499
  })]
499
500
  })]
500
501
  }),
501
- K.status === "UNLISTED" && /* @__PURE__ */ W("div", {
502
+ G.status === "UNLISTED" && /* @__PURE__ */ U("div", {
502
503
  className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
503
- children: [/* @__PURE__ */ U(P, {
504
+ children: [/* @__PURE__ */ H(P, {
504
505
  size: 18,
505
506
  className: "text-status-warning-text mt-0.5 flex-shrink-0"
506
- }), /* @__PURE__ */ W("div", {
507
+ }), /* @__PURE__ */ U("div", {
507
508
  className: "text-sm",
508
509
  children: [
509
- /* @__PURE__ */ U("p", {
510
+ /* @__PURE__ */ H("p", {
510
511
  className: "font-medium text-status-warning-text",
511
512
  children: m("devportal.delistedFromStore", "Delisted from the Store")
512
513
  }),
513
- /* @__PURE__ */ U("p", {
514
+ /* @__PURE__ */ H("p", {
514
515
  className: "mt-0.5 text-text-secondary",
515
516
  children: m("devportal.delistedFromStoreDesc", "Your app has been removed from the marketplace and is no longer visible to new users. Existing installs continue to work.")
516
517
  }),
517
- K.reviewNotes && /* @__PURE__ */ W("p", {
518
+ G.reviewNotes && /* @__PURE__ */ U("p", {
518
519
  className: "mt-2 rounded-md bg-status-warning-bg px-3 py-2 font-mono text-xs text-status-warning-text",
519
520
  children: [
520
521
  m("devportal.delistReason", "Reason"),
521
522
  ": ",
522
- K.reviewNotes
523
+ G.reviewNotes
523
524
  ]
524
525
  })
525
526
  ]
526
527
  })]
527
528
  }),
528
- (K.status === "DRAFT" || K.status === "REJECTED") && !Q && (() => {
529
- let e = !!K.description?.trim() && !!K.category && !!K.iconUrl && (K.visibility === "PUBLIC" || K.visibility === "UNLISTED"), n = !q && !J || Qe > 0, r = [
530
- !K.description?.trim() && "Add a full description",
531
- !K.category && "Select a category",
532
- !K.iconUrl && "Upload an app icon",
533
- (K.visibility === "PRIVATE" || K.visibility === "INTERNAL") && "Set to Public (marketplace) or Unlisted (share via link) — Private and Internal block review submission"
529
+ (G.status === "DRAFT" || G.status === "REJECTED") && !Q && (() => {
530
+ let e = !!G.description?.trim() && !!G.category && !!G.iconUrl && (G.visibility === "PUBLIC" || G.visibility === "UNLISTED"), n = !K && !q || J > 0, r = [
531
+ !G.description?.trim() && "Add a full description",
532
+ !G.category && "Select a category",
533
+ !G.iconUrl && "Upload an app icon",
534
+ (G.visibility === "PRIVATE" || G.visibility === "INTERNAL") && "Set to Public (marketplace) or Unlisted (share via link) — Private and Internal block review submission"
534
535
  ].filter(Boolean), i = [
535
536
  {
536
537
  id: "store",
@@ -539,14 +540,14 @@ var Ke = [
539
540
  done: e,
540
541
  onClick: () => D("store-listing")
541
542
  },
542
- ...q ? [{
543
+ ...K ? [{
543
544
  id: "version",
544
545
  label: m("devportal.setupVersionStep", "Upload a Version"),
545
- hint: n ? m("devportal.done", "Done") : K.appType === "NODE" ? m("devportal.uploadVersionHint", "Upload your ZIP bundle and manifest") : m("devportal.uploadManifestVersionHint", "Upload your manifest JSON"),
546
+ hint: n ? m("devportal.done", "Done") : G.appType === "NODE" ? m("devportal.uploadVersionHint", "Upload your ZIP bundle and manifest") : m("devportal.uploadManifestVersionHint", "Upload your manifest JSON"),
546
547
  done: n,
547
548
  onClick: () => D("versions")
548
549
  }] : [],
549
- ...J ? [{
550
+ ...q ? [{
550
551
  id: "version",
551
552
  label: m("devportal.setupIntegrationVersionStep", "Publish a Version"),
552
553
  hint: n ? m("devportal.done", "Done") : m("devportal.integrationVersionHint", "Define required scopes and publish your first API version"),
@@ -576,27 +577,27 @@ var Ke = [
576
577
  {
577
578
  id: "submit",
578
579
  label: m("devportal.submitForReview", "Submit for Review"),
579
- hint: Q ? m("devportal.readyToSubmit", "Ready — click Submit for Review above") : K.description?.trim() ? K.category ? K.iconUrl ? K.visibility === "PRIVATE" || K.visibility === "INTERNAL" ? m("devportal.hintPrivateVisibility", "Set visibility to Public (marketplace) or Unlisted (share via link) — Private and Internal cannot be submitted") : (q || J) && Qe === 0 ? m("devportal.hintMissingVersion", "Upload at least one version") : Z ? Y && !X ? m("devportal.hintMissingBilling", "Link a billing account in the Pricing tab to receive payouts") : m("devportal.completeStepsFirst", "Complete the steps above first") : m("devportal.hintMissingPricing", "Choose Free or set a credit price in the Pricing tab") : m("devportal.hintMissingIcon", "Upload an app icon on the Store Listing tab") : m("devportal.hintMissingCategory", "Select a category on the Store Listing tab") : m("devportal.hintMissingDescription", "Add a full description on the Store Listing tab"),
580
+ hint: Q ? m("devportal.readyToSubmit", "Ready — click Submit for Review above") : G.description?.trim() ? G.category ? G.iconUrl ? G.visibility === "PRIVATE" || G.visibility === "INTERNAL" ? m("devportal.hintPrivateVisibility", "Set visibility to Public (marketplace) or Unlisted (share via link) — Private and Internal cannot be submitted") : (K || q) && J === 0 ? m("devportal.hintMissingVersion", "Upload at least one version") : Z ? Y && !X ? m("devportal.hintMissingBilling", "Link a billing account in the Pricing tab to receive payouts") : m("devportal.completeStepsFirst", "Complete the steps above first") : m("devportal.hintMissingPricing", "Choose Free or set a credit price in the Pricing tab") : m("devportal.hintMissingIcon", "Upload an app icon on the Store Listing tab") : m("devportal.hintMissingCategory", "Select a category on the Store Listing tab") : m("devportal.hintMissingDescription", "Add a full description on the Store Listing tab"),
580
581
  done: !1,
581
582
  onClick: void 0
582
583
  }
583
584
  ], a = i.filter((e) => e.done).length;
584
- return /* @__PURE__ */ W("div", {
585
+ return /* @__PURE__ */ U("div", {
585
586
  className: "rounded-xl border border-border-subtle bg-bg-surface shadow-sm",
586
- children: [/* @__PURE__ */ U("div", {
587
+ children: [/* @__PURE__ */ H("div", {
587
588
  className: "flex items-center justify-between border-b border-border-subtle px-5 py-4",
588
- children: /* @__PURE__ */ W("div", {
589
+ children: /* @__PURE__ */ U("div", {
589
590
  className: "flex items-center gap-3",
590
- children: [/* @__PURE__ */ U("div", {
591
+ children: [/* @__PURE__ */ H("div", {
591
592
  className: "flex h-8 w-8 items-center justify-center rounded-full bg-action-primary-bg/10",
592
- children: /* @__PURE__ */ U(Me, {
593
+ children: /* @__PURE__ */ H(Pe, {
593
594
  size: 16,
594
595
  className: "text-primary"
595
596
  })
596
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
597
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
597
598
  className: "text-sm font-semibold text-text-primary",
598
599
  children: m("devportal.completeSetup", "Complete your app setup")
599
- }), /* @__PURE__ */ W("p", {
600
+ }), /* @__PURE__ */ U("p", {
600
601
  className: "text-xs text-text-secondary",
601
602
  children: [
602
603
  a,
@@ -608,29 +609,29 @@ var Ke = [
608
609
  ]
609
610
  })] })]
610
611
  })
611
- }), /* @__PURE__ */ U("div", {
612
+ }), /* @__PURE__ */ H("div", {
612
613
  className: "divide-y divide-border-subtle",
613
- children: i.map((e, n) => /* @__PURE__ */ W("button", {
614
+ children: i.map((e, n) => /* @__PURE__ */ U("button", {
614
615
  type: "button",
615
616
  onClick: e.onClick,
616
617
  disabled: !e.onClick,
617
618
  className: t("w-full flex items-center gap-4 px-5 py-4 text-left transition-colors", e.onClick ? "hover:bg-bg-sunken/40 cursor-pointer" : "cursor-default opacity-60"),
618
619
  children: [
619
- /* @__PURE__ */ U("div", {
620
+ /* @__PURE__ */ H("div", {
620
621
  className: t("flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-bold", e.done ? "bg-status-success-bg text-status-success-text" : "border-2 border-border-subtle bg-bg-sunken text-text-secondary"),
621
- children: e.done ? /* @__PURE__ */ U(F, { size: 13 }) : n + 1
622
+ children: e.done ? /* @__PURE__ */ H(F, { size: 13 }) : n + 1
622
623
  }),
623
- /* @__PURE__ */ W("div", {
624
+ /* @__PURE__ */ U("div", {
624
625
  className: "flex-1 min-w-0",
625
- children: [/* @__PURE__ */ U("p", {
626
+ children: [/* @__PURE__ */ H("p", {
626
627
  className: t("text-sm font-medium", e.done ? "text-text-secondary line-through" : "text-text-primary"),
627
628
  children: e.label
628
- }), e.hint && !e.done && /* @__PURE__ */ U("p", {
629
+ }), e.hint && !e.done && /* @__PURE__ */ H("p", {
629
630
  className: "mt-0.5 text-xs text-text-secondary truncate",
630
631
  children: e.hint
631
632
  })]
632
633
  }),
633
- e.onClick && !e.done && /* @__PURE__ */ U(ge, {
634
+ e.onClick && !e.done && /* @__PURE__ */ H(ve, {
634
635
  size: 16,
635
636
  className: "flex-shrink-0 text-text-secondary"
636
637
  })
@@ -639,198 +640,198 @@ var Ke = [
639
640
  })]
640
641
  });
641
642
  })(),
642
- /* @__PURE__ */ U("div", {
643
+ /* @__PURE__ */ H("div", {
643
644
  className: "border-b",
644
- children: /* @__PURE__ */ U("nav", {
645
+ children: /* @__PURE__ */ H("nav", {
645
646
  className: "-mb-px flex gap-4 overflow-x-auto",
646
647
  role: "tablist",
647
648
  "aria-label": m("devportal.applicationSections", "Application sections"),
648
- children: Ke.filter((e) => !(q && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground" || e.id === "oauth" || e.id === "api-keys") || !q && !J && e.id === "versions" || !J && (e.id === "oauth" || e.id === "api-keys"))).map((e) => {
649
+ children: Ye.filter((e) => !(K && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground" || e.id === "oauth" || e.id === "api-keys") || !K && !q && e.id === "versions" || !q && (e.id === "oauth" || e.id === "api-keys"))).map((e) => {
649
650
  let n = e.icon;
650
- return /* @__PURE__ */ W("button", {
651
+ return /* @__PURE__ */ U("button", {
651
652
  id: `application-tab-${e.id}`,
652
653
  role: "tab",
653
654
  "aria-selected": S === e.id,
654
655
  "aria-controls": `application-panel-${e.id}`,
655
656
  onClick: () => D(e.id),
656
657
  className: t("flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors", S === e.id ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary hover:border-muted-foreground"),
657
- children: [/* @__PURE__ */ U(n, { size: 16 }), e.label]
658
+ children: [/* @__PURE__ */ H(n, { size: 16 }), e.label]
658
659
  }, e.id);
659
660
  })
660
661
  })
661
662
  }),
662
- /* @__PURE__ */ W("div", {
663
+ /* @__PURE__ */ U("div", {
663
664
  className: "mt-6",
664
665
  id: `application-panel-${S}`,
665
666
  role: "tabpanel",
666
667
  "aria-labelledby": `application-tab-${S}`,
667
668
  tabIndex: 0,
668
669
  children: [
669
- S === "overview" && /* @__PURE__ */ U(it, {
670
- app: K,
670
+ S === "overview" && /* @__PURE__ */ H(ot, {
671
+ app: G,
671
672
  appId: b,
672
- refetch: () => void I()
673
+ refetch: () => void me()
673
674
  }),
674
- S === "permissions" && /* @__PURE__ */ U(xt, {
675
- app: K,
676
- versionScopes: M?.application?.versions?.edges?.[0]?.node?.requiredScopes ?? [],
677
- locked: K.status === "PUBLISHED" || K.status === "APPROVED" || K.status === "ACTIVE",
675
+ S === "permissions" && /* @__PURE__ */ H(xt, {
676
+ app: G,
677
+ versionScopes: j?.application?.versions?.edges?.[0]?.node?.requiredScopes ?? [],
678
+ locked: G.status === "PUBLISHED" || G.status === "APPROVED" || G.status === "ACTIVE",
678
679
  onNavigateToVersions: () => D("versions")
679
680
  }),
680
- S === "webhooks" && /* @__PURE__ */ U(tt, {
681
- appId: K.id,
682
- onNavigate: V
681
+ S === "webhooks" && /* @__PURE__ */ H(rt, {
682
+ appId: G.id,
683
+ onNavigate: B
683
684
  }),
684
- S === "delegations" && /* @__PURE__ */ U(nt, {
685
- authAppId: K.appId || void 0,
686
- appName: K.name,
687
- onGrantDelegation: () => j(!0),
688
- onNavigate: V
685
+ S === "delegations" && /* @__PURE__ */ H(it, {
686
+ authAppId: G.appId || void 0,
687
+ appName: G.name,
688
+ onGrantDelegation: () => fe(!0),
689
+ onNavigate: B
689
690
  }),
690
- S === "analytics" && /* @__PURE__ */ U(rt, { appId: K.id }),
691
- S === "playground" && /* @__PURE__ */ U(lt, { app: K }),
692
- S === "oauth" && /* @__PURE__ */ U(Xe, {
693
- appId: K.id,
694
- onNavigate: V
691
+ S === "analytics" && /* @__PURE__ */ H(at, { appId: G.id }),
692
+ S === "playground" && /* @__PURE__ */ H(dt, { app: G }),
693
+ S === "oauth" && /* @__PURE__ */ H(Ze, {
694
+ appId: G.id,
695
+ onNavigate: B
695
696
  }),
696
- S === "api-keys" && /* @__PURE__ */ U(Ze, {
697
- appId: K.id,
698
- onNavigate: V
697
+ S === "api-keys" && /* @__PURE__ */ H(Qe, {
698
+ appId: G.id,
699
+ onNavigate: B
699
700
  }),
700
- S === "store-listing" && /* @__PURE__ */ U(ht, {
701
- app: K,
702
- versionCount: M?.application?.versions?.totalCount ?? 0,
703
- isPackageApp: q,
701
+ S === "store-listing" && /* @__PURE__ */ H(ht, {
702
+ app: G,
703
+ versionCount: j?.application?.versions?.totalCount ?? 0,
704
+ isPackageApp: K,
704
705
  pricingDone: Z,
705
- onNavigateToVersions: q || J ? () => D("versions") : void 0,
706
+ onNavigateToVersions: K || q ? () => D("versions") : void 0,
706
707
  onNavigateToPricing: () => D("pricing"),
707
- onNavigateToSubmission: () => V(`/apps/${K.id}/store-submission`)
708
+ onNavigateToSubmission: () => B(`/apps/${G.id}/store-submission`)
708
709
  }),
709
- S === "pricing" && /* @__PURE__ */ U($e, {
710
- app: K,
710
+ S === "pricing" && /* @__PURE__ */ H(tt, {
711
+ app: G,
711
712
  platformFeeRate: pt,
712
713
  billingAccountLinked: X,
713
- onNavigateToRevenue: () => V("/revenue"),
714
+ onNavigateToRevenue: () => B("/revenue"),
714
715
  isReadyToSubmit: Q
715
716
  }),
716
- S === "versions" && /* @__PURE__ */ U(et, {
717
- appId: K.id,
718
- onNavigate: V,
717
+ S === "versions" && /* @__PURE__ */ H(nt, {
718
+ appId: G.id,
719
+ onNavigate: B,
719
720
  pricingDone: Z,
720
721
  onNavigateToPricing: () => D("pricing")
721
722
  })
722
723
  ]
723
724
  }),
724
- /* @__PURE__ */ U(ae, {
725
+ /* @__PURE__ */ H(ae, {
725
726
  open: te,
726
727
  onOpenChange: ne,
727
- onConfirm: Ie,
728
+ onConfirm: Le,
728
729
  title: m("devportal.rotateAppSecret", "Rotate App Secret"),
729
730
  description: m("devportal.rotateAppSecretDescription", "This will generate a new client secret and invalidate the current one. All existing integrations using the old secret will stop working immediately."),
730
731
  confirmLabel: m("devportal.rotateSecret", "Rotate Secret"),
731
732
  cancelLabel: m("devportal.cancel", "Cancel"),
732
733
  variant: "warning",
733
- loading: L
734
+ loading: ye
734
735
  }),
735
- /* @__PURE__ */ U(ae, {
736
+ /* @__PURE__ */ H(ae, {
736
737
  open: k,
737
738
  onOpenChange: ie,
738
- onConfirm: Be,
739
+ onConfirm: Re,
739
740
  title: m("devportal.deactivateApplication", "Deactivate Application"),
740
741
  description: m("devportal.deactivateApplicationDescription", "This will deactivate the application. All OAuth clients, API keys, and webhooks associated with this app will stop functioning. This action can be reversed by reactivating the app."),
741
742
  confirmLabel: m("devportal.deactivate", "Deactivate"),
742
743
  cancelLabel: m("devportal.cancel", "Cancel"),
743
744
  variant: "destructive",
744
- loading: Se
745
+ loading: I
745
746
  }),
746
- /* @__PURE__ */ U(ae, {
747
+ /* @__PURE__ */ H(ae, {
747
748
  open: Ue,
748
749
  onOpenChange: We,
749
- onConfirm: () => Ve(Ge || void 0),
750
+ onConfirm: () => ze(Ke || void 0),
750
751
  title: m("devportal.testInWorkspaceChooseVersion", "Test a Version"),
751
752
  description: m("devportal.testInWorkspaceChooseVersionDescription", "Choose which version to install into your test workspace. This does not affect what other users see — it only installs the selected version for you to try here."),
752
753
  confirmLabel: m("devportal.testInWorkspace", "Test in Workspace"),
753
754
  cancelLabel: m("devportal.cancel", "Cancel"),
754
- loading: De,
755
- children: /* @__PURE__ */ U(re, {
755
+ loading: Oe,
756
+ children: /* @__PURE__ */ H(re, {
756
757
  label: m("devportal.version", "Version"),
757
- value: Ge,
758
+ value: Ke,
758
759
  onChange: (e) => qe(e.target.value),
759
- options: ot.map((e) => ({
760
+ options: et.map((e) => ({
760
761
  value: e.node.version,
761
762
  label: e.node.isLatest ? `${e.node.version} — ${m("devportal.latest", "latest")} (${e.node.status})` : `${e.node.version} (${e.node.status})`
762
763
  }))
763
764
  })
764
765
  }),
765
- /* @__PURE__ */ U(oe, {
766
+ /* @__PURE__ */ H(oe, {
766
767
  open: de,
767
- onOpenChange: j,
768
- appId: K.appId || "",
769
- appName: K.name,
770
- appScopes: K.scopes?.map((e) => e.scope) ?? [],
768
+ onOpenChange: fe,
769
+ appId: G.appId || "",
770
+ appName: G.name,
771
+ appScopes: G.scopes?.map((e) => e.scope) ?? [],
771
772
  onSuccess: () => {
772
- j(!1);
773
+ fe(!1);
773
774
  }
774
775
  })
775
776
  ]
776
777
  });
777
- }, Xe = ({ onNavigate: e }) => {
778
- let { t } = G(), n = (e, n) => {
778
+ }, Ze = ({ onNavigate: e }) => {
779
+ let { t } = W(), n = (e, n) => {
779
780
  let r = t(e);
780
781
  return r === e ? n : r;
781
782
  };
782
- return /* @__PURE__ */ W("div", {
783
+ return /* @__PURE__ */ U("div", {
783
784
  className: "space-y-4 py-4 text-center",
784
785
  children: [
785
- /* @__PURE__ */ U(je, { className: "mx-auto h-10 w-10 text-text-secondary" }),
786
- /* @__PURE__ */ U("h3", {
786
+ /* @__PURE__ */ H(z, { className: "mx-auto h-10 w-10 text-text-secondary" }),
787
+ /* @__PURE__ */ H("h3", {
787
788
  className: "font-medium",
788
789
  children: n("devportal.oauthApps", "OAuth Apps")
789
790
  }),
790
- /* @__PURE__ */ U("p", {
791
+ /* @__PURE__ */ H("p", {
791
792
  className: "text-sm text-text-secondary",
792
793
  children: n("devportal.oauthAppsManagedCentrally", "OAuth apps are now managed centrally. Visit the OAuth Apps page to create and manage your apps.")
793
794
  }),
794
- /* @__PURE__ */ W("button", {
795
+ /* @__PURE__ */ U("button", {
795
796
  onClick: () => e("/oauth"),
796
797
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
797
- children: [/* @__PURE__ */ U(L, { size: 16 }), n("devportal.manageOAuthApps", "Manage OAuth Apps")]
798
+ children: [/* @__PURE__ */ H(I, { size: 16 }), n("devportal.manageOAuthApps", "Manage OAuth Apps")]
798
799
  })
799
800
  ]
800
801
  });
801
- }, Ze = ({ onNavigate: e }) => {
802
- let { t } = G(), n = (e, n) => {
802
+ }, Qe = ({ onNavigate: e }) => {
803
+ let { t } = W(), n = (e, n) => {
803
804
  let r = t(e);
804
805
  return r === e ? n : r;
805
806
  };
806
- return /* @__PURE__ */ W("div", {
807
+ return /* @__PURE__ */ U("div", {
807
808
  className: "space-y-4 py-4 text-center",
808
809
  children: [
809
- /* @__PURE__ */ U(Ce, { className: "mx-auto h-10 w-10 text-text-secondary" }),
810
- /* @__PURE__ */ U("h3", {
810
+ /* @__PURE__ */ H(Ee, { className: "mx-auto h-10 w-10 text-text-secondary" }),
811
+ /* @__PURE__ */ H("h3", {
811
812
  className: "font-medium",
812
813
  children: n("devportal.apiKeys", "API Keys")
813
814
  }),
814
- /* @__PURE__ */ U("p", {
815
+ /* @__PURE__ */ H("p", {
815
816
  className: "text-sm text-text-secondary",
816
817
  children: n("devportal.apiKeysManagedCentrally", "API keys are now managed centrally. Visit the API Keys page to generate and manage your keys.")
817
818
  }),
818
- /* @__PURE__ */ W("button", {
819
+ /* @__PURE__ */ U("button", {
819
820
  onClick: () => e("/api-keys"),
820
821
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
821
- children: [/* @__PURE__ */ U(L, { size: 16 }), n("devportal.manageApiKeys", "Manage API Keys")]
822
+ children: [/* @__PURE__ */ H(I, { size: 16 }), n("devportal.manageApiKeys", "Manage API Keys")]
822
823
  })
823
824
  ]
824
825
  });
825
- }, q = .01, J = (e) => e * q, Qe = (e) => Math.round(e / q), $e = ({ app: e, platformFeeRate: n, billingAccountLinked: r, onNavigateToRevenue: i, isReadyToSubmit: a = !1 }) => {
826
- let { t: o } = G(), s = (e, t) => {
826
+ }, J = .01, $e = (e) => e * J, et = (e) => Math.round(e / J), tt = ({ app: e, platformFeeRate: n, billingAccountLinked: r, onNavigateToRevenue: i, isReadyToSubmit: a = !1 }) => {
827
+ let { t: o } = W(), s = (e, t) => {
827
828
  let n = o(e);
828
829
  return n === e ? t : n;
829
830
  }, c = e.pricingDetails ?? {}, [l, u] = N({
830
831
  pricingType: e.pricingType ?? "FREE",
831
832
  price: typeof c.price == "number" ? String(c.price) : ""
832
- }), [d, f] = N(!1), [p] = b(), m = M(e);
833
- m.current = e, de(() => {
833
+ }), [d, f] = N(!1), [p] = b(), m = pe(e);
834
+ m.current = e, j(() => {
834
835
  let e = m.current.pricingDetails ?? {};
835
836
  u({
836
837
  pricingType: m.current.pricingType ?? "FREE",
@@ -862,33 +863,33 @@ var Ke = [
862
863
  } finally {
863
864
  f(!1);
864
865
  }
865
- }, _ = l.pricingType !== "FREE", v = parseInt(l.price, 10), y = _ && !isNaN(v) && v > 0, x = y ? J(v) : 0, S = y ? Math.round(v * n) : 0, C = J(S), w = y ? v - S : 0, T = J(w), E = (e) => "$" + e.toLocaleString("en-US", {
866
+ }, _ = l.pricingType !== "FREE", v = parseInt(l.price, 10), y = _ && !isNaN(v) && v > 0, x = y ? $e(v) : 0, S = y ? Math.round(v * n) : 0, C = $e(S), w = y ? v - S : 0, T = $e(w), E = (e) => "$" + e.toLocaleString("en-US", {
866
867
  minimumFractionDigits: 2,
867
868
  maximumFractionDigits: 2
868
869
  }), D = (e) => e.toLocaleString("en-US") + " cr";
869
- return /* @__PURE__ */ W("div", {
870
+ return /* @__PURE__ */ U("div", {
870
871
  className: "space-y-8",
871
872
  children: [
872
- /* @__PURE__ */ W("div", {
873
+ /* @__PURE__ */ U("div", {
873
874
  className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
874
- children: [/* @__PURE__ */ U(I, {
875
+ children: [/* @__PURE__ */ H(ye, {
875
876
  size: 16,
876
877
  className: "mt-0.5 shrink-0 text-primary"
877
- }), /* @__PURE__ */ W("p", {
878
+ }), /* @__PURE__ */ U("p", {
878
879
  className: "text-sm text-text-secondary",
879
880
  children: [
880
- /* @__PURE__ */ U("span", {
881
+ /* @__PURE__ */ H("span", {
881
882
  className: "font-medium text-text-primary",
882
883
  children: "Platform credits"
883
884
  }),
884
885
  " ",
885
886
  "are the currency of the Burdenoff marketplace.",
886
887
  " ",
887
- /* @__PURE__ */ W("span", {
888
+ /* @__PURE__ */ U("span", {
888
889
  className: "font-medium",
889
890
  children: [
890
891
  "1 credit = ",
891
- E(q),
892
+ E(J),
892
893
  " USD."
893
894
  ]
894
895
  }),
@@ -897,41 +898,41 @@ var Ke = [
897
898
  ]
898
899
  })]
899
900
  }),
900
- /* @__PURE__ */ W("div", {
901
+ /* @__PURE__ */ U("div", {
901
902
  className: "space-y-3",
902
- children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h2", {
903
+ children: [/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h2", {
903
904
  className: "text-lg font-semibold",
904
905
  children: s("devportal.howMonetizationWorks", "How App Monetization Works")
905
- }), /* @__PURE__ */ U("p", {
906
+ }), /* @__PURE__ */ H("p", {
906
907
  className: "mt-1 text-sm text-text-secondary",
907
908
  children: s("devportal.monetizationDesc", "Earn revenue when users install or purchase your app. Here's exactly how the money flows.")
908
- })] }), /* @__PURE__ */ W("div", {
909
+ })] }), /* @__PURE__ */ U("div", {
909
910
  className: "grid gap-4 sm:grid-cols-3",
910
911
  children: [
911
- /* @__PURE__ */ W("div", {
912
+ /* @__PURE__ */ U("div", {
912
913
  className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
913
- children: [/* @__PURE__ */ U("div", {
914
+ children: [/* @__PURE__ */ H("div", {
914
915
  className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle",
915
- children: /* @__PURE__ */ U(Ne, {
916
+ children: /* @__PURE__ */ H(Fe, {
916
917
  size: 18,
917
918
  className: "text-status-success-text"
918
919
  })
919
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("p", {
920
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ U("p", {
920
921
  className: "font-semibold",
921
922
  children: [(100 - n * 100).toFixed(0), "% revenue share"]
922
- }), /* @__PURE__ */ W("p", {
923
+ }), /* @__PURE__ */ U("p", {
923
924
  className: "mt-1 text-sm text-text-secondary",
924
925
  children: [
925
926
  "You keep",
926
927
  " ",
927
- /* @__PURE__ */ W("span", {
928
+ /* @__PURE__ */ U("span", {
928
929
  className: "font-medium text-status-success-text",
929
930
  children: [(100 - n * 100).toFixed(0), "%"]
930
931
  }),
931
932
  " ",
932
933
  "of every sale in credits. The platform retains a",
933
934
  " ",
934
- /* @__PURE__ */ W("span", {
935
+ /* @__PURE__ */ U("span", {
935
936
  className: "font-medium",
936
937
  children: [(n * 100).toFixed(0), "%"]
937
938
  }),
@@ -940,28 +941,28 @@ var Ke = [
940
941
  ]
941
942
  })] })]
942
943
  }),
943
- /* @__PURE__ */ W("div", {
944
+ /* @__PURE__ */ U("div", {
944
945
  className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
945
- children: [/* @__PURE__ */ U("div", {
946
+ children: [/* @__PURE__ */ H("div", {
946
947
  className: "flex h-9 w-9 items-center justify-center rounded-lg bg-action-primary-bg/10",
947
- children: /* @__PURE__ */ U(Fe, {
948
+ children: /* @__PURE__ */ H(Le, {
948
949
  size: 18,
949
950
  className: "text-primary"
950
951
  })
951
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
952
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
952
953
  className: "font-semibold",
953
954
  children: "Credits → cash via billing"
954
- }), /* @__PURE__ */ W("p", {
955
+ }), /* @__PURE__ */ U("p", {
955
956
  className: "mt-1 text-sm text-text-secondary",
956
957
  children: [
957
958
  "Every sale instantly deposits your earned credits into your linked billing account. You can spend them on platform services or request a cash withdrawal. Track everything on the",
958
959
  " ",
959
- i ? /* @__PURE__ */ U("button", {
960
+ i ? /* @__PURE__ */ H("button", {
960
961
  type: "button",
961
962
  onClick: i,
962
963
  className: "font-medium text-primary underline-offset-2 hover:underline",
963
964
  children: "Revenue page"
964
- }) : /* @__PURE__ */ U("span", {
965
+ }) : /* @__PURE__ */ H("span", {
965
966
  className: "font-medium text-primary",
966
967
  children: "Revenue page"
967
968
  }),
@@ -969,18 +970,18 @@ var Ke = [
969
970
  ]
970
971
  })] })]
971
972
  }),
972
- /* @__PURE__ */ W("div", {
973
+ /* @__PURE__ */ U("div", {
973
974
  className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
974
- children: [/* @__PURE__ */ U("div", {
975
+ children: [/* @__PURE__ */ H("div", {
975
976
  className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-warning-bg-subtle",
976
- children: /* @__PURE__ */ U(xe, {
977
+ children: /* @__PURE__ */ H(we, {
977
978
  size: 18,
978
979
  className: "text-status-warning-text"
979
980
  })
980
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
981
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
981
982
  className: "font-semibold",
982
983
  children: "Reach the full marketplace"
983
- }), /* @__PURE__ */ U("p", {
984
+ }), /* @__PURE__ */ H("p", {
984
985
  className: "mt-1 text-sm text-text-secondary",
985
986
  children: "Any user with platform credits can discover and install your app directly from the marketplace. Free apps maximise reach; paid apps let you monetise your work."
986
987
  })] })]
@@ -988,52 +989,52 @@ var Ke = [
988
989
  ]
989
990
  })]
990
991
  }),
991
- /* @__PURE__ */ W("div", {
992
+ /* @__PURE__ */ U("div", {
992
993
  className: "space-y-4",
993
994
  children: [
994
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h3", {
995
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h3", {
995
996
  className: "text-base font-semibold",
996
997
  children: s("devportal.setPricingTitle", "Set Your Price")
997
- }), /* @__PURE__ */ W("p", {
998
+ }), /* @__PURE__ */ U("p", {
998
999
  className: "mt-0.5 text-sm text-text-secondary",
999
1000
  children: [
1000
1001
  "Choose ",
1001
- /* @__PURE__ */ U("strong", { children: "Free" }),
1002
+ /* @__PURE__ */ H("strong", { children: "Free" }),
1002
1003
  " to maximise installs, or",
1003
1004
  " ",
1004
- /* @__PURE__ */ U("strong", { children: "Paid" }),
1005
+ /* @__PURE__ */ H("strong", { children: "Paid" }),
1005
1006
  " to earn credits on every install. Paid apps require a linked billing account before publishing."
1006
1007
  ]
1007
1008
  })] }),
1008
- /* @__PURE__ */ U("div", {
1009
+ /* @__PURE__ */ H("div", {
1009
1010
  className: "flex flex-wrap gap-2",
1010
- children: ft.map((e) => /* @__PURE__ */ U("button", {
1011
+ children: ft.map((e) => /* @__PURE__ */ H("button", {
1011
1012
  type: "button",
1012
1013
  onClick: () => h("pricingType", e.value),
1013
1014
  className: t("rounded-md border px-4 py-2 text-sm font-medium transition-colors", l.pricingType === e.value ? "bg-action-primary-bg text-action-primary-text border-primary" : "hover:bg-bg-sunken border-border-subtle"),
1014
1015
  children: e.label
1015
1016
  }, e.value))
1016
1017
  }),
1017
- _ && /* @__PURE__ */ W("div", {
1018
+ _ && /* @__PURE__ */ U("div", {
1018
1019
  className: "space-y-4",
1019
1020
  children: [
1020
- /* @__PURE__ */ W("div", {
1021
+ /* @__PURE__ */ U("div", {
1021
1022
  className: "max-w-xs",
1022
1023
  children: [
1023
- /* @__PURE__ */ W("label", {
1024
+ /* @__PURE__ */ U("label", {
1024
1025
  className: "mb-1.5 block text-sm font-medium",
1025
1026
  children: [
1026
1027
  "Listing price",
1027
1028
  " ",
1028
- /* @__PURE__ */ U("span", {
1029
+ /* @__PURE__ */ H("span", {
1029
1030
  className: "text-text-tertiary font-normal",
1030
1031
  children: "(credits)"
1031
1032
  })
1032
1033
  ]
1033
1034
  }),
1034
- /* @__PURE__ */ W("div", {
1035
+ /* @__PURE__ */ U("div", {
1035
1036
  className: "relative flex items-center",
1036
- children: [/* @__PURE__ */ U("input", {
1037
+ children: [/* @__PURE__ */ H("input", {
1037
1038
  type: "number",
1038
1039
  min: 1,
1039
1040
  step: 1,
@@ -1041,69 +1042,69 @@ var Ke = [
1041
1042
  onChange: (e) => h("price", e.target.value),
1042
1043
  placeholder: "e.g. 1000",
1043
1044
  className: "w-full rounded-md border border-border-subtle bg-bg-input px-3 py-2 pr-20 text-sm focus:outline-none focus:ring-2 focus:ring-primary/50"
1044
- }), /* @__PURE__ */ U("span", {
1045
+ }), /* @__PURE__ */ H("span", {
1045
1046
  className: "pointer-events-none absolute right-3 text-xs text-text-tertiary",
1046
1047
  children: "credits"
1047
1048
  })]
1048
1049
  }),
1049
- y && /* @__PURE__ */ W("p", {
1050
+ y && /* @__PURE__ */ U("p", {
1050
1051
  className: "mt-1.5 text-xs text-text-secondary",
1051
1052
  children: [
1052
1053
  "≈ ",
1053
1054
  E(x),
1054
1055
  " USD at the current credit rate (1 cr =",
1055
1056
  " ",
1056
- E(q),
1057
+ E(J),
1057
1058
  ")"
1058
1059
  ]
1059
1060
  }),
1060
- /* @__PURE__ */ U("p", {
1061
+ /* @__PURE__ */ H("p", {
1061
1062
  className: "mt-1 text-xs text-text-tertiary",
1062
1063
  children: s("devportal.priceHint", "Set the number of credits a buyer spends to install your app")
1063
1064
  })
1064
1065
  ]
1065
1066
  }),
1066
- /* @__PURE__ */ W("div", {
1067
+ /* @__PURE__ */ U("div", {
1067
1068
  className: "flex items-center gap-2 text-xs text-text-secondary",
1068
- children: [/* @__PURE__ */ U("span", { children: "Quick convert:" }), [
1069
+ children: [/* @__PURE__ */ H("span", { children: "Quick convert:" }), [
1069
1070
  5,
1070
1071
  10,
1071
1072
  25,
1072
1073
  50
1073
- ].map((e) => /* @__PURE__ */ W("button", {
1074
+ ].map((e) => /* @__PURE__ */ U("button", {
1074
1075
  type: "button",
1075
- onClick: () => h("price", String(Qe(e))),
1076
+ onClick: () => h("price", String(et(e))),
1076
1077
  className: "rounded border border-border-subtle px-2 py-0.5 hover:bg-bg-sunken transition-colors",
1077
1078
  children: [
1078
1079
  "$",
1079
1080
  e,
1080
1081
  " = ",
1081
- Qe(e).toLocaleString(),
1082
+ et(e).toLocaleString(),
1082
1083
  " cr"
1083
1084
  ]
1084
1085
  }, e))]
1085
1086
  }),
1086
- y && /* @__PURE__ */ W("div", {
1087
+ y && /* @__PURE__ */ U("div", {
1087
1088
  className: "rounded-lg border border-border-subtle bg-bg-sunken p-4 space-y-3",
1088
1089
  children: [
1089
- /* @__PURE__ */ U("p", {
1090
+ /* @__PURE__ */ H("p", {
1090
1091
  className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
1091
1092
  children: s("devportal.revenueBreakdown", "Revenue Breakdown per Sale")
1092
1093
  }),
1093
- /* @__PURE__ */ W("div", {
1094
+ /* @__PURE__ */ U("div", {
1094
1095
  className: "space-y-2 text-sm",
1095
1096
  children: [
1096
- /* @__PURE__ */ W("div", {
1097
+ /* @__PURE__ */ U("div", {
1097
1098
  className: "flex items-center justify-between",
1098
- children: [/* @__PURE__ */ U("span", {
1099
+ children: [/* @__PURE__ */ H("span", {
1099
1100
  className: "text-text-secondary",
1100
1101
  children: "Buyer pays"
1101
- }), /* @__PURE__ */ W("span", {
1102
+ }), /* @__PURE__ */ U("span", {
1102
1103
  className: "font-medium tabular-nums",
1103
1104
  children: [
1104
1105
  D(v),
1105
1106
  " ",
1106
- /* @__PURE__ */ W("span", {
1107
+ /* @__PURE__ */ U("span", {
1107
1108
  className: "text-text-tertiary text-xs",
1108
1109
  children: [
1109
1110
  "(",
@@ -1114,12 +1115,12 @@ var Ke = [
1114
1115
  ]
1115
1116
  })]
1116
1117
  }),
1117
- /* @__PURE__ */ W("div", {
1118
+ /* @__PURE__ */ U("div", {
1118
1119
  className: "flex items-center justify-between text-status-error-text",
1119
- children: [/* @__PURE__ */ W("span", { children: [
1120
+ children: [/* @__PURE__ */ U("span", { children: [
1120
1121
  "Platform fee",
1121
1122
  " ",
1122
- /* @__PURE__ */ W("span", {
1123
+ /* @__PURE__ */ U("span", {
1123
1124
  className: "opacity-70",
1124
1125
  children: [
1125
1126
  "(",
@@ -1127,13 +1128,13 @@ var Ke = [
1127
1128
  "%)"
1128
1129
  ]
1129
1130
  })
1130
- ] }), /* @__PURE__ */ W("span", {
1131
+ ] }), /* @__PURE__ */ U("span", {
1131
1132
  className: "tabular-nums",
1132
1133
  children: [
1133
1134
  "− ",
1134
1135
  D(S),
1135
1136
  " ",
1136
- /* @__PURE__ */ W("span", {
1137
+ /* @__PURE__ */ U("span", {
1137
1138
  className: "text-xs opacity-70",
1138
1139
  children: [
1139
1140
  "(",
@@ -1144,14 +1145,14 @@ var Ke = [
1144
1145
  ]
1145
1146
  })]
1146
1147
  }),
1147
- /* @__PURE__ */ W("div", {
1148
+ /* @__PURE__ */ U("div", {
1148
1149
  className: "flex items-center justify-between border-t border-border-subtle pt-2 font-semibold text-status-success-text",
1149
- children: [/* @__PURE__ */ U("span", { children: "You earn" }), /* @__PURE__ */ W("span", {
1150
+ children: [/* @__PURE__ */ H("span", { children: "You earn" }), /* @__PURE__ */ U("span", {
1150
1151
  className: "tabular-nums",
1151
1152
  children: [
1152
1153
  D(w),
1153
1154
  " ",
1154
- /* @__PURE__ */ W("span", {
1155
+ /* @__PURE__ */ U("span", {
1155
1156
  className: "text-sm font-normal",
1156
1157
  children: ["≈ ", E(T)]
1157
1158
  })
@@ -1160,29 +1161,29 @@ var Ke = [
1160
1161
  })
1161
1162
  ]
1162
1163
  }),
1163
- /* @__PURE__ */ U("p", {
1164
+ /* @__PURE__ */ H("p", {
1164
1165
  className: "text-xs text-text-tertiary",
1165
1166
  children: "Credits are deposited to your billing account on each sale. Cash withdrawal is subject to platform terms and minimum payout thresholds."
1166
1167
  })
1167
1168
  ]
1168
1169
  }),
1169
- !r && /* @__PURE__ */ W("div", {
1170
+ !r && /* @__PURE__ */ U("div", {
1170
1171
  className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
1171
- children: [/* @__PURE__ */ U(P, {
1172
+ children: [/* @__PURE__ */ H(P, {
1172
1173
  size: 16,
1173
1174
  className: "mt-0.5 shrink-0 text-status-warning-text"
1174
- }), /* @__PURE__ */ W("div", {
1175
+ }), /* @__PURE__ */ U("div", {
1175
1176
  className: "flex-1 min-w-0",
1176
1177
  children: [
1177
- /* @__PURE__ */ U("p", {
1178
+ /* @__PURE__ */ H("p", {
1178
1179
  className: "text-sm font-medium text-status-warning-text",
1179
1180
  children: s("devportal.billingAccountRequired", "Billing account required to publish")
1180
1181
  }),
1181
- /* @__PURE__ */ U("p", {
1182
+ /* @__PURE__ */ H("p", {
1182
1183
  className: "mt-0.5 text-xs text-text-secondary",
1183
1184
  children: "Paid apps must have a billing account linked to your developer organization before you can submit for review. This is where your earned credits and cash withdrawals will be managed."
1184
1185
  }),
1185
- i && /* @__PURE__ */ U("button", {
1186
+ i && /* @__PURE__ */ H("button", {
1186
1187
  type: "button",
1187
1188
  onClick: i,
1188
1189
  className: "mt-2 text-xs font-medium text-primary hover:underline underline-offset-2",
@@ -1195,23 +1196,23 @@ var Ke = [
1195
1196
  })
1196
1197
  ]
1197
1198
  }),
1198
- /* @__PURE__ */ W("div", {
1199
+ /* @__PURE__ */ U("div", {
1199
1200
  className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
1200
- children: [/* @__PURE__ */ U("h3", {
1201
+ children: [/* @__PURE__ */ H("h3", {
1201
1202
  className: "text-sm font-semibold",
1202
1203
  children: s("devportal.termsTitle", "Developer & Marketplace Terms")
1203
- }), /* @__PURE__ */ W("ul", {
1204
+ }), /* @__PURE__ */ U("ul", {
1204
1205
  className: "space-y-2 text-sm text-text-secondary",
1205
1206
  children: [
1206
- /* @__PURE__ */ W("li", {
1207
+ /* @__PURE__ */ U("li", {
1207
1208
  className: "flex items-start gap-2",
1208
- children: [/* @__PURE__ */ U(F, {
1209
+ children: [/* @__PURE__ */ H(F, {
1209
1210
  size: 14,
1210
1211
  className: "mt-0.5 shrink-0 text-status-success-text"
1211
- }), /* @__PURE__ */ W("span", { children: [
1212
+ }), /* @__PURE__ */ U("span", { children: [
1212
1213
  "By publishing to the marketplace you agree to the",
1213
1214
  " ",
1214
- /* @__PURE__ */ U("a", {
1215
+ /* @__PURE__ */ H("a", {
1215
1216
  href: "/legal/developer-terms",
1216
1217
  target: "_blank",
1217
1218
  rel: "noopener noreferrer",
@@ -1221,29 +1222,29 @@ var Ke = [
1221
1222
  "."
1222
1223
  ] })]
1223
1224
  }),
1224
- /* @__PURE__ */ W("li", {
1225
+ /* @__PURE__ */ U("li", {
1225
1226
  className: "flex items-start gap-2",
1226
- children: [/* @__PURE__ */ U(F, {
1227
+ children: [/* @__PURE__ */ H(F, {
1227
1228
  size: 14,
1228
1229
  className: "mt-0.5 shrink-0 text-status-success-text"
1229
- }), /* @__PURE__ */ U("span", { children: "All prices are in platform credits. The USD equivalent is indicative only and may vary with the current credit rate." })]
1230
+ }), /* @__PURE__ */ H("span", { children: "All prices are in platform credits. The USD equivalent is indicative only and may vary with the current credit rate." })]
1230
1231
  }),
1231
- /* @__PURE__ */ W("li", {
1232
+ /* @__PURE__ */ U("li", {
1232
1233
  className: "flex items-start gap-2",
1233
- children: [/* @__PURE__ */ U(F, {
1234
+ children: [/* @__PURE__ */ H(F, {
1234
1235
  size: 14,
1235
1236
  className: "mt-0.5 shrink-0 text-status-success-text"
1236
- }), /* @__PURE__ */ U("span", { children: "Earnings are credited to your billing account per-sale. Cash withdrawals are subject to a minimum threshold and applicable taxes in your jurisdiction." })]
1237
+ }), /* @__PURE__ */ H("span", { children: "Earnings are credited to your billing account per-sale. Cash withdrawals are subject to a minimum threshold and applicable taxes in your jurisdiction." })]
1237
1238
  }),
1238
- /* @__PURE__ */ W("li", {
1239
+ /* @__PURE__ */ U("li", {
1239
1240
  className: "flex items-start gap-2",
1240
- children: [/* @__PURE__ */ U(F, {
1241
+ children: [/* @__PURE__ */ H(F, {
1241
1242
  size: 14,
1242
1243
  className: "mt-0.5 shrink-0 text-status-success-text"
1243
- }), /* @__PURE__ */ W("span", { children: [
1244
+ }), /* @__PURE__ */ U("span", { children: [
1244
1245
  "The platform reserves the right to adjust the credit rate, fee structure, or payout schedule with 30 days notice. See the",
1245
1246
  " ",
1246
- /* @__PURE__ */ U("a", {
1247
+ /* @__PURE__ */ H("a", {
1247
1248
  href: "/legal/marketplace-terms",
1248
1249
  target: "_blank",
1249
1250
  rel: "noopener noreferrer",
@@ -1257,26 +1258,26 @@ var Ke = [
1257
1258
  ]
1258
1259
  })]
1259
1260
  }),
1260
- /* @__PURE__ */ W("div", {
1261
+ /* @__PURE__ */ U("div", {
1261
1262
  className: "border-t border-border-subtle pt-6 space-y-4",
1262
- children: [/* @__PURE__ */ U("button", {
1263
+ children: [/* @__PURE__ */ H("button", {
1263
1264
  type: "button",
1264
1265
  onClick: () => void g(),
1265
1266
  disabled: d,
1266
1267
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
1267
- children: d ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
1268
+ children: d ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
1268
1269
  size: 16,
1269
1270
  className: "animate-spin"
1270
- }), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(I, { size: 16 }), s("devportal.savePricing", "Save Pricing")] })
1271
- }), a && /* @__PURE__ */ W("div", {
1271
+ }), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(ye, { size: 16 }), s("devportal.savePricing", "Save Pricing")] })
1272
+ }), a && /* @__PURE__ */ U("div", {
1272
1273
  className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle px-4 py-3",
1273
- children: [/* @__PURE__ */ U(F, {
1274
+ children: [/* @__PURE__ */ H(F, {
1274
1275
  size: 16,
1275
1276
  className: "mt-0.5 shrink-0 text-status-success-text"
1276
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1277
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1277
1278
  className: "text-sm font-medium text-status-success-text",
1278
1279
  children: s("devportal.allSetToSubmit", "You're all set!")
1279
- }), /* @__PURE__ */ U("p", {
1280
+ }), /* @__PURE__ */ H("p", {
1280
1281
  className: "mt-0.5 text-xs text-text-secondary",
1281
1282
  children: s("devportal.allSetDesc", "Store listing, versions, and pricing are complete. Head to the top of the page and click Submit for Review.")
1282
1283
  })] })]
@@ -1284,88 +1285,88 @@ var Ke = [
1284
1285
  })
1285
1286
  ]
1286
1287
  });
1287
- }, et = ({ appId: e, onNavigate: n, pricingDone: i = !1, onNavigateToPricing: a }) => {
1288
- let { t: o } = G(), s = (e, t) => {
1288
+ }, nt = ({ appId: e, onNavigate: n, pricingDone: i = !1, onNavigateToPricing: a }) => {
1289
+ let { t: o } = W(), s = (e, t) => {
1289
1290
  let n = o(e);
1290
1291
  return n === e ? t : n;
1291
1292
  }, { data: l, loading: u, error: d } = c({
1292
1293
  variables: { applicationId: e },
1293
1294
  fetchPolicy: "cache-and-network"
1294
1295
  });
1295
- if (u) return /* @__PURE__ */ U(Je, { message: s("devportal.loadingVersions", "Loading versions…") });
1296
- if (d) return /* @__PURE__ */ U(Ye, { message: d.message });
1296
+ if (u) return /* @__PURE__ */ H(G, { message: s("devportal.loadingVersions", "Loading versions…") });
1297
+ if (d) return /* @__PURE__ */ H(K, { message: d.message });
1297
1298
  let f = (l?.application?.versions?.edges ?? []).map((e) => e.node);
1298
- return /* @__PURE__ */ W("div", {
1299
+ return /* @__PURE__ */ U("div", {
1299
1300
  className: "space-y-4",
1300
1301
  children: [
1301
- /* @__PURE__ */ W("div", {
1302
+ /* @__PURE__ */ U("div", {
1302
1303
  className: "flex items-center justify-between",
1303
- children: [/* @__PURE__ */ W("p", {
1304
+ children: [/* @__PURE__ */ U("p", {
1304
1305
  className: "text-sm text-text-secondary",
1305
1306
  children: [
1306
1307
  f.length,
1307
1308
  " ",
1308
1309
  f.length === 1 ? s("devportal.version", "version") : s("devportal.versions", "versions")
1309
1310
  ]
1310
- }), /* @__PURE__ */ W("button", {
1311
+ }), /* @__PURE__ */ U("button", {
1311
1312
  onClick: () => n(`/apps/${e}/versions`),
1312
1313
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
1313
- children: [/* @__PURE__ */ U(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
1314
+ children: [/* @__PURE__ */ H(Ie, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
1314
1315
  })]
1315
1316
  }),
1316
- f.length > 0 ? /* @__PURE__ */ U("div", {
1317
+ f.length > 0 ? /* @__PURE__ */ H("div", {
1317
1318
  className: "overflow-hidden rounded-lg border border-border-subtle",
1318
- children: /* @__PURE__ */ W("table", {
1319
+ children: /* @__PURE__ */ U("table", {
1319
1320
  className: "w-full text-sm",
1320
- children: [/* @__PURE__ */ U("thead", { children: /* @__PURE__ */ W("tr", {
1321
+ children: [/* @__PURE__ */ H("thead", { children: /* @__PURE__ */ U("tr", {
1321
1322
  className: "border-b border-border-subtle bg-bg-sunken/50",
1322
1323
  children: [
1323
- /* @__PURE__ */ U("th", {
1324
+ /* @__PURE__ */ H("th", {
1324
1325
  className: "px-4 py-3 text-left font-medium text-text-secondary",
1325
1326
  children: s("devportal.version", "Version")
1326
1327
  }),
1327
- /* @__PURE__ */ U("th", {
1328
+ /* @__PURE__ */ H("th", {
1328
1329
  className: "px-4 py-3 text-left font-medium text-text-secondary",
1329
1330
  children: s("devportal.status", "Status")
1330
1331
  }),
1331
- /* @__PURE__ */ U("th", {
1332
+ /* @__PURE__ */ H("th", {
1332
1333
  className: "px-4 py-3 text-left font-medium text-text-secondary",
1333
1334
  children: s("devportal.released", "Released")
1334
1335
  }),
1335
- /* @__PURE__ */ U("th", {
1336
+ /* @__PURE__ */ H("th", {
1336
1337
  className: "px-4 py-3 text-left font-medium text-text-secondary",
1337
1338
  children: s("devportal.flags", "Flags")
1338
1339
  })
1339
1340
  ]
1340
- }) }), /* @__PURE__ */ U("tbody", {
1341
+ }) }), /* @__PURE__ */ H("tbody", {
1341
1342
  className: "divide-y divide-border-subtle",
1342
- children: f.map((e) => /* @__PURE__ */ W(H, { children: [
1343
- /* @__PURE__ */ W("tr", {
1343
+ children: f.map((e) => /* @__PURE__ */ U(V, { children: [
1344
+ /* @__PURE__ */ U("tr", {
1344
1345
  className: "hover:bg-bg-sunken/30 transition-colors",
1345
1346
  children: [
1346
- /* @__PURE__ */ U("td", {
1347
+ /* @__PURE__ */ H("td", {
1347
1348
  className: "px-4 py-3 font-mono font-medium",
1348
1349
  children: e.version
1349
1350
  }),
1350
- /* @__PURE__ */ U("td", {
1351
+ /* @__PURE__ */ H("td", {
1351
1352
  className: "px-4 py-3",
1352
- children: /* @__PURE__ */ U("span", {
1353
+ children: /* @__PURE__ */ H("span", {
1353
1354
  className: t("inline-flex rounded-full px-2 py-0.5 text-xs font-medium", e.status === "published" ? "bg-status-success-bg-subtle text-status-success-text" : e.status === "pending_review" ? "bg-status-info-bg-subtle text-status-info-text" : e.status === "rejected" ? "bg-status-error-bg-subtle text-status-error-text" : e.status === "deprecated" ? "bg-bg-sunken text-text-secondary" : "bg-status-warning-bg-subtle text-status-warning-text"),
1354
1355
  children: e.status === "pending_review" ? "In Review" : e.status
1355
1356
  })
1356
1357
  }),
1357
- /* @__PURE__ */ U("td", {
1358
+ /* @__PURE__ */ H("td", {
1358
1359
  className: "px-4 py-3 text-text-secondary",
1359
1360
  children: e.publishedAt ? new Date(e.publishedAt).toLocaleDateString() : new Date(e.createdAt).toLocaleDateString()
1360
1361
  }),
1361
- /* @__PURE__ */ U("td", {
1362
+ /* @__PURE__ */ H("td", {
1362
1363
  className: "px-4 py-3",
1363
- children: /* @__PURE__ */ W("div", {
1364
+ children: /* @__PURE__ */ U("div", {
1364
1365
  className: "flex gap-1.5",
1365
- children: [e.isLatest && /* @__PURE__ */ U("span", {
1366
+ children: [e.isLatest && /* @__PURE__ */ H("span", {
1366
1367
  className: "rounded-full bg-action-primary-bg/10 px-2 py-0.5 text-xs text-primary font-medium",
1367
1368
  children: "latest"
1368
- }), e.isStable && /* @__PURE__ */ U("span", {
1369
+ }), e.isStable && /* @__PURE__ */ H("span", {
1369
1370
  className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text font-medium",
1370
1371
  children: "stable"
1371
1372
  })]
@@ -1373,26 +1374,26 @@ var Ke = [
1373
1374
  })
1374
1375
  ]
1375
1376
  }, e.id),
1376
- e.status === "rejected" && e.reviewNotes && /* @__PURE__ */ U("tr", {
1377
+ e.status === "rejected" && e.reviewNotes && /* @__PURE__ */ H("tr", {
1377
1378
  className: "bg-status-error-bg-subtle/40",
1378
- children: /* @__PURE__ */ U("td", {
1379
+ children: /* @__PURE__ */ H("td", {
1379
1380
  colSpan: 4,
1380
1381
  className: "px-4 py-2",
1381
- children: /* @__PURE__ */ W("p", {
1382
+ children: /* @__PURE__ */ U("p", {
1382
1383
  className: "text-xs text-status-error-text",
1383
- children: [/* @__PURE__ */ W("span", {
1384
+ children: [/* @__PURE__ */ U("span", {
1384
1385
  className: "font-semibold",
1385
1386
  children: ["Review feedback:", " "]
1386
1387
  }), e.reviewNotes]
1387
1388
  })
1388
1389
  })
1389
1390
  }, `${e.id}-notes`),
1390
- e.status === "pending_review" && /* @__PURE__ */ U("tr", {
1391
+ e.status === "pending_review" && /* @__PURE__ */ H("tr", {
1391
1392
  className: "bg-status-info-bg-subtle/30",
1392
- children: /* @__PURE__ */ U("td", {
1393
+ children: /* @__PURE__ */ H("td", {
1393
1394
  colSpan: 4,
1394
1395
  className: "px-4 py-2",
1395
- children: /* @__PURE__ */ U("p", {
1396
+ children: /* @__PURE__ */ H("p", {
1396
1397
  className: "text-xs text-status-info-text",
1397
1398
  children: "Submitted for platform review — you will be notified once approved or if changes are needed."
1398
1399
  })
@@ -1401,53 +1402,53 @@ var Ke = [
1401
1402
  ] }))
1402
1403
  })]
1403
1404
  })
1404
- }) : /* @__PURE__ */ U(r, {
1405
+ }) : /* @__PURE__ */ H(r, {
1405
1406
  illustration: "empty-generic",
1406
- icon: /* @__PURE__ */ U(De, { size: 32 }),
1407
+ icon: /* @__PURE__ */ H(Ae, { size: 32 }),
1407
1408
  title: s("devportal.noVersions", "No versions yet"),
1408
1409
  description: s("devportal.noVersionsDescription", "Upload your first version to make this item available for review and distribution."),
1409
- action: /* @__PURE__ */ W("button", {
1410
+ action: /* @__PURE__ */ U("button", {
1410
1411
  onClick: () => n(`/apps/${e}/versions`),
1411
1412
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
1412
- children: [/* @__PURE__ */ U(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
1413
+ children: [/* @__PURE__ */ H(Ie, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
1413
1414
  })
1414
1415
  }),
1415
- f.length > 0 && !i && a && /* @__PURE__ */ W("div", {
1416
+ f.length > 0 && !i && a && /* @__PURE__ */ U("div", {
1416
1417
  className: "mt-4 flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
1417
1418
  children: [
1418
- /* @__PURE__ */ U(I, {
1419
+ /* @__PURE__ */ H(ye, {
1419
1420
  size: 16,
1420
1421
  className: "shrink-0 text-primary"
1421
1422
  }),
1422
- /* @__PURE__ */ U("p", {
1423
+ /* @__PURE__ */ H("p", {
1423
1424
  className: "flex-1 text-sm text-text-secondary",
1424
1425
  children: s("devportal.versionsNextPricing", "You've got versions covered. Now set your pricing before you can submit.")
1425
1426
  }),
1426
- /* @__PURE__ */ W("button", {
1427
+ /* @__PURE__ */ U("button", {
1427
1428
  type: "button",
1428
1429
  onClick: a,
1429
1430
  className: "inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline underline-offset-2 whitespace-nowrap",
1430
- children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */ U(ge, { size: 15 })]
1431
+ children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */ H(ve, { size: 15 })]
1431
1432
  })
1432
1433
  ]
1433
1434
  })
1434
1435
  ]
1435
1436
  });
1436
- }, tt = ({ appId: e, onNavigate: t }) => {
1437
- let { t: n } = G(), r = (e, t) => {
1437
+ }, rt = ({ appId: e, onNavigate: t }) => {
1438
+ let { t: n } = W(), r = (e, t) => {
1438
1439
  let r = n(e);
1439
1440
  return r === e ? t : r;
1440
1441
  }, { data: i, loading: a, error: o } = u({ variables: { applicationId: e } });
1441
- return a ? /* @__PURE__ */ U(Je, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ U(Ye, { message: o.message }) : /* @__PURE__ */ U(at, {
1442
+ return a ? /* @__PURE__ */ H(G, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ H(K, { message: o.message }) : /* @__PURE__ */ H(st, {
1442
1443
  appId: e,
1443
- webhooks: (i?.webhooks ?? []).map(Ue),
1444
+ webhooks: (i?.webhooks ?? []).map(Ke),
1444
1445
  onNavigate: t
1445
1446
  });
1446
- }, nt = ({ authAppId: e, appName: t, onGrantDelegation: n, onNavigate: a }) => {
1447
- let { t: o } = G(), s = (e, t) => {
1447
+ }, it = ({ authAppId: e, appName: t, onGrantDelegation: n, onNavigate: a }) => {
1448
+ let { t: o } = W(), s = (e, t) => {
1448
1449
  let n = o(e);
1449
1450
  return n === e ? t : n;
1450
- }, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, x] = N(null), S = j(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(Ge) : [], [e, c]), C = j(() => S.filter((e) => e.status === "ACTIVE"), [S]), w = j(() => C.filter((e) => v.has(e.id)), [C, v]), T = C.length > 0 && C.every((e) => v.has(e.id)), E = C.some((e) => v.has(e.id)) && !T, D = A((e, t) => {
1451
+ }, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, x] = N(null), S = M(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(Je) : [], [e, c]), C = M(() => S.filter((e) => e.status === "ACTIVE"), [S]), w = M(() => C.filter((e) => v.has(e.id)), [C, v]), T = C.length > 0 && C.every((e) => v.has(e.id)), E = C.some((e) => v.has(e.id)) && !T, D = A((e, t) => {
1451
1452
  y((n) => {
1452
1453
  let r = new Set(n);
1453
1454
  return t ? r.add(e) : r.delete(e), r;
@@ -1473,19 +1474,19 @@ var Ke = [
1473
1474
  _(!1);
1474
1475
  }
1475
1476
  }, [f, d]);
1476
- return e ? l ? /* @__PURE__ */ U(Je, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ U(Ye, { message: u.message }) : /* @__PURE__ */ W(H, { children: [
1477
- b && /* @__PURE__ */ U("div", {
1477
+ return e ? l ? /* @__PURE__ */ H(G, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ H(K, { message: u.message }) : /* @__PURE__ */ U(V, { children: [
1478
+ b && /* @__PURE__ */ H("div", {
1478
1479
  className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 text-sm text-status-success-text",
1479
- children: /* @__PURE__ */ W("div", {
1480
+ children: /* @__PURE__ */ U("div", {
1480
1481
  className: "flex items-center justify-between gap-3",
1481
- children: [/* @__PURE__ */ U("span", { children: b }), /* @__PURE__ */ U("button", {
1482
+ children: [/* @__PURE__ */ H("span", { children: b }), /* @__PURE__ */ H("button", {
1482
1483
  onClick: () => x(null),
1483
1484
  className: "text-status-success-text hover:text-status-success-text",
1484
1485
  children: s("devportal.dismiss", "Dismiss")
1485
1486
  })]
1486
1487
  })
1487
1488
  }),
1488
- /* @__PURE__ */ U(ot, {
1489
+ /* @__PURE__ */ H(ct, {
1489
1490
  appName: t,
1490
1491
  delegations: S,
1491
1492
  onGrantDelegation: n,
@@ -1498,7 +1499,7 @@ var Ke = [
1498
1499
  allVisibleSelected: T,
1499
1500
  partiallySelected: E
1500
1501
  }),
1501
- /* @__PURE__ */ U(ae, {
1502
+ /* @__PURE__ */ H(ae, {
1502
1503
  open: p.length > 0,
1503
1504
  onOpenChange: (e) => {
1504
1505
  e || h([]);
@@ -1513,69 +1514,69 @@ var Ke = [
1513
1514
  variant: "destructive",
1514
1515
  loading: g
1515
1516
  })
1516
- ] }) : /* @__PURE__ */ U(r, {
1517
+ ] }) : /* @__PURE__ */ H(r, {
1517
1518
  illustration: "empty-generic",
1518
- icon: /* @__PURE__ */ U(je, { size: 32 }),
1519
+ icon: /* @__PURE__ */ H(z, { size: 32 }),
1519
1520
  title: s("devportal.linkAuthAppFirst", "Link an auth app first"),
1520
1521
  description: s("devportal.linkAuthAppFirstDescription", "Delegations are managed through auth apps. Create or link an auth app before granting app-as-user access."),
1521
- action: /* @__PURE__ */ W("button", {
1522
+ action: /* @__PURE__ */ U("button", {
1522
1523
  onClick: () => a("/oauth"),
1523
1524
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
1524
- children: [/* @__PURE__ */ U(L, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
1525
+ children: [/* @__PURE__ */ H(I, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
1525
1526
  })
1526
1527
  });
1527
- }, rt = ({ appId: e }) => {
1528
- let { t } = G(), n = (e, n) => {
1528
+ }, at = ({ appId: e }) => {
1529
+ let { t } = W(), n = (e, n) => {
1529
1530
  let r = t(e);
1530
1531
  return r === e ? n : r;
1531
- }, r = j(() => /* @__PURE__ */ new Date(), []), { data: i, loading: a, error: s } = o({ variables: {
1532
+ }, r = M(() => /* @__PURE__ */ new Date(), []), { data: i, loading: a, error: s } = o({ variables: {
1532
1533
  applicationId: e,
1533
1534
  period: "daily",
1534
- startDate: j(() => {
1535
+ startDate: M(() => {
1535
1536
  let e = new Date(r);
1536
1537
  return e.setDate(e.getDate() - 30), e;
1537
1538
  }, [r]).toISOString(),
1538
1539
  endDate: r.toISOString()
1539
1540
  } });
1540
- return a ? /* @__PURE__ */ U(Je, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : s ? /* @__PURE__ */ U(Ye, { message: s.message }) : /* @__PURE__ */ U(st, { analytics: (i?.applicationAnalytics ?? []).map(We) });
1541
- }, it = ({ app: e, appId: t, refetch: n }) => {
1542
- let { t: r } = G(), i = (e, t) => {
1541
+ return a ? /* @__PURE__ */ H(G, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : s ? /* @__PURE__ */ H(K, { message: s.message }) : /* @__PURE__ */ H(lt, { analytics: (i?.applicationAnalytics ?? []).map(qe) });
1542
+ }, ot = ({ app: e, appId: t, refetch: n }) => {
1543
+ let { t: r } = W(), i = (e, t) => {
1543
1544
  let n = r(e);
1544
1545
  return n === e ? t : n;
1545
1546
  }, [a, { loading: o }] = g(), [s, { loading: c }] = y(), [l, u] = N(!1);
1546
- return /* @__PURE__ */ W("div", {
1547
+ return /* @__PURE__ */ U("div", {
1547
1548
  className: "space-y-6",
1548
- children: [e.appType === "WORKFLOW" && /* @__PURE__ */ U("div", {
1549
+ children: [e.appType === "WORKFLOW" && /* @__PURE__ */ H("div", {
1549
1550
  className: "rounded-lg border border-border-subtle bg-bg-elevated p-4",
1550
- children: /* @__PURE__ */ W("div", {
1551
+ children: /* @__PURE__ */ U("div", {
1551
1552
  className: "flex items-start justify-between gap-4",
1552
- children: [/* @__PURE__ */ W("div", {
1553
+ children: [/* @__PURE__ */ U("div", {
1553
1554
  className: "flex items-start gap-3",
1554
- children: [/* @__PURE__ */ U("div", {
1555
+ children: [/* @__PURE__ */ H("div", {
1555
1556
  className: "mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-action-primary-bg-subtle",
1556
- children: /* @__PURE__ */ U(we, {
1557
+ children: /* @__PURE__ */ H(De, {
1557
1558
  size: 15,
1558
1559
  className: "text-action-primary-text"
1559
1560
  })
1560
- }), /* @__PURE__ */ W("div", { children: [
1561
- /* @__PURE__ */ U("p", {
1561
+ }), /* @__PURE__ */ U("div", { children: [
1562
+ /* @__PURE__ */ H("p", {
1562
1563
  className: "text-sm font-medium text-text-primary",
1563
1564
  children: i("devportal.shareWorkflow.title", "Share as Public Link")
1564
1565
  }),
1565
- /* @__PURE__ */ U("p", {
1566
+ /* @__PURE__ */ H("p", {
1566
1567
  className: "mt-0.5 text-xs text-text-secondary",
1567
1568
  children: e.visibility === "UNLISTED" ? i("devportal.shareWorkflow.activeDesc", "Anyone with the link can preview and copy this workflow into their FluidGrids workspace.") : i("devportal.shareWorkflow.inactiveDesc", "Generate a public link anyone can use to copy this workflow into their own FluidGrids workspace — no store review needed.")
1568
1569
  }),
1569
- e.visibility === "UNLISTED" && (e.status === "PUBLISHED" || e.status === "SUBMITTED") && /* @__PURE__ */ U("p", {
1570
+ e.visibility === "UNLISTED" && (e.status === "PUBLISHED" || e.status === "SUBMITTED") && /* @__PURE__ */ H("p", {
1570
1571
  className: "mt-1.5 text-xs text-status-warning-text",
1571
1572
  children: i("devportal.shareWorkflow.stopSharingPublishedNote", "This app is in the marketplace. Stopping the share link will keep it there — visibility will switch to Public so the store listing is preserved.")
1572
1573
  }),
1573
- e.visibility === "UNLISTED" && /* @__PURE__ */ W("div", {
1574
+ e.visibility === "UNLISTED" && /* @__PURE__ */ U("div", {
1574
1575
  className: "mt-2 flex items-center gap-2",
1575
- children: [/* @__PURE__ */ U("code", {
1576
+ children: [/* @__PURE__ */ H("code", {
1576
1577
  className: "rounded bg-bg-canvas px-2 py-1 text-xs text-text-secondary",
1577
1578
  children: `${window.location.protocol}//${window.location.host}/shared/${t}`
1578
- }), /* @__PURE__ */ W("button", {
1579
+ }), /* @__PURE__ */ U("button", {
1579
1580
  type: "button",
1580
1581
  className: "flex items-center gap-1 rounded px-2 py-1 text-xs text-action-primary-text hover:bg-action-primary-bg-subtle transition-colors",
1581
1582
  onClick: () => {
@@ -1584,11 +1585,11 @@ var Ke = [
1584
1585
  u(!0), setTimeout(() => u(!1), 2e3);
1585
1586
  });
1586
1587
  },
1587
- children: [U(l ? F : ve, { size: 12 }), l ? i("devportal.copied", "Copied!") : i("devportal.copyLink", "Copy Link")]
1588
+ children: [H(l ? F : xe, { size: 12 }), l ? i("devportal.copied", "Copied!") : i("devportal.copyLink", "Copy Link")]
1588
1589
  })]
1589
1590
  })
1590
1591
  ] })]
1591
- }), /* @__PURE__ */ U("button", {
1592
+ }), /* @__PURE__ */ H("button", {
1592
1593
  type: "button",
1593
1594
  disabled: o || c || !e.manifest,
1594
1595
  title: e.manifest ? void 0 : i("devportal.shareWorkflow.noManifestHint", "Add a workflow manifest before sharing"),
@@ -1596,67 +1597,67 @@ var Ke = [
1596
1597
  e.visibility === "UNLISTED" ? s({ variables: { id: t } }).then(() => n()) : a({ variables: { id: t } }).then(() => n());
1597
1598
  },
1598
1599
  className: `flex-shrink-0 rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${e.visibility === "UNLISTED" ? "border border-status-error-bg text-status-error-text hover:bg-status-error-bg-subtle" : "bg-action-primary-bg text-text-on-action hover:opacity-90 disabled:opacity-50"}`,
1599
- children: o || c ? /* @__PURE__ */ U(R, {
1600
+ children: o || c ? /* @__PURE__ */ H(L, {
1600
1601
  size: 12,
1601
1602
  className: "animate-spin"
1602
1603
  }) : e.visibility === "UNLISTED" ? i("devportal.shareWorkflow.stopSharing", "Stop Sharing") : i("devportal.shareWorkflow.share", "Share Link")
1603
1604
  })]
1604
1605
  })
1605
- }), /* @__PURE__ */ W("div", {
1606
+ }), /* @__PURE__ */ U("div", {
1606
1607
  className: "grid gap-6 lg:grid-cols-3",
1607
- children: [/* @__PURE__ */ W("div", {
1608
+ children: [/* @__PURE__ */ U("div", {
1608
1609
  className: "lg:col-span-2 space-y-6",
1609
1610
  children: [
1610
- /* @__PURE__ */ U(Be, { children: /* @__PURE__ */ W("div", {
1611
+ /* @__PURE__ */ H(Ue, { children: /* @__PURE__ */ U("div", {
1611
1612
  className: "grid gap-4 sm:grid-cols-4",
1612
1613
  children: [
1613
- /* @__PURE__ */ U(Z, {
1614
+ /* @__PURE__ */ H(Z, {
1614
1615
  label: i("devportal.totalInstalls", "Total Installs"),
1615
1616
  value: e.installCount.toLocaleString()
1616
1617
  }),
1617
- /* @__PURE__ */ U(Z, {
1618
+ /* @__PURE__ */ H(Z, {
1618
1619
  label: i("devportal.activeInstalls", "Active Installs"),
1619
1620
  value: e.activeInstallCount.toLocaleString()
1620
1621
  }),
1621
- /* @__PURE__ */ U(Z, {
1622
+ /* @__PURE__ */ H(Z, {
1622
1623
  label: i("devportal.averageRating", "Average Rating"),
1623
1624
  value: e.averageRating ? `${e.averageRating.toFixed(1)} ★` : i("devportal.notAvailable", "N/A")
1624
1625
  }),
1625
- /* @__PURE__ */ U(Z, {
1626
+ /* @__PURE__ */ H(Z, {
1626
1627
  label: i("devportal.reviews", "Reviews"),
1627
1628
  value: e.reviewCount.toString()
1628
1629
  })
1629
1630
  ]
1630
1631
  }) }),
1631
- /* @__PURE__ */ U(S, {
1632
+ /* @__PURE__ */ H(S, {
1632
1633
  title: i("devportal.description", "Description"),
1633
- children: e.description ? /* @__PURE__ */ U(fe, {
1634
+ children: e.description ? /* @__PURE__ */ H(me, {
1634
1635
  className: "prose prose-sm max-w-none",
1635
1636
  children: e.description
1636
- }) : /* @__PURE__ */ U("p", {
1637
+ }) : /* @__PURE__ */ H("p", {
1637
1638
  className: "text-sm text-text-secondary",
1638
1639
  children: i("devportal.noDescriptionProvided", "No description provided.")
1639
1640
  })
1640
1641
  }),
1641
- /* @__PURE__ */ U(S, {
1642
+ /* @__PURE__ */ H(S, {
1642
1643
  title: i("devportal.tagsAndKeywords", "Tags & Keywords"),
1643
- children: /* @__PURE__ */ W("div", {
1644
+ children: /* @__PURE__ */ U("div", {
1644
1645
  className: "space-y-3",
1645
- children: [e.tags.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1646
+ children: [e.tags.length > 0 && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1646
1647
  className: "text-xs text-text-secondary mb-2",
1647
1648
  children: i("devportal.tags", "Tags")
1648
- }), /* @__PURE__ */ U("div", {
1649
+ }), /* @__PURE__ */ H("div", {
1649
1650
  className: "flex flex-wrap gap-2",
1650
- children: e.tags.map((e) => /* @__PURE__ */ U("span", {
1651
+ children: e.tags.map((e) => /* @__PURE__ */ H("span", {
1651
1652
  className: "rounded-full bg-action-primary-bg/10 px-3 py-1 text-xs font-medium text-primary",
1652
1653
  children: e
1653
1654
  }, e))
1654
- })] }), e.keywords.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1655
+ })] }), e.keywords.length > 0 && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1655
1656
  className: "text-xs text-text-secondary mb-2",
1656
1657
  children: i("devportal.keywords", "Keywords")
1657
- }), /* @__PURE__ */ U("div", {
1658
+ }), /* @__PURE__ */ H("div", {
1658
1659
  className: "flex flex-wrap gap-2",
1659
- children: e.keywords.map((e) => /* @__PURE__ */ U("span", {
1660
+ children: e.keywords.map((e) => /* @__PURE__ */ H("span", {
1660
1661
  className: "rounded-full bg-bg-sunken px-3 py-1 text-xs",
1661
1662
  children: e
1662
1663
  }, e))
@@ -1664,14 +1665,14 @@ var Ke = [
1664
1665
  })
1665
1666
  })
1666
1667
  ]
1667
- }), /* @__PURE__ */ W("div", {
1668
+ }), /* @__PURE__ */ U("div", {
1668
1669
  className: "space-y-6",
1669
- children: [/* @__PURE__ */ U(S, {
1670
+ children: [/* @__PURE__ */ H(S, {
1670
1671
  title: i("devportal.details", "Details"),
1671
- children: /* @__PURE__ */ U(ne, { items: [
1672
+ children: /* @__PURE__ */ H(ne, { items: [
1672
1673
  {
1673
1674
  label: i("devportal.appId", "App ID"),
1674
- value: /* @__PURE__ */ U("code", {
1675
+ value: /* @__PURE__ */ H("code", {
1675
1676
  className: "text-xs",
1676
1677
  children: e.id
1677
1678
  })
@@ -1707,32 +1708,32 @@ var Ke = [
1707
1708
  value: e.publishedAt ? new Date(e.publishedAt).toLocaleDateString() : i("devportal.notPublished", "Not published")
1708
1709
  }
1709
1710
  ] })
1710
- }), /* @__PURE__ */ U(S, {
1711
+ }), /* @__PURE__ */ H(S, {
1711
1712
  title: i("devportal.links", "Links"),
1712
- children: /* @__PURE__ */ W("div", {
1713
+ children: /* @__PURE__ */ U("div", {
1713
1714
  className: "space-y-2",
1714
1715
  children: [
1715
- e.websiteUrl && /* @__PURE__ */ U(Q, {
1716
+ e.websiteUrl && /* @__PURE__ */ H(Q, {
1716
1717
  label: i("devportal.website", "Website"),
1717
1718
  url: e.websiteUrl
1718
1719
  }),
1719
- e.documentationUrl && /* @__PURE__ */ U(Q, {
1720
+ e.documentationUrl && /* @__PURE__ */ H(Q, {
1720
1721
  label: i("devportal.documentation", "Documentation"),
1721
1722
  url: e.documentationUrl
1722
1723
  }),
1723
- e.supportUrl && /* @__PURE__ */ U(Q, {
1724
+ e.supportUrl && /* @__PURE__ */ H(Q, {
1724
1725
  label: i("devportal.support", "Support"),
1725
1726
  url: e.supportUrl
1726
1727
  }),
1727
- e.githubUrl && /* @__PURE__ */ U(Q, {
1728
+ e.githubUrl && /* @__PURE__ */ H(Q, {
1728
1729
  label: i("devportal.github", "GitHub"),
1729
1730
  url: e.githubUrl
1730
1731
  }),
1731
- e.privacyPolicyUrl && /* @__PURE__ */ U(Q, {
1732
+ e.privacyPolicyUrl && /* @__PURE__ */ H(Q, {
1732
1733
  label: i("devportal.privacyPolicy", "Privacy Policy"),
1733
1734
  url: e.privacyPolicyUrl
1734
1735
  }),
1735
- e.termsOfServiceUrl && /* @__PURE__ */ U(Q, {
1736
+ e.termsOfServiceUrl && /* @__PURE__ */ H(Q, {
1736
1737
  label: i("devportal.termsOfService", "Terms of Service"),
1737
1738
  url: e.termsOfServiceUrl
1738
1739
  })
@@ -1742,16 +1743,16 @@ var Ke = [
1742
1743
  })]
1743
1744
  })]
1744
1745
  });
1745
- }, at = ({ appId: e, webhooks: t, onNavigate: n }) => {
1746
- let { t: i } = G(), a = (e, t) => {
1746
+ }, st = ({ appId: e, webhooks: t, onNavigate: n }) => {
1747
+ let { t: i } = W(), a = (e, t) => {
1747
1748
  let n = i(e);
1748
1749
  return n === e ? t : n;
1749
1750
  };
1750
- return /* @__PURE__ */ W("div", {
1751
+ return /* @__PURE__ */ U("div", {
1751
1752
  className: "space-y-6",
1752
- children: [/* @__PURE__ */ W("div", {
1753
+ children: [/* @__PURE__ */ U("div", {
1753
1754
  className: "flex items-center justify-between",
1754
- children: [/* @__PURE__ */ W("p", {
1755
+ children: [/* @__PURE__ */ U("p", {
1755
1756
  className: "text-sm text-text-secondary",
1756
1757
  children: [
1757
1758
  t.length,
@@ -1760,81 +1761,81 @@ var Ke = [
1760
1761
  " ",
1761
1762
  a("devportal.configured", "configured")
1762
1763
  ]
1763
- }), /* @__PURE__ */ W("button", {
1764
+ }), /* @__PURE__ */ U("button", {
1764
1765
  onClick: () => n(`/apps/${e}/webhooks/new`),
1765
1766
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
1766
- children: [/* @__PURE__ */ U(z, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
1767
+ children: [/* @__PURE__ */ H(R, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
1767
1768
  })]
1768
- }), t.length > 0 ? /* @__PURE__ */ U("div", {
1769
+ }), t.length > 0 ? /* @__PURE__ */ H("div", {
1769
1770
  className: "space-y-4",
1770
- children: t.map((t) => /* @__PURE__ */ W("div", {
1771
+ children: t.map((t) => /* @__PURE__ */ U("div", {
1771
1772
  className: "rounded-card border border-border-seam bg-bg-surface p-4 space-y-4 shadow-[var(--shadow-pop)]",
1772
1773
  children: [
1773
- /* @__PURE__ */ W("div", {
1774
+ /* @__PURE__ */ U("div", {
1774
1775
  className: "flex items-start justify-between",
1775
- children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("div", {
1776
+ children: [/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ U("div", {
1776
1777
  className: "flex items-center gap-2",
1777
- children: [/* @__PURE__ */ U("h3", {
1778
+ children: [/* @__PURE__ */ H("h3", {
1778
1779
  className: "font-medium",
1779
1780
  children: t.name
1780
- }), /* @__PURE__ */ U(T, {
1781
+ }), /* @__PURE__ */ H(T, {
1781
1782
  status: t.status,
1782
1783
  type: "webhook"
1783
1784
  })]
1784
- }), t.description && /* @__PURE__ */ U("p", {
1785
+ }), t.description && /* @__PURE__ */ H("p", {
1785
1786
  className: "text-sm text-text-secondary mt-1",
1786
1787
  children: t.description
1787
- })] }), /* @__PURE__ */ U("button", {
1788
+ })] }), /* @__PURE__ */ H("button", {
1788
1789
  onClick: () => n(`/apps/${e}/webhooks/${t.id}`),
1789
1790
  className: "rounded-md p-1 hover:bg-bg-sunken",
1790
- children: /* @__PURE__ */ U(Ee, { size: 20 })
1791
+ children: /* @__PURE__ */ H(ke, { size: 20 })
1791
1792
  })]
1792
1793
  }),
1793
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1794
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1794
1795
  className: "text-xs text-text-secondary mb-1",
1795
1796
  children: a("devportal.endpointUrl", "Endpoint URL")
1796
- }), /* @__PURE__ */ U("code", {
1797
+ }), /* @__PURE__ */ H("code", {
1797
1798
  className: "text-sm bg-bg-sunken px-2 py-1 rounded block truncate",
1798
1799
  children: t.url
1799
1800
  })] }),
1800
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1801
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1801
1802
  className: "text-xs text-text-secondary mb-2",
1802
1803
  children: a("devportal.events", "Events")
1803
- }), /* @__PURE__ */ U("div", {
1804
+ }), /* @__PURE__ */ H("div", {
1804
1805
  className: "flex flex-wrap gap-2",
1805
- children: t.events.map((e) => /* @__PURE__ */ U("span", {
1806
+ children: t.events.map((e) => /* @__PURE__ */ H("span", {
1806
1807
  className: "rounded-full bg-bg-sunken px-2 py-0.5 text-xs",
1807
1808
  children: e
1808
1809
  }, e))
1809
1810
  })] }),
1810
- /* @__PURE__ */ W("div", {
1811
+ /* @__PURE__ */ U("div", {
1811
1812
  className: "grid gap-4 sm:grid-cols-4 text-sm",
1812
1813
  children: [
1813
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1814
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1814
1815
  className: "text-xs text-text-secondary",
1815
1816
  children: a("devportal.success", "Success")
1816
- }), /* @__PURE__ */ U("p", {
1817
+ }), /* @__PURE__ */ H("p", {
1817
1818
  className: "font-medium text-status-success-text",
1818
1819
  children: t.successCount.toLocaleString()
1819
1820
  })] }),
1820
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1821
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1821
1822
  className: "text-xs text-text-secondary",
1822
1823
  children: a("devportal.failed", "Failed")
1823
- }), /* @__PURE__ */ U("p", {
1824
+ }), /* @__PURE__ */ H("p", {
1824
1825
  className: "font-medium text-status-error-text",
1825
1826
  children: t.failureCount.toLocaleString()
1826
1827
  })] }),
1827
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1828
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1828
1829
  className: "text-xs text-text-secondary",
1829
1830
  children: a("devportal.successRate", "Success Rate")
1830
- }), /* @__PURE__ */ W("p", {
1831
+ }), /* @__PURE__ */ U("p", {
1831
1832
  className: "font-medium",
1832
1833
  children: [t.successCount + t.failureCount > 0 ? (t.successCount / (t.successCount + t.failureCount) * 100).toFixed(1) : "0.0", "%"]
1833
1834
  })] }),
1834
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1835
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1835
1836
  className: "text-xs text-text-secondary",
1836
1837
  children: a("devportal.lastTriggered", "Last Triggered")
1837
- }), /* @__PURE__ */ U("p", {
1838
+ }), /* @__PURE__ */ H("p", {
1838
1839
  className: "font-medium",
1839
1840
  children: t.lastTriggeredAt ? new Date(t.lastTriggeredAt).toLocaleString() : a("devportal.never", "Never")
1840
1841
  })] })
@@ -1842,29 +1843,29 @@ var Ke = [
1842
1843
  })
1843
1844
  ]
1844
1845
  }, t.id))
1845
- }) : /* @__PURE__ */ U(r, {
1846
+ }) : /* @__PURE__ */ H(r, {
1846
1847
  illustration: "empty-notifications",
1847
- icon: /* @__PURE__ */ U(V, { size: 32 }),
1848
+ icon: /* @__PURE__ */ H(Re, { size: 32 }),
1848
1849
  title: a("devportal.noWebhooks", "No webhooks"),
1849
1850
  description: a("devportal.noWebhooksDescription", "Add a webhook to receive event notifications"),
1850
- action: /* @__PURE__ */ W("button", {
1851
+ action: /* @__PURE__ */ U("button", {
1851
1852
  onClick: () => n(`/apps/${e}/webhooks/new`),
1852
1853
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
1853
- children: [/* @__PURE__ */ U(z, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
1854
+ children: [/* @__PURE__ */ H(R, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
1854
1855
  })
1855
1856
  })]
1856
1857
  });
1857
- }, ot = ({ appName: e, delegations: n, onGrantDelegation: i, onRevokeDelegation: a, selectedDelegationIds: o, onToggleSelectDelegation: s, onToggleAllDelegations: c, onClearSelection: l, onRevokeSelected: u, allVisibleSelected: d, partiallySelected: f }) => {
1858
- let { t: p } = G(), m = (e, t) => {
1858
+ }, ct = ({ appName: e, delegations: n, onGrantDelegation: i, onRevokeDelegation: a, selectedDelegationIds: o, onToggleSelectDelegation: s, onToggleAllDelegations: c, onClearSelection: l, onRevokeSelected: u, allVisibleSelected: d, partiallySelected: f }) => {
1859
+ let { t: p } = W(), m = (e, t) => {
1859
1860
  let n = p(e);
1860
1861
  return n === e ? t : n;
1861
1862
  }, h = n.filter((e) => e.status === "ACTIVE"), g = n.filter((e) => e.status !== "ACTIVE");
1862
- return /* @__PURE__ */ W("div", {
1863
+ return /* @__PURE__ */ U("div", {
1863
1864
  className: "space-y-6",
1864
1865
  children: [
1865
- /* @__PURE__ */ W("div", {
1866
+ /* @__PURE__ */ U("div", {
1866
1867
  className: "flex items-center justify-between",
1867
- children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("p", {
1868
+ children: [/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ U("p", {
1868
1869
  className: "text-sm text-text-secondary",
1869
1870
  children: [
1870
1871
  n.length,
@@ -1875,7 +1876,7 @@ var Ke = [
1875
1876
  " ",
1876
1877
  e
1877
1878
  ]
1878
- }), h.length > 0 && /* @__PURE__ */ W("p", {
1879
+ }), h.length > 0 && /* @__PURE__ */ U("p", {
1879
1880
  className: "text-xs text-text-secondary mt-0.5",
1880
1881
  children: [
1881
1882
  h.length,
@@ -1887,44 +1888,44 @@ var Ke = [
1887
1888
  " ",
1888
1889
  m("devportal.revokedExpired", "revoked/expired")
1889
1890
  ]
1890
- })] }), /* @__PURE__ */ W("button", {
1891
+ })] }), /* @__PURE__ */ U("button", {
1891
1892
  onClick: i,
1892
1893
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
1893
- children: [/* @__PURE__ */ U(z, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1894
+ children: [/* @__PURE__ */ H(R, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1894
1895
  })]
1895
1896
  }),
1896
- h.length > 0 && /* @__PURE__ */ U("div", {
1897
+ h.length > 0 && /* @__PURE__ */ H("div", {
1897
1898
  className: "rounded-card border border-border-seam bg-bg-surface p-4",
1898
- children: /* @__PURE__ */ W("div", {
1899
+ children: /* @__PURE__ */ U("div", {
1899
1900
  className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
1900
- children: [/* @__PURE__ */ W("div", {
1901
+ children: [/* @__PURE__ */ U("div", {
1901
1902
  className: "flex flex-wrap items-center gap-3",
1902
- children: [/* @__PURE__ */ W("div", {
1903
+ children: [/* @__PURE__ */ U("div", {
1903
1904
  className: "flex items-center gap-2",
1904
- children: [/* @__PURE__ */ U(D, {
1905
+ children: [/* @__PURE__ */ H(D, {
1905
1906
  checked: d,
1906
1907
  indeterminate: f,
1907
1908
  onChange: c,
1908
1909
  ariaLabel: m("devportal.selectAllActiveDelegations", "Select all active app delegations")
1909
- }), /* @__PURE__ */ U("span", {
1910
+ }), /* @__PURE__ */ H("span", {
1910
1911
  className: "text-sm font-medium",
1911
1912
  children: m("devportal.selectAllActive", "Select all active")
1912
1913
  })]
1913
- }), o.size > 0 && /* @__PURE__ */ U("button", {
1914
+ }), o.size > 0 && /* @__PURE__ */ H("button", {
1914
1915
  onClick: l,
1915
1916
  className: "text-sm text-text-secondary hover:text-text-primary",
1916
1917
  children: m("devportal.clearSelection", "Clear selection")
1917
1918
  })]
1918
- }), /* @__PURE__ */ W("div", {
1919
+ }), /* @__PURE__ */ U("div", {
1919
1920
  className: "flex flex-wrap items-center gap-2",
1920
- children: [/* @__PURE__ */ W("span", {
1921
+ children: [/* @__PURE__ */ U("span", {
1921
1922
  className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
1922
1923
  children: [
1923
1924
  o.size,
1924
1925
  " ",
1925
1926
  m("devportal.selected", "selected")
1926
1927
  ]
1927
- }), /* @__PURE__ */ W("button", {
1928
+ }), /* @__PURE__ */ U("button", {
1928
1929
  onClick: u,
1929
1930
  disabled: o.size === 0,
1930
1931
  className: "rounded-md border border-status-error-bg px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
@@ -1933,33 +1934,33 @@ var Ke = [
1933
1934
  })]
1934
1935
  })
1935
1936
  }),
1936
- n.length > 0 ? /* @__PURE__ */ U("div", {
1937
+ n.length > 0 ? /* @__PURE__ */ H("div", {
1937
1938
  className: "space-y-4",
1938
- children: n.map((e) => /* @__PURE__ */ W("div", {
1939
+ children: n.map((e) => /* @__PURE__ */ U("div", {
1939
1940
  className: "rounded-card border border-border-seam bg-bg-surface p-4 space-y-4 shadow-[var(--shadow-pop)]",
1940
1941
  children: [
1941
- /* @__PURE__ */ W("div", {
1942
+ /* @__PURE__ */ U("div", {
1942
1943
  className: "flex items-start justify-between",
1943
- children: [/* @__PURE__ */ W("div", {
1944
+ children: [/* @__PURE__ */ U("div", {
1944
1945
  className: "flex items-start gap-3",
1945
- children: [e.status === "ACTIVE" && /* @__PURE__ */ U("div", {
1946
+ children: [e.status === "ACTIVE" && /* @__PURE__ */ H("div", {
1946
1947
  onClick: (e) => e.stopPropagation(),
1947
- children: /* @__PURE__ */ U(D, {
1948
+ children: /* @__PURE__ */ H(D, {
1948
1949
  checked: o.has(e.id),
1949
1950
  onChange: (t) => s(e.id, t),
1950
1951
  ariaLabel: `Select delegation ${e.id}`,
1951
1952
  className: "mt-1"
1952
1953
  })
1953
- }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("div", {
1954
+ }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ U("div", {
1954
1955
  className: "flex items-center gap-2",
1955
- children: [/* @__PURE__ */ W("h3", {
1956
+ children: [/* @__PURE__ */ U("h3", {
1956
1957
  className: "font-medium",
1957
1958
  children: ["Delegation #", e.id.slice(0, 8)]
1958
- }), /* @__PURE__ */ U("span", {
1959
- className: t("rounded-full px-2 py-0.5 text-xs font-medium", qe[e.status]),
1959
+ }), /* @__PURE__ */ H("span", {
1960
+ className: t("rounded-full px-2 py-0.5 text-xs font-medium", Xe[e.status]),
1960
1961
  children: e.status
1961
1962
  })]
1962
- }), /* @__PURE__ */ W("p", {
1963
+ }), /* @__PURE__ */ U("p", {
1963
1964
  className: "text-sm text-text-secondary mt-1",
1964
1965
  children: [
1965
1966
  m("devportal.granted", "Granted"),
@@ -1971,55 +1972,55 @@ var Ke = [
1971
1972
  e.grantedBy === e.userId ? m("devportal.you", "you") : e.grantedBy.slice(0, 8)
1972
1973
  ]
1973
1974
  })] })]
1974
- }), e.status === "ACTIVE" && /* @__PURE__ */ W("button", {
1975
+ }), e.status === "ACTIVE" && /* @__PURE__ */ U("button", {
1975
1976
  onClick: () => a(e.id),
1976
1977
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
1977
- children: [/* @__PURE__ */ U(Le, { size: 14 }), m("devportal.revoke", "Revoke")]
1978
+ children: [/* @__PURE__ */ H(Be, { size: 14 }), m("devportal.revoke", "Revoke")]
1978
1979
  })]
1979
1980
  }),
1980
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1981
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1981
1982
  className: "text-xs text-text-secondary mb-2",
1982
1983
  children: m("devportal.grantedScopes", "Granted Scopes")
1983
- }), /* @__PURE__ */ U("div", {
1984
+ }), /* @__PURE__ */ H("div", {
1984
1985
  className: "flex flex-wrap gap-2",
1985
- children: e.scopes.map((e) => /* @__PURE__ */ U("span", {
1986
+ children: e.scopes.map((e) => /* @__PURE__ */ H("span", {
1986
1987
  className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text",
1987
1988
  children: e
1988
1989
  }, e))
1989
1990
  })] }),
1990
- e.workspaceIds.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
1991
+ e.workspaceIds.length > 0 && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
1991
1992
  className: "text-xs text-text-secondary mb-2",
1992
1993
  children: m("devportal.workspaceScope", "Workspace Scope")
1993
- }), /* @__PURE__ */ U("div", {
1994
+ }), /* @__PURE__ */ H("div", {
1994
1995
  className: "flex flex-wrap gap-2",
1995
- children: e.workspaceIds.map((e) => /* @__PURE__ */ U("code", {
1996
+ children: e.workspaceIds.map((e) => /* @__PURE__ */ H("code", {
1996
1997
  className: "rounded bg-bg-sunken px-2 py-0.5 text-xs",
1997
1998
  children: e
1998
1999
  }, e))
1999
2000
  })] }),
2000
- /* @__PURE__ */ W("div", {
2001
+ /* @__PURE__ */ U("div", {
2001
2002
  className: "flex items-center gap-4 text-xs text-text-secondary",
2002
2003
  children: [
2003
- e.expiresAt && /* @__PURE__ */ W("span", {
2004
+ e.expiresAt && /* @__PURE__ */ U("span", {
2004
2005
  className: "flex items-center gap-1",
2005
2006
  children: [
2006
- /* @__PURE__ */ U(_e, { size: 12 }),
2007
+ /* @__PURE__ */ H(be, { size: 12 }),
2007
2008
  m("devportal.expires", "Expires"),
2008
2009
  " ",
2009
2010
  new Date(e.expiresAt).toLocaleDateString()
2010
2011
  ]
2011
2012
  }),
2012
- !e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ W("span", {
2013
+ !e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ U("span", {
2013
2014
  className: "flex items-center gap-1",
2014
- children: [/* @__PURE__ */ U(he, {
2015
+ children: [/* @__PURE__ */ H(_e, {
2015
2016
  size: 12,
2016
2017
  className: "text-status-success-text"
2017
2018
  }), m("devportal.noExpiration", "No expiration")]
2018
2019
  }),
2019
- e.revokedAt && /* @__PURE__ */ W("span", {
2020
+ e.revokedAt && /* @__PURE__ */ U("span", {
2020
2021
  className: "flex items-center gap-1",
2021
2022
  children: [
2022
- /* @__PURE__ */ U(Le, {
2023
+ /* @__PURE__ */ H(Be, {
2023
2024
  size: 12,
2024
2025
  className: "text-status-error-text"
2025
2026
  }),
@@ -2032,53 +2033,53 @@ var Ke = [
2032
2033
  })
2033
2034
  ]
2034
2035
  }, e.id))
2035
- }) : /* @__PURE__ */ U(r, {
2036
+ }) : /* @__PURE__ */ H(r, {
2036
2037
  illustration: "empty-people",
2037
- icon: /* @__PURE__ */ U(Pe, { size: 32 }),
2038
+ icon: /* @__PURE__ */ H(B, { size: 32 }),
2038
2039
  title: m("devportal.noDelegations", "No delegations"),
2039
2040
  description: m("devportal.noDelegationsDescription", "Grant a delegation to allow this app to act on your behalf"),
2040
- action: /* @__PURE__ */ W("button", {
2041
+ action: /* @__PURE__ */ U("button", {
2041
2042
  onClick: i,
2042
2043
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
2043
- children: [/* @__PURE__ */ U(z, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
2044
+ children: [/* @__PURE__ */ H(R, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
2044
2045
  })
2045
2046
  })
2046
2047
  ]
2047
2048
  });
2048
- }, st = ({ analytics: e }) => {
2049
- let { t } = G(), n = (e, n) => {
2049
+ }, lt = ({ analytics: e }) => {
2050
+ let { t } = W(), n = (e, n) => {
2050
2051
  let r = t(e);
2051
2052
  return r === e ? n : r;
2052
2053
  }, i = e[0], a = e[1], o = (e, t) => t ? (e - t) / t * 100 : 0;
2053
- return /* @__PURE__ */ W("div", {
2054
+ return /* @__PURE__ */ U("div", {
2054
2055
  className: "space-y-6",
2055
- children: [/* @__PURE__ */ W("div", {
2056
+ children: [/* @__PURE__ */ U("div", {
2056
2057
  className: "grid gap-4 sm:grid-cols-4",
2057
2058
  children: [
2058
- /* @__PURE__ */ U(Z, {
2059
+ /* @__PURE__ */ H(Z, {
2059
2060
  label: n("devportal.activeUsers", "Active Users"),
2060
2061
  value: i?.activeUsers.toLocaleString() || "0",
2061
2062
  trend: a ? o(i.activeUsers, a.activeUsers) : void 0
2062
2063
  }),
2063
- /* @__PURE__ */ U(Z, {
2064
+ /* @__PURE__ */ H(Z, {
2064
2065
  label: n("devportal.apiCalls", "API Calls"),
2065
2066
  value: i ? `${(i.apiCalls / 1e3).toFixed(1)}K` : "0",
2066
2067
  trend: a ? o(i.apiCalls, a.apiCalls) : void 0
2067
2068
  }),
2068
- /* @__PURE__ */ U(Z, {
2069
+ /* @__PURE__ */ H(Z, {
2069
2070
  label: n("devportal.avgResponseTime", "Avg Response Time"),
2070
2071
  value: i?.avgResponseTime ? `${i.avgResponseTime}ms` : n("devportal.notAvailable", "N/A"),
2071
2072
  trend: a && i?.avgResponseTime ? -o(i.avgResponseTime, a.avgResponseTime || 1) : void 0
2072
2073
  }),
2073
- /* @__PURE__ */ U(Z, {
2074
+ /* @__PURE__ */ H(Z, {
2074
2075
  label: n("devportal.errorRate", "Error Rate"),
2075
2076
  value: i && i.apiCalls > 0 ? `${(i.errors / i.apiCalls * 100).toFixed(2)}%` : "0%",
2076
2077
  trend: a && i && i.apiCalls > 0 && a.apiCalls > 0 ? -o(i.errors / i.apiCalls, a.errors / a.apiCalls) : void 0
2077
2078
  })
2078
2079
  ]
2079
- }), /* @__PURE__ */ U(S, {
2080
+ }), /* @__PURE__ */ H(S, {
2080
2081
  title: n("devportal.dailyBreakdown", "Daily Breakdown"),
2081
- children: e.length > 0 ? /* @__PURE__ */ U(te, {
2082
+ children: e.length > 0 ? /* @__PURE__ */ H(te, {
2082
2083
  data: e,
2083
2084
  keyField: "id",
2084
2085
  columns: [
@@ -2118,19 +2119,19 @@ var Ke = [
2118
2119
  render: (e) => e.sessions.toLocaleString()
2119
2120
  }
2120
2121
  ]
2121
- }) : /* @__PURE__ */ U(r, {
2122
+ }) : /* @__PURE__ */ H(r, {
2122
2123
  illustration: "empty-data",
2123
- icon: /* @__PURE__ */ U(me, { size: 32 }),
2124
+ icon: /* @__PURE__ */ H(ge, { size: 32 }),
2124
2125
  title: n("devportal.noAnalyticsData", "No analytics data"),
2125
2126
  description: n("devportal.noAnalyticsDataDescription", "Analytics data will appear here once the application starts receiving traffic.")
2126
2127
  })
2127
2128
  })]
2128
2129
  });
2129
- }, ct = "# Sample query — replace with your own\n# Note: introspection is disabled on this gateway for security.\n# Use a real query from your app's API schema instead.\nquery GetCurrentUser {\n currentUser {\n id\n email\n }\n}", lt = ({ app: t }) => {
2130
- let { apiGatewayUrl: n, workspacesGatewayUrl: r, authToken: i } = e(), { t: a } = G(), o = (e, t) => {
2130
+ }, ut = "# Sample query — replace with your own\n# Note: introspection is disabled on this gateway for security.\n# Use a real query from your app's API schema instead.\nquery GetCurrentUser {\n currentUser {\n id\n email\n }\n}", dt = ({ app: t }) => {
2131
+ let { apiGatewayUrl: n, workspacesGatewayUrl: r, authToken: i } = e(), { t: a } = W(), o = (e, t) => {
2131
2132
  let n = a(e);
2132
2133
  return n === e ? t : n;
2133
- }, [s, c] = N(ct), [l, u] = N("{}"), [d, f] = N(""), [p, m] = N(!1), [h, g] = N(`${n || "https://gw-global.local.burdenoff.com"}/global/graphql`), [_, v] = N(i || ""), [y, b] = N(!1), x = A(async () => {
2134
+ }, [s, c] = N(ut), [l, u] = N("{}"), [d, f] = N(""), [p, m] = N(!1), [h, g] = N(`${n || "https://gw-global.local.burdenoff.com"}/global/graphql`), [_, v] = N(i || ""), [y, b] = N(!1), x = A(async () => {
2134
2135
  m(!0), f("");
2135
2136
  try {
2136
2137
  let e = {};
@@ -2164,21 +2165,21 @@ var Ke = [
2164
2165
  ]), S = A(() => {
2165
2166
  i && v(i), b(!0);
2166
2167
  }, [i]);
2167
- return /* @__PURE__ */ W("div", {
2168
+ return /* @__PURE__ */ U("div", {
2168
2169
  className: "space-y-4",
2169
2170
  children: [
2170
- /* @__PURE__ */ W("div", {
2171
+ /* @__PURE__ */ U("div", {
2171
2172
  className: "flex items-center justify-between",
2172
- children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h3", {
2173
+ children: [/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("h3", {
2173
2174
  className: "text-lg font-semibold",
2174
2175
  children: o("devportal.apiPlayground", "API Playground")
2175
- }), /* @__PURE__ */ W("p", {
2176
+ }), /* @__PURE__ */ U("p", {
2176
2177
  className: "text-sm text-text-secondary",
2177
2178
  children: [
2178
2179
  o("devportal.apiPlaygroundDescription", "Test GraphQL APIs in the context of"),
2179
2180
  " ",
2180
- /* @__PURE__ */ U("strong", { children: t.name }),
2181
- t.appId && /* @__PURE__ */ W("span", {
2181
+ /* @__PURE__ */ H("strong", { children: t.name }),
2182
+ t.appId && /* @__PURE__ */ U("span", {
2182
2183
  className: "ml-1 text-xs text-text-secondary",
2183
2184
  children: [
2184
2185
  "(OAuth App: ",
@@ -2187,39 +2188,39 @@ var Ke = [
2187
2188
  ]
2188
2189
  })
2189
2190
  ]
2190
- })] }), /* @__PURE__ */ W("button", {
2191
+ })] }), /* @__PURE__ */ U("button", {
2191
2192
  onClick: S,
2192
2193
  className: "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-accent transition-colors",
2193
- children: [/* @__PURE__ */ U(Ce, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
2194
+ children: [/* @__PURE__ */ H(Ee, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
2194
2195
  })]
2195
2196
  }),
2196
- y && /* @__PURE__ */ W("div", {
2197
+ y && /* @__PURE__ */ U("div", {
2197
2198
  className: "rounded-lg border bg-status-info-bg-subtle p-4 text-sm space-y-2",
2198
2199
  children: [
2199
- /* @__PURE__ */ U("p", {
2200
+ /* @__PURE__ */ H("p", {
2200
2201
  className: "font-medium text-status-info-text",
2201
2202
  children: o("devportal.authenticationGuide", "Authentication Guide")
2202
2203
  }),
2203
- /* @__PURE__ */ W("p", {
2204
+ /* @__PURE__ */ U("p", {
2204
2205
  className: "text-status-info-text",
2205
2206
  children: [
2206
2207
  o("devportal.authenticationGuideText", "Your current session token has been filled in. For app-level authentication (Client Credentials flow), use the"),
2207
2208
  " ",
2208
- /* @__PURE__ */ U("strong", { children: o("devportal.oauthClientsTab", "OAuth Clients") }),
2209
+ /* @__PURE__ */ H("strong", { children: o("devportal.oauthClientsTab", "OAuth Clients") }),
2209
2210
  " ",
2210
2211
  o("devportal.authenticationGuideText2", "tab to get the app's clientId and clientSecret, then call:")
2211
2212
  ]
2212
2213
  }),
2213
- /* @__PURE__ */ U("pre", {
2214
+ /* @__PURE__ */ H("pre", {
2214
2215
  className: "rounded bg-status-info-bg-subtle p-2 text-xs overflow-x-auto text-status-info-text",
2215
2216
  children: "mutation {\n authenticateApp(input: {\n clientId: \"<your-client-id>\"\n clientSecret: \"<your-client-secret>\"\n scopes: []\n }) {\n accessToken\n tokenType\n expiresIn\n }\n}"
2216
2217
  }),
2217
- /* @__PURE__ */ W("p", {
2218
+ /* @__PURE__ */ U("p", {
2218
2219
  className: "text-status-info-text",
2219
2220
  children: [
2220
2221
  o("devportal.useReturnedAccessToken", "Use the returned"),
2221
2222
  " ",
2222
- /* @__PURE__ */ U("code", {
2223
+ /* @__PURE__ */ H("code", {
2223
2224
  className: "bg-status-info-bg-subtle px-1 rounded",
2224
2225
  children: "accessToken"
2225
2226
  }),
@@ -2227,256 +2228,84 @@ var Ke = [
2227
2228
  o("devportal.asBearerToken", "as the Bearer token below.")
2228
2229
  ]
2229
2230
  }),
2230
- /* @__PURE__ */ U("button", {
2231
+ /* @__PURE__ */ H("button", {
2231
2232
  onClick: () => b(!1),
2232
2233
  className: "text-xs text-accent-blue hover:underline",
2233
2234
  children: o("devportal.dismiss", "Dismiss")
2234
2235
  })
2235
2236
  ]
2236
2237
  }),
2237
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
2238
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
2238
2239
  className: "block text-sm font-medium mb-1",
2239
2240
  children: o("devportal.gatewayEndpoint", "Gateway Endpoint")
2240
- }), /* @__PURE__ */ W("div", {
2241
+ }), /* @__PURE__ */ U("div", {
2241
2242
  className: "flex gap-2",
2242
- children: [/* @__PURE__ */ U("input", {
2243
+ children: [/* @__PURE__ */ H("input", {
2243
2244
  type: "text",
2244
2245
  value: h,
2245
2246
  onChange: (e) => g(e.target.value),
2246
2247
  className: "flex-1 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface"
2247
- }), /* @__PURE__ */ W("select", {
2248
+ }), /* @__PURE__ */ U("select", {
2248
2249
  onChange: (e) => g(e.target.value),
2249
2250
  className: "rounded-md border px-3 py-2 text-sm bg-bg-surface",
2250
2251
  value: h,
2251
- children: [/* @__PURE__ */ U("option", {
2252
+ children: [/* @__PURE__ */ H("option", {
2252
2253
  value: `${n || "https://gw-global.local.burdenoff.com"}/global/graphql`,
2253
2254
  children: o("devportal.globalGateway", "Global Gateway")
2254
- }), /* @__PURE__ */ U("option", {
2255
+ }), /* @__PURE__ */ H("option", {
2255
2256
  value: `${r || "https://gw-wspace.local.burdenoff.com"}/workspaces/graphql`,
2256
2257
  children: o("devportal.workspaceGateway", "Workspace Gateway")
2257
2258
  })]
2258
2259
  })]
2259
2260
  })] }),
2260
- /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
2261
+ /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
2261
2262
  className: "block text-sm font-medium mb-1",
2262
2263
  children: o("devportal.bearerToken", "Bearer Token")
2263
- }), /* @__PURE__ */ U("input", {
2264
+ }), /* @__PURE__ */ H("input", {
2264
2265
  type: "password",
2265
2266
  value: _,
2266
2267
  onChange: (e) => v(e.target.value),
2267
2268
  placeholder: o("devportal.pasteAccessToken", "Paste access token here..."),
2268
2269
  className: "w-full rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface"
2269
2270
  })] }),
2270
- /* @__PURE__ */ W("div", {
2271
+ /* @__PURE__ */ U("div", {
2271
2272
  className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
2272
- children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
2273
+ children: [/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
2273
2274
  className: "block text-sm font-medium mb-1",
2274
2275
  children: o("devportal.query", "Query")
2275
- }), /* @__PURE__ */ U("textarea", {
2276
+ }), /* @__PURE__ */ H("textarea", {
2276
2277
  value: s,
2277
2278
  onChange: (e) => c(e.target.value),
2278
2279
  className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface resize-y",
2279
2280
  spellCheck: !1
2280
- })] }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
2281
+ })] }), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
2281
2282
  className: "block text-sm font-medium mb-1",
2282
2283
  children: o("devportal.variablesJson", "Variables (JSON)")
2283
- }), /* @__PURE__ */ U("textarea", {
2284
+ }), /* @__PURE__ */ H("textarea", {
2284
2285
  value: l,
2285
2286
  onChange: (e) => u(e.target.value),
2286
2287
  className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface resize-y",
2287
2288
  spellCheck: !1
2288
2289
  })] })]
2289
2290
  }),
2290
- /* @__PURE__ */ W("button", {
2291
+ /* @__PURE__ */ U("button", {
2291
2292
  onClick: x,
2292
2293
  disabled: p,
2293
2294
  className: "flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
2294
- children: [p ? /* @__PURE__ */ U(R, {
2295
+ children: [p ? /* @__PURE__ */ H(L, {
2295
2296
  size: 16,
2296
2297
  className: "animate-spin"
2297
- }) : /* @__PURE__ */ U(L, { size: 16 }), p ? o("devportal.executing", "Executing...") : o("devportal.executeQuery", "Execute Query")]
2298
+ }) : /* @__PURE__ */ H(I, { size: 16 }), p ? o("devportal.executing", "Executing...") : o("devportal.executeQuery", "Execute Query")]
2298
2299
  }),
2299
- d && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
2300
+ d && /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("label", {
2300
2301
  className: "block text-sm font-medium mb-1",
2301
2302
  children: o("devportal.response", "Response")
2302
- }), /* @__PURE__ */ U("pre", {
2303
+ }), /* @__PURE__ */ H("pre", {
2303
2304
  className: "w-full max-h-96 overflow-auto rounded-md border bg-bg-sunken p-4 text-xs font-mono",
2304
2305
  children: d
2305
2306
  })] })
2306
2307
  ]
2307
2308
  });
2308
- }, ut = ({ label: e, value: n, onChange: r, hint: i, accept: a = "image/png,image/jpeg,image/webp,image/gif,image/svg+xml", aspectClass: o = "aspect-square", upload: s, uploading: c, progress: l, error: u }) => {
2309
- let d = M(null), [f, p] = N(!1), m = M(n);
2310
- m.current !== n && (m.current = n, f && p(!1));
2311
- let h = A(async (e) => {
2312
- try {
2313
- r((await s(e)).downloadUrl);
2314
- } catch {}
2315
- }, [s, r]);
2316
- return /* @__PURE__ */ W("div", {
2317
- className: "space-y-1.5",
2318
- children: [
2319
- /* @__PURE__ */ U("label", {
2320
- className: "text-sm font-medium",
2321
- children: e
2322
- }),
2323
- /* @__PURE__ */ W("div", {
2324
- className: "flex gap-3 items-start",
2325
- children: [/* @__PURE__ */ W("div", {
2326
- className: t("relative shrink-0 w-20 rounded-lg border border-border-subtle bg-bg-sunken overflow-hidden flex items-center justify-center", o),
2327
- children: [n && !f ? /* @__PURE__ */ U("img", {
2328
- src: n,
2329
- alt: e,
2330
- className: "w-full h-full object-cover",
2331
- onError: () => p(!0)
2332
- }) : /* @__PURE__ */ U(B, {
2333
- size: 18,
2334
- className: "text-text-secondary opacity-40"
2335
- }), c && /* @__PURE__ */ W("div", {
2336
- className: "absolute inset-0 bg-bg-overlay flex flex-col items-center justify-center gap-1",
2337
- children: [/* @__PURE__ */ U(R, {
2338
- size: 14,
2339
- className: "animate-spin text-white"
2340
- }), /* @__PURE__ */ W("span", {
2341
- className: "text-white text-xs",
2342
- children: [l, "%"]
2343
- })]
2344
- })]
2345
- }), /* @__PURE__ */ W("div", {
2346
- className: "flex-1 space-y-1.5",
2347
- children: [
2348
- /* @__PURE__ */ U("input", {
2349
- type: "url",
2350
- value: n,
2351
- onChange: (e) => r(e.target.value),
2352
- placeholder: "https://...",
2353
- className: "w-full rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30"
2354
- }),
2355
- /* @__PURE__ */ U("input", {
2356
- ref: d,
2357
- type: "file",
2358
- accept: a,
2359
- className: "hidden",
2360
- onChange: (e) => {
2361
- let t = e.target.files?.[0];
2362
- t && h(t), e.target.value = "";
2363
- }
2364
- }),
2365
- /* @__PURE__ */ W("button", {
2366
- type: "button",
2367
- disabled: c,
2368
- onClick: () => d.current?.click(),
2369
- className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
2370
- children: [/* @__PURE__ */ U(B, { size: 11 }), c ? `Uploading… ${l}%` : "Upload image"]
2371
- }),
2372
- u && /* @__PURE__ */ U("p", {
2373
- className: "text-xs text-status-error-text",
2374
- children: u
2375
- })
2376
- ]
2377
- })]
2378
- }),
2379
- i && /* @__PURE__ */ U("p", {
2380
- className: "text-xs text-text-secondary",
2381
- children: i
2382
- })
2383
- ]
2384
- });
2385
- }, dt = ({ urls: e, onChange: n, upload: r, uploading: i, progress: a, error: o }) => {
2386
- let s = M(null), [c, l] = N(""), u = A(async (t) => {
2387
- try {
2388
- let i = await r(t);
2389
- n([...e, i.downloadUrl]);
2390
- } catch {}
2391
- }, [
2392
- r,
2393
- n,
2394
- e
2395
- ]), d = () => {
2396
- let t = c.trim();
2397
- t && !e.includes(t) && (n([...e, t]), l(""));
2398
- }, f = (t) => {
2399
- n(e.filter((e, n) => n !== t));
2400
- };
2401
- return /* @__PURE__ */ W("div", {
2402
- className: "space-y-2",
2403
- children: [
2404
- /* @__PURE__ */ W("div", {
2405
- className: "flex flex-col gap-0.5",
2406
- children: [/* @__PURE__ */ U("label", {
2407
- className: "text-sm font-medium",
2408
- children: "Screenshots"
2409
- }), /* @__PURE__ */ U("p", {
2410
- className: "text-xs text-text-muted",
2411
- children: "Shown in the horizontal preview strip below the hero — wide landscape proportions work best (16:9)"
2412
- })]
2413
- }),
2414
- /* @__PURE__ */ W("div", {
2415
- className: "flex flex-wrap gap-3",
2416
- children: [e.map((e, t) => /* @__PURE__ */ W("div", {
2417
- className: "relative group w-36 aspect-video rounded-lg border border-border-subtle overflow-hidden bg-bg-sunken",
2418
- children: [/* @__PURE__ */ U("img", {
2419
- src: e,
2420
- alt: `Screenshot ${t + 1}`,
2421
- className: "w-full h-full object-cover"
2422
- }), /* @__PURE__ */ U("button", {
2423
- type: "button",
2424
- onClick: () => f(t),
2425
- className: "absolute top-1 right-1 rounded-full bg-bg-overlay text-white p-0.5 opacity-0 group-hover:opacity-100 transition-opacity",
2426
- children: /* @__PURE__ */ U(Ie, { size: 12 })
2427
- })]
2428
- }, t)), /* @__PURE__ */ U("button", {
2429
- type: "button",
2430
- disabled: i,
2431
- onClick: () => s.current?.click(),
2432
- className: t("w-36 aspect-video rounded-lg border-2 border-dashed border-border-subtle flex flex-col items-center justify-center gap-1.5 text-text-secondary hover:border-border-strong hover:bg-bg-sunken transition-colors disabled:opacity-50"),
2433
- children: i ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
2434
- size: 18,
2435
- className: "animate-spin text-primary"
2436
- }), /* @__PURE__ */ W("span", {
2437
- className: "text-xs",
2438
- children: [a, "%"]
2439
- })] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(B, { size: 18 }), /* @__PURE__ */ U("span", {
2440
- className: "text-xs",
2441
- children: "Add screenshot"
2442
- })] })
2443
- })]
2444
- }),
2445
- /* @__PURE__ */ W("div", {
2446
- className: "flex gap-2",
2447
- children: [/* @__PURE__ */ U("input", {
2448
- type: "url",
2449
- value: c,
2450
- onChange: (e) => l(e.target.value),
2451
- onKeyDown: (e) => {
2452
- e.key === "Enter" && (e.preventDefault(), d());
2453
- },
2454
- placeholder: "https://... paste a screenshot URL",
2455
- className: "flex-1 rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30"
2456
- }), /* @__PURE__ */ U("button", {
2457
- type: "button",
2458
- onClick: d,
2459
- disabled: !c.trim(),
2460
- className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
2461
- children: "Add"
2462
- })]
2463
- }),
2464
- /* @__PURE__ */ U("input", {
2465
- ref: s,
2466
- type: "file",
2467
- accept: "image/png,image/jpeg,image/webp,image/gif",
2468
- className: "hidden",
2469
- onChange: (e) => {
2470
- let t = e.target.files?.[0];
2471
- t && u(t), e.target.value = "";
2472
- }
2473
- }),
2474
- o && /* @__PURE__ */ U("p", {
2475
- className: "text-xs text-status-error-text",
2476
- children: o
2477
- })
2478
- ]
2479
- });
2480
2309
  }, Y = new Set(["workflow", "template"]), ft = [{
2481
2310
  value: "FREE",
2482
2311
  label: "Free"
@@ -2587,13 +2416,13 @@ function mt(e) {
2587
2416
  };
2588
2417
  }
2589
2418
  var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i = !1, onNavigateToVersions: a, onNavigateToPricing: o, onNavigateToSubmission: s }) => {
2590
- let { workspacesGatewayUrl: c, authToken: l, workspaceId: u, getWorkspaceToken: d } = e(), { t: f } = G(), p = (e, t) => {
2419
+ let { workspacesGatewayUrl: c, authToken: l, workspaceId: u, getWorkspaceToken: d } = e(), { t: f } = W(), p = (e, t) => {
2591
2420
  let n = f(e);
2592
2421
  return n === e ? t : n;
2593
- }, [m, h] = N(() => mt(t)), [g, _] = N(!1), [v, y] = N(null), x = M(mt(t)), C = M(t);
2422
+ }, [m, h] = N(() => mt(t)), [g, _] = N(!1), [v, y] = N(null), x = pe(mt(t)), C = pe(t);
2594
2423
  C.current = t;
2595
2424
  let w = JSON.stringify(m) !== JSON.stringify(x.current), [T] = b();
2596
- de(() => {
2425
+ j(() => {
2597
2426
  let e = mt(C.current);
2598
2427
  h(e), x.current = e, y(null);
2599
2428
  }, [t.id]);
@@ -2642,21 +2471,21 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2642
2471
  } finally {
2643
2472
  _(!1);
2644
2473
  }
2645
- }, { upload: te, uploading: ne, progress: ae, error: oe } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: ce, uploading: le, progress: A, error: j } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: fe, uploading: pe, progress: me, error: I } = ue(c, l, u, d, "/DevPortal/Assets"), ve = Y.has(m.manifestItemType), ye = t.status === "SUBMITTED";
2646
- return /* @__PURE__ */ W("div", {
2474
+ }, { upload: te, uploading: ne, progress: ae, error: oe } = fe(c, l, u, d, "/DevPortal/Assets"), { upload: ce, uploading: le, progress: A, error: M } = fe(c, l, u, d, "/DevPortal/Assets"), { upload: me, uploading: he, progress: ge, error: ye } = fe(c, l, u, d, "/DevPortal/Assets"), xe = Y.has(m.manifestItemType), Se = t.status === "SUBMITTED";
2475
+ return /* @__PURE__ */ U("div", {
2647
2476
  className: "space-y-8 max-w-3xl",
2648
2477
  children: [
2649
- t.status === "PUBLISHED" ? /* @__PURE__ */ W("div", {
2478
+ t.status === "PUBLISHED" ? /* @__PURE__ */ U("div", {
2650
2479
  className: "flex items-start gap-3 rounded-lg border border-success/30 bg-success/10 px-4 py-3",
2651
- children: [/* @__PURE__ */ U(he, {
2480
+ children: [/* @__PURE__ */ H(_e, {
2652
2481
  size: 16,
2653
2482
  className: "text-success mt-0.5 shrink-0"
2654
- }), /* @__PURE__ */ W("div", {
2483
+ }), /* @__PURE__ */ U("div", {
2655
2484
  className: "text-sm",
2656
- children: [/* @__PURE__ */ U("span", {
2485
+ children: [/* @__PURE__ */ H("span", {
2657
2486
  className: "font-medium text-success",
2658
2487
  children: p("devportal.storeListing.published", "Published")
2659
- }), t.publishedAt && /* @__PURE__ */ W("span", {
2488
+ }), t.publishedAt && /* @__PURE__ */ U("span", {
2660
2489
  className: "text-text-secondary ml-2",
2661
2490
  children: [
2662
2491
  p("devportal.storeListing.since", "since"),
@@ -2665,59 +2494,59 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2665
2494
  ]
2666
2495
  })]
2667
2496
  })]
2668
- }) : ye ? /* @__PURE__ */ W("div", {
2497
+ }) : Se ? /* @__PURE__ */ U("div", {
2669
2498
  className: "flex items-center justify-between gap-3 rounded-lg border border-primary/30 bg-action-primary-bg/5 px-4 py-3",
2670
- children: [/* @__PURE__ */ W("div", {
2499
+ children: [/* @__PURE__ */ U("div", {
2671
2500
  className: "flex items-start gap-3",
2672
- children: [/* @__PURE__ */ U(_e, {
2501
+ children: [/* @__PURE__ */ H(be, {
2673
2502
  size: 16,
2674
2503
  className: "text-primary mt-0.5 shrink-0"
2675
- }), /* @__PURE__ */ W("div", {
2504
+ }), /* @__PURE__ */ U("div", {
2676
2505
  className: "text-sm",
2677
2506
  children: [
2678
- /* @__PURE__ */ U("span", {
2507
+ /* @__PURE__ */ H("span", {
2679
2508
  className: "font-medium text-primary",
2680
2509
  children: p("devportal.storeListing.underReview", "Submitted for review")
2681
2510
  }),
2682
- t.submittedAt && /* @__PURE__ */ U("span", {
2511
+ t.submittedAt && /* @__PURE__ */ H("span", {
2683
2512
  className: "text-text-secondary ml-2",
2684
2513
  children: new Date(t.submittedAt).toLocaleDateString()
2685
2514
  }),
2686
- t.reviewStatus && /* @__PURE__ */ W("span", {
2515
+ t.reviewStatus && /* @__PURE__ */ U("span", {
2687
2516
  className: "text-text-secondary ml-2",
2688
2517
  children: ["· ", t.reviewStatus]
2689
2518
  })
2690
2519
  ]
2691
2520
  })]
2692
- }), s && /* @__PURE__ */ W("button", {
2521
+ }), s && /* @__PURE__ */ U("button", {
2693
2522
  type: "button",
2694
2523
  onClick: s,
2695
2524
  className: "shrink-0 text-xs text-primary hover:underline font-medium flex items-center gap-1",
2696
- children: [p("devportal.viewStatus", "View Status"), /* @__PURE__ */ U(L, { size: 12 })]
2525
+ children: [p("devportal.viewStatus", "View Status"), /* @__PURE__ */ H(I, { size: 12 })]
2697
2526
  })]
2698
- }) : /* @__PURE__ */ W("div", {
2527
+ }) : /* @__PURE__ */ U("div", {
2699
2528
  className: "flex items-start gap-3 rounded-lg border border-warning/30 bg-warning/5 px-4 py-3",
2700
- children: [/* @__PURE__ */ U(P, {
2529
+ children: [/* @__PURE__ */ H(P, {
2701
2530
  size: 16,
2702
2531
  className: "text-warning mt-0.5 shrink-0"
2703
- }), /* @__PURE__ */ W("div", {
2532
+ }), /* @__PURE__ */ U("div", {
2704
2533
  className: "text-sm",
2705
- children: [/* @__PURE__ */ U("span", {
2534
+ children: [/* @__PURE__ */ H("span", {
2706
2535
  className: "font-medium text-warning",
2707
2536
  children: p("devportal.storeListing.draft", "Draft")
2708
- }), /* @__PURE__ */ U("span", {
2537
+ }), /* @__PURE__ */ H("span", {
2709
2538
  className: "text-text-secondary ml-2",
2710
2539
  children: p("devportal.storeListing.draftHint", "Complete your store listing and submit for review to publish.")
2711
2540
  })]
2712
2541
  })]
2713
2542
  }),
2714
- /* @__PURE__ */ U(S, {
2543
+ /* @__PURE__ */ H(S, {
2715
2544
  title: p("devportal.package", "Package"),
2716
2545
  description: p("devportal.packageDescription", "Technical configuration — how FluidGrid installs and runs this item"),
2717
- children: /* @__PURE__ */ W("div", {
2546
+ children: /* @__PURE__ */ U("div", {
2718
2547
  className: "space-y-6",
2719
2548
  children: [
2720
- /* @__PURE__ */ U(re, {
2549
+ /* @__PURE__ */ H(re, {
2721
2550
  label: p("devportal.storeItemType", "Item Type"),
2722
2551
  value: m.manifestItemType,
2723
2552
  onChange: (e) => {
@@ -2728,13 +2557,13 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2728
2557
  placeholder: p("devportal.selectItemType", "Select item type…"),
2729
2558
  hint: p("devportal.storeItemTypeHint", "Sub-category shown in the marketplace (e.g. Node vs Agent vs Parser)")
2730
2559
  }),
2731
- /* @__PURE__ */ U(k, {
2560
+ /* @__PURE__ */ H(k, {
2732
2561
  label: p("devportal.manifestDisplayName", "Display Name"),
2733
2562
  value: m.manifestDisplayName,
2734
2563
  onChange: (e) => E("manifestDisplayName", e.target.value),
2735
2564
  placeholder: "My Awesome Node"
2736
2565
  }),
2737
- ve && /* @__PURE__ */ U(ie, {
2566
+ xe && /* @__PURE__ */ H(ie, {
2738
2567
  label: t.appType === "WORKFLOW" ? p("devportal.workflowJsonContent", "Workflow Canvas Definition (JSON)") : p("devportal.jsonContent", "Template Definition (JSON)"),
2739
2568
  value: m.manifestJsonContent,
2740
2569
  onChange: (e) => E("manifestJsonContent", e.target.value),
@@ -2745,15 +2574,15 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2745
2574
  ]
2746
2575
  })
2747
2576
  }),
2748
- /* @__PURE__ */ U(S, {
2577
+ /* @__PURE__ */ H(S, {
2749
2578
  title: p("devportal.storePresentation", "Store Presence"),
2750
2579
  description: p("devportal.storePresentationDescription", "Visual assets and copy shown to users browsing the marketplace"),
2751
- children: /* @__PURE__ */ W("div", {
2580
+ children: /* @__PURE__ */ U("div", {
2752
2581
  className: "space-y-5",
2753
2582
  children: [
2754
- /* @__PURE__ */ W("div", {
2583
+ /* @__PURE__ */ U("div", {
2755
2584
  className: "grid gap-5 sm:grid-cols-2",
2756
- children: [/* @__PURE__ */ U(ut, {
2585
+ children: [/* @__PURE__ */ H(ue, {
2757
2586
  label: p("devportal.iconUrl", "Icon"),
2758
2587
  value: m.iconUrl,
2759
2588
  onChange: (e) => E("iconUrl", e),
@@ -2763,7 +2592,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2763
2592
  uploading: ne,
2764
2593
  progress: ae,
2765
2594
  error: oe
2766
- }), /* @__PURE__ */ U(ut, {
2595
+ }), /* @__PURE__ */ H(ue, {
2767
2596
  label: p("devportal.bannerUrl", "Banner"),
2768
2597
  value: m.bannerUrl,
2769
2598
  onChange: (e) => E("bannerUrl", e),
@@ -2772,17 +2601,17 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2772
2601
  upload: ce,
2773
2602
  uploading: le,
2774
2603
  progress: A,
2775
- error: j
2604
+ error: M
2776
2605
  })]
2777
2606
  }),
2778
- /* @__PURE__ */ U(k, {
2607
+ /* @__PURE__ */ H(k, {
2779
2608
  label: p("devportal.videoUrl", "Demo Video URL"),
2780
2609
  value: m.videoUrl,
2781
2610
  onChange: (e) => E("videoUrl", e.target.value),
2782
2611
  placeholder: "https://...",
2783
2612
  hint: p("devportal.videoUrlHint", "YouTube or Vimeo embed URL")
2784
2613
  }),
2785
- /* @__PURE__ */ U(se, {
2614
+ /* @__PURE__ */ H(se, {
2786
2615
  label: p("devportal.shortDescription", "Short Description"),
2787
2616
  value: m.shortDescription,
2788
2617
  onChange: (e) => E("shortDescription", e),
@@ -2790,62 +2619,62 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2790
2619
  rows: 2,
2791
2620
  hint: `${m.shortDescription.length}/200 · ${p("devportal.shortDescHint", "Shown in search results and cards")}`
2792
2621
  }),
2793
- /* @__PURE__ */ U(se, {
2622
+ /* @__PURE__ */ H(se, {
2794
2623
  label: p("devportal.longDescription", "Full Description"),
2795
2624
  value: m.description,
2796
2625
  onChange: (e) => E("description", e),
2797
2626
  rows: 5,
2798
2627
  hint: p("devportal.fullDescHint", "Markdown supported")
2799
2628
  }),
2800
- /* @__PURE__ */ U(dt, {
2629
+ /* @__PURE__ */ H(de, {
2801
2630
  urls: m.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean),
2802
2631
  onChange: (e) => E("screenshotsText", e.join("\n")),
2803
- upload: fe,
2804
- uploading: pe,
2805
- progress: me,
2806
- error: I
2632
+ upload: me,
2633
+ uploading: he,
2634
+ progress: ge,
2635
+ error: ye
2807
2636
  })
2808
2637
  ]
2809
2638
  })
2810
2639
  }),
2811
- /* @__PURE__ */ U(S, {
2640
+ /* @__PURE__ */ H(S, {
2812
2641
  title: p("devportal.linksPolicies", "Links & Policies"),
2813
2642
  description: p("devportal.linksPoliciesDescription", "External resources and legal documents — privacy policy and terms are required for store submission"),
2814
- children: /* @__PURE__ */ W("div", {
2643
+ children: /* @__PURE__ */ U("div", {
2815
2644
  className: "grid gap-4 sm:grid-cols-2",
2816
2645
  children: [
2817
- /* @__PURE__ */ U(k, {
2646
+ /* @__PURE__ */ H(k, {
2818
2647
  label: p("devportal.websiteUrl", "Website"),
2819
2648
  value: m.websiteUrl,
2820
2649
  onChange: (e) => E("websiteUrl", e.target.value),
2821
2650
  placeholder: "https://..."
2822
2651
  }),
2823
- /* @__PURE__ */ U(k, {
2652
+ /* @__PURE__ */ H(k, {
2824
2653
  label: p("devportal.documentationUrl", "Documentation"),
2825
2654
  value: m.documentationUrl,
2826
2655
  onChange: (e) => E("documentationUrl", e.target.value),
2827
2656
  placeholder: "https://..."
2828
2657
  }),
2829
- /* @__PURE__ */ U(k, {
2658
+ /* @__PURE__ */ H(k, {
2830
2659
  label: p("devportal.githubUrl", "GitHub"),
2831
2660
  value: m.githubUrl,
2832
2661
  onChange: (e) => E("githubUrl", e.target.value),
2833
2662
  placeholder: "https://github.com/..."
2834
2663
  }),
2835
- /* @__PURE__ */ U(k, {
2664
+ /* @__PURE__ */ H(k, {
2836
2665
  label: p("devportal.supportUrl", "Support"),
2837
2666
  value: m.supportUrl,
2838
2667
  onChange: (e) => E("supportUrl", e.target.value),
2839
2668
  placeholder: "https://..."
2840
2669
  }),
2841
- /* @__PURE__ */ U(k, {
2670
+ /* @__PURE__ */ H(k, {
2842
2671
  label: `${p("devportal.privacyPolicyUrl", "Privacy Policy")} *`,
2843
2672
  value: m.privacyPolicyUrl,
2844
2673
  onChange: (e) => E("privacyPolicyUrl", e.target.value),
2845
2674
  placeholder: "https://...",
2846
2675
  hint: p("devportal.requiredForStore", "Required for store submission")
2847
2676
  }),
2848
- /* @__PURE__ */ U(k, {
2677
+ /* @__PURE__ */ H(k, {
2849
2678
  label: `${p("devportal.termsOfServiceUrl", "Terms of Service")} *`,
2850
2679
  value: m.termsOfServiceUrl,
2851
2680
  onChange: (e) => E("termsOfServiceUrl", e.target.value),
@@ -2855,52 +2684,52 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2855
2684
  ]
2856
2685
  })
2857
2686
  }),
2858
- /* @__PURE__ */ W("div", {
2687
+ /* @__PURE__ */ U("div", {
2859
2688
  className: "border-t pt-6 space-y-3",
2860
2689
  children: [
2861
- v === "success" && /* @__PURE__ */ W("div", {
2690
+ v === "success" && /* @__PURE__ */ U("div", {
2862
2691
  className: "flex items-center gap-2 rounded-md border border-success/30 bg-success/10 px-3 py-2 text-sm text-success",
2863
- children: [/* @__PURE__ */ U(he, {
2692
+ children: [/* @__PURE__ */ H(_e, {
2864
2693
  size: 15,
2865
2694
  className: "shrink-0"
2866
2695
  }), p("devportal.storeListing.savedSuccess", "Store listing saved successfully.")]
2867
2696
  }),
2868
- v === "error" && /* @__PURE__ */ W("div", {
2697
+ v === "error" && /* @__PURE__ */ U("div", {
2869
2698
  className: "flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",
2870
- children: [/* @__PURE__ */ U(P, {
2699
+ children: [/* @__PURE__ */ H(P, {
2871
2700
  size: 15,
2872
2701
  className: "shrink-0"
2873
2702
  }), p("devportal.storeListing.savedError", "Failed to save. Please try again.")]
2874
2703
  }),
2875
- /* @__PURE__ */ W("div", {
2704
+ /* @__PURE__ */ U("div", {
2876
2705
  className: "flex flex-wrap items-center gap-3",
2877
2706
  children: [
2878
- /* @__PURE__ */ U("button", {
2707
+ /* @__PURE__ */ H("button", {
2879
2708
  type: "button",
2880
2709
  onClick: ee,
2881
2710
  disabled: g || !D || !w,
2882
2711
  title: D ? w ? void 0 : p("devportal.storeListing.noChanges", "All changes saved — edit any field to save again") : p("devportal.storeListing.requiredFieldsHint", "Fill in Short Description, Privacy Policy URL, and Terms of Service URL to save"),
2883
2712
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
2884
- children: g ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
2713
+ children: g ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
2885
2714
  size: 16,
2886
2715
  className: "animate-spin"
2887
- }), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(Me, { size: 16 }), p("devportal.saveStoreListing", "Save Store Listing")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(F, { size: 16 }), p("devportal.saved", "Saved")] })
2716
+ }), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Pe, { size: 16 }), p("devportal.saveStoreListing", "Save Store Listing")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(F, { size: 16 }), p("devportal.saved", "Saved")] })
2888
2717
  }),
2889
- !D && /* @__PURE__ */ U("p", {
2718
+ !D && /* @__PURE__ */ H("p", {
2890
2719
  className: "text-xs text-text-secondary",
2891
2720
  children: p("devportal.storeListing.requiredFieldsLabel", "Short Description, Privacy Policy URL, and Terms of Service URL are required")
2892
2721
  }),
2893
- r && n === 0 && a && /* @__PURE__ */ W("button", {
2722
+ r && n === 0 && a && /* @__PURE__ */ U("button", {
2894
2723
  type: "button",
2895
2724
  onClick: a,
2896
2725
  className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
2897
- children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */ U(ge, { size: 15 })]
2726
+ children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */ H(ve, { size: 15 })]
2898
2727
  }),
2899
- (!r || n > 0) && !i && o && /* @__PURE__ */ W("button", {
2728
+ (!r || n > 0) && !i && o && /* @__PURE__ */ U("button", {
2900
2729
  type: "button",
2901
2730
  onClick: o,
2902
2731
  className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
2903
- children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */ U(ge, { size: 15 })]
2732
+ children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */ H(ve, { size: 15 })]
2904
2733
  })
2905
2734
  ]
2906
2735
  })
@@ -2909,20 +2738,20 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2909
2738
  ]
2910
2739
  });
2911
2740
  }, Z = ({ label: e, value: n, trend: r }) => {
2912
- let { t: i } = G();
2913
- return /* @__PURE__ */ W(Ve, {
2741
+ let { t: i } = W();
2742
+ return /* @__PURE__ */ U(We, {
2914
2743
  treatment: "metric",
2915
2744
  className: "p-4",
2916
2745
  children: [
2917
- /* @__PURE__ */ U("p", {
2746
+ /* @__PURE__ */ H("p", {
2918
2747
  className: "text-sm text-text-secondary",
2919
2748
  children: e
2920
2749
  }),
2921
- /* @__PURE__ */ U("p", {
2750
+ /* @__PURE__ */ H("p", {
2922
2751
  className: "text-2xl font-bold tabular-nums",
2923
2752
  children: n
2924
2753
  }),
2925
- r !== void 0 && /* @__PURE__ */ W("p", {
2754
+ r !== void 0 && /* @__PURE__ */ U("p", {
2926
2755
  className: t("text-xs mt-1 tabular-nums", r > 0 ? "text-status-success-text" : r < 0 ? "text-status-error-text" : "text-text-secondary"),
2927
2756
  children: [
2928
2757
  r > 0 ? "+" : "",
@@ -2936,12 +2765,12 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
2936
2765
  })
2937
2766
  ]
2938
2767
  });
2939
- }, Q = ({ label: e, url: t }) => /* @__PURE__ */ W("a", {
2768
+ }, Q = ({ label: e, url: t }) => /* @__PURE__ */ U("a", {
2940
2769
  href: t,
2941
2770
  target: "_blank",
2942
2771
  rel: "noopener noreferrer",
2943
2772
  className: "flex items-center gap-2 text-sm text-primary hover:underline",
2944
- children: [/* @__PURE__ */ U(L, { size: 14 }), e]
2773
+ children: [/* @__PURE__ */ H(I, { size: 14 }), e]
2945
2774
  }), $ = {
2946
2775
  auth: {
2947
2776
  label: "Authentication",
@@ -3027,9 +2856,9 @@ function yt(e, t) {
3027
2856
  let n = /* @__PURE__ */ new Set();
3028
2857
  return t.filter((e) => n.has(e.resource) ? !1 : (n.add(e.resource), !0));
3029
2858
  }
3030
- var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
2859
+ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
3031
2860
  className: "flex items-center gap-0.5 rounded-md border border-border-subtle bg-bg-sunken/50 p-0.5",
3032
- children: ["read", "write"].map((n) => /* @__PURE__ */ U("button", {
2861
+ children: ["read", "write"].map((n) => /* @__PURE__ */ H("button", {
3033
2862
  type: "button",
3034
2863
  onClick: () => t(n),
3035
2864
  className: `rounded px-2.5 py-1 text-xs font-medium transition-colors whitespace-nowrap ${e === n ? "bg-bg-base text-text-primary shadow-sm" : "text-text-secondary hover:text-text-primary"}`,
@@ -3065,58 +2894,58 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
3065
2894
  } finally {
3066
2895
  m(!1);
3067
2896
  }
3068
- }, w = /* @__PURE__ */ U("div", {
2897
+ }, w = /* @__PURE__ */ H("div", {
3069
2898
  className: "rounded-lg border border-border-subtle divide-y divide-border-subtle",
3070
- children: a.map((e) => /* @__PURE__ */ W("div", {
2899
+ children: a.map((e) => /* @__PURE__ */ U("div", {
3071
2900
  className: "flex items-center gap-3 px-4 py-3 hover:bg-bg-sunken/30 transition-colors",
3072
- children: [/* @__PURE__ */ W("div", {
2901
+ children: [/* @__PURE__ */ U("div", {
3073
2902
  className: "flex-1 min-w-0",
3074
2903
  children: [
3075
- /* @__PURE__ */ U("p", {
2904
+ /* @__PURE__ */ H("p", {
3076
2905
  className: "text-sm font-medium text-text-primary",
3077
2906
  children: $[e.resource]?.label ?? e.resource
3078
2907
  }),
3079
- $[e.resource]?.description && /* @__PURE__ */ U("p", {
2908
+ $[e.resource]?.description && /* @__PURE__ */ H("p", {
3080
2909
  className: "text-xs text-text-secondary",
3081
2910
  children: $[e.resource].description
3082
2911
  }),
3083
- !$[e.resource] && /* @__PURE__ */ U("p", {
2912
+ !$[e.resource] && /* @__PURE__ */ H("p", {
3084
2913
  className: "text-xs text-text-tertiary font-mono",
3085
2914
  children: "custom scope"
3086
2915
  })
3087
2916
  ]
3088
- }), n ? /* @__PURE__ */ U("span", {
2917
+ }), n ? /* @__PURE__ */ H("span", {
3089
2918
  className: `rounded-full px-2.5 py-0.5 text-xs font-medium ${e.level === "write" ? "bg-status-warning-bg text-status-warning-text" : "bg-bg-sunken text-text-secondary"}`,
3090
2919
  children: e.level === "write" ? "Read & Write" : "Read"
3091
- }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(bt, {
2920
+ }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(bt, {
3092
2921
  level: e.level,
3093
2922
  onChange: (t) => v(e.resource, t)
3094
- }), /* @__PURE__ */ U("button", {
2923
+ }), /* @__PURE__ */ H("button", {
3095
2924
  type: "button",
3096
2925
  onClick: () => y(e.resource),
3097
2926
  title: "Remove permission",
3098
2927
  className: "p-1.5 rounded text-text-tertiary hover:text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
3099
- children: /* @__PURE__ */ U(Ie, { size: 14 })
2928
+ children: /* @__PURE__ */ H(ze, { size: 14 })
3100
2929
  })] })]
3101
2930
  }, e.resource))
3102
2931
  });
3103
- return /* @__PURE__ */ U(S, {
2932
+ return /* @__PURE__ */ H(S, {
3104
2933
  title: "Permissions",
3105
2934
  description: "These are the permissions your app requests from users. Users see exactly this list when authorizing your app.",
3106
- children: /* @__PURE__ */ U("div", {
2935
+ children: /* @__PURE__ */ H("div", {
3107
2936
  className: "space-y-4",
3108
- children: n ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ W("div", {
2937
+ children: n ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ U("div", {
3109
2938
  className: "rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-3 flex gap-2 text-sm",
3110
- children: [/* @__PURE__ */ U(Se, {
2939
+ children: [/* @__PURE__ */ H(Te, {
3111
2940
  size: 15,
3112
2941
  className: "flex-shrink-0 mt-0.5 text-status-warning-text"
3113
- }), /* @__PURE__ */ W("span", {
2942
+ }), /* @__PURE__ */ U("span", {
3114
2943
  className: "text-status-warning-text",
3115
2944
  children: [
3116
- /* @__PURE__ */ U("strong", { children: "Permission changes require a new version." }),
2945
+ /* @__PURE__ */ H("strong", { children: "Permission changes require a new version." }),
3117
2946
  " Your app is live and users have already consented to the permissions below. To request new or fewer permissions, publish a new version — existing users will be shown what changed and asked to re-consent before the new version takes effect.",
3118
2947
  " ",
3119
- r && /* @__PURE__ */ U("button", {
2948
+ r && /* @__PURE__ */ H("button", {
3120
2949
  type: "button",
3121
2950
  onClick: r,
3122
2951
  className: "underline font-medium hover:opacity-80 transition-opacity",
@@ -3124,31 +2953,31 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
3124
2953
  })
3125
2954
  ]
3126
2955
  })]
3127
- }), a.length === 0 ? /* @__PURE__ */ U("div", {
2956
+ }), a.length === 0 ? /* @__PURE__ */ H("div", {
3128
2957
  className: "rounded-lg border border-border-subtle border-dashed p-6 text-center text-sm text-text-secondary",
3129
2958
  children: "No permissions configured for this version."
3130
- }) : w] }) : /* @__PURE__ */ W(H, { children: [
3131
- a.length === 0 ? /* @__PURE__ */ W("div", {
2959
+ }) : w] }) : /* @__PURE__ */ U(V, { children: [
2960
+ a.length === 0 ? /* @__PURE__ */ U("div", {
3132
2961
  className: "rounded-lg border border-border-subtle border-dashed p-8 flex flex-col items-center gap-2 text-center text-text-secondary",
3133
2962
  children: [
3134
- /* @__PURE__ */ U(je, {
2963
+ /* @__PURE__ */ H(z, {
3135
2964
  size: 28,
3136
2965
  className: "opacity-25"
3137
2966
  }),
3138
- /* @__PURE__ */ U("p", {
2967
+ /* @__PURE__ */ H("p", {
3139
2968
  className: "text-sm font-medium text-text-primary",
3140
2969
  children: "No permissions configured"
3141
2970
  }),
3142
- /* @__PURE__ */ U("p", {
2971
+ /* @__PURE__ */ H("p", {
3143
2972
  className: "text-xs",
3144
2973
  children: "Add the permissions your app needs to request from users."
3145
2974
  })
3146
2975
  ]
3147
2976
  }) : w,
3148
- s ? /* @__PURE__ */ W("div", {
2977
+ s ? /* @__PURE__ */ U("div", {
3149
2978
  className: "rounded-lg border border-border-subtle p-3 flex items-center gap-2 flex-wrap",
3150
2979
  children: [
3151
- /* @__PURE__ */ U("input", {
2980
+ /* @__PURE__ */ H("input", {
3152
2981
  type: "text",
3153
2982
  value: l,
3154
2983
  onChange: (e) => u(e.target.value),
@@ -3160,60 +2989,60 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
3160
2989
  autoFocus: !0,
3161
2990
  className: "flex-1 min-w-40 rounded-md border border-border-subtle bg-bg-base px-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-primary"
3162
2991
  }),
3163
- /* @__PURE__ */ U("datalist", {
2992
+ /* @__PURE__ */ H("datalist", {
3164
2993
  id: "perm-resource-suggestions",
3165
- children: gt.filter((e) => !a.some((t) => t.resource === e)).map((e) => /* @__PURE__ */ U("option", {
2994
+ children: gt.filter((e) => !a.some((t) => t.resource === e)).map((e) => /* @__PURE__ */ H("option", {
3166
2995
  value: e,
3167
2996
  children: $[e].label
3168
2997
  }, e))
3169
2998
  }),
3170
- /* @__PURE__ */ U(bt, {
2999
+ /* @__PURE__ */ H(bt, {
3171
3000
  level: d,
3172
3001
  onChange: f
3173
3002
  }),
3174
- /* @__PURE__ */ U("button", {
3003
+ /* @__PURE__ */ H("button", {
3175
3004
  type: "button",
3176
3005
  onClick: x,
3177
3006
  disabled: !l.trim(),
3178
3007
  className: "px-3 py-1.5 rounded-md bg-action-primary-bg text-action-primary-text text-xs font-medium hover:bg-action-primary-bg/90 disabled:opacity-50 transition-colors",
3179
3008
  children: "Add"
3180
3009
  }),
3181
- /* @__PURE__ */ U("button", {
3010
+ /* @__PURE__ */ H("button", {
3182
3011
  type: "button",
3183
3012
  onClick: () => {
3184
3013
  c(!1), u("");
3185
3014
  },
3186
3015
  className: "p-1.5 rounded text-text-secondary hover:text-text-primary transition-colors",
3187
- children: /* @__PURE__ */ U(Ie, { size: 14 })
3016
+ children: /* @__PURE__ */ H(ze, { size: 14 })
3188
3017
  })
3189
3018
  ]
3190
- }) : /* @__PURE__ */ W("button", {
3019
+ }) : /* @__PURE__ */ U("button", {
3191
3020
  type: "button",
3192
3021
  onClick: () => c(!0),
3193
3022
  className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
3194
- children: [/* @__PURE__ */ U(z, { size: 14 }), "Add permission"]
3023
+ children: [/* @__PURE__ */ H(R, { size: 14 }), "Add permission"]
3195
3024
  }),
3196
- /* @__PURE__ */ W("div", {
3025
+ /* @__PURE__ */ U("div", {
3197
3026
  className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 flex gap-2 text-xs text-text-secondary",
3198
- children: [/* @__PURE__ */ U(Se, {
3027
+ children: [/* @__PURE__ */ H(Te, {
3199
3028
  size: 14,
3200
3029
  className: "flex-shrink-0 mt-0.5"
3201
- }), /* @__PURE__ */ W("span", { children: [/* @__PURE__ */ U("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
3030
+ }), /* @__PURE__ */ U("span", { children: [/* @__PURE__ */ H("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
3202
3031
  }),
3203
- /* @__PURE__ */ W("div", {
3032
+ /* @__PURE__ */ U("div", {
3204
3033
  className: "flex items-center justify-end gap-3",
3205
- children: [h && /* @__PURE__ */ W("span", {
3034
+ children: [h && /* @__PURE__ */ U("span", {
3206
3035
  className: "flex items-center gap-1.5 text-sm text-status-success-text",
3207
- children: [/* @__PURE__ */ U(he, { size: 14 }), "Saved"]
3208
- }), /* @__PURE__ */ W("button", {
3036
+ children: [/* @__PURE__ */ H(_e, { size: 14 }), "Saved"]
3037
+ }), /* @__PURE__ */ U("button", {
3209
3038
  type: "button",
3210
3039
  onClick: () => void C(),
3211
3040
  disabled: p,
3212
3041
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
3213
- children: [p ? /* @__PURE__ */ U(R, {
3042
+ children: [p ? /* @__PURE__ */ H(L, {
3214
3043
  size: 14,
3215
3044
  className: "animate-spin"
3216
- }) : /* @__PURE__ */ U(je, { size: 14 }), "Save Permissions"]
3045
+ }) : /* @__PURE__ */ H(z, { size: 14 }), "Save Permissions"]
3217
3046
  })]
3218
3047
  })
3219
3048
  ] })
@@ -3221,6 +3050,6 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
3221
3050
  });
3222
3051
  };
3223
3052
  //#endregion
3224
- export { K as ApplicationDetailPage };
3053
+ export { q as ApplicationDetailPage };
3225
3054
 
3226
3055
  //# sourceMappingURL=ApplicationDetailPage.js.map