@burdenoff/microfe-devportal 2026.805.2 → 2026.805.3

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