@burdenoff/microfe-devportal 2026.624.28 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,11 +18,11 @@ import { useDevportalPermission as se } from "../hooks/usePermission.js";
18
18
  import { usePackageUpload as k } from "../hooks/usePackageUpload.js";
19
19
  import { useCallback as A, useEffect as ce, useMemo as j, useRef as M, useState as N } from "react";
20
20
  import { useI18n as P } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
21
- import { AlertCircle as le, AppWindow as F, BarChart3 as I, CheckCircle as L, CheckCircle2 as ue, Clock as de, Download as fe, Edit as pe, ExternalLink as R, FlaskConical as me, Info as z, Key as he, Loader2 as B, MoreHorizontal as ge, Plus as V, Power as _e, RefreshCw as ve, SendHorizontal as ye, Shield as H, Store as be, Upload as U, Users as W, Webhook as xe, X as Se, XCircle as Ce } from "lucide-react";
22
- import { useParams as we, useSearchParams as Te } from "react-router-dom";
23
- import { Fragment as G, jsx as K, jsxs as q } from "react/jsx-runtime";
24
- import { gql as J } from "@apollo/client";
25
- import { useMutation as Ee, useQuery as Y } from "@apollo/client/react";
21
+ import { AlertCircle as le, AppWindow as F, BarChart3 as I, CheckCircle as L, CheckCircle2 as ue, Clock as de, Download as fe, Edit as pe, ExternalLink as R, FlaskConical as me, Info as he, Key as ge, Loader2 as z, MoreHorizontal as _e, Plus as B, Power as ve, RefreshCw as ye, SendHorizontal as be, Shield as V, Store as xe, Upload as H, Users as U, Webhook as Se, X as Ce, XCircle as we } from "lucide-react";
22
+ import { useParams as Te, useSearchParams as Ee } from "react-router-dom";
23
+ import { Fragment as W, jsx as G, jsxs as K } from "react/jsx-runtime";
24
+ import { gql as q } from "@apollo/client";
25
+ import { useMutation as J, useQuery as Y } from "@apollo/client/react";
26
26
  //#region src/devportal/pages/ApplicationDetailPage.tsx
27
27
  function De(e) {
28
28
  return e ? {
@@ -104,7 +104,7 @@ function Oe(e) {
104
104
  updatedAt: e.updatedAt
105
105
  };
106
106
  }
107
- function X(e) {
107
+ function ke(e) {
108
108
  return {
109
109
  id: e.id,
110
110
  applicationId: e.applicationId,
@@ -120,7 +120,7 @@ function X(e) {
120
120
  createdAt: e.createdAt
121
121
  };
122
122
  }
123
- function ke(e) {
123
+ function Ae(e) {
124
124
  return {
125
125
  id: e.id,
126
126
  appId: e.appId,
@@ -142,7 +142,7 @@ function ke(e) {
142
142
  revokedBy: e.revokedBy || void 0
143
143
  };
144
144
  }
145
- var Ae = [
145
+ var je = [
146
146
  {
147
147
  id: "overview",
148
148
  label: "Overview",
@@ -151,17 +151,17 @@ var Ae = [
151
151
  {
152
152
  id: "permissions",
153
153
  label: "Permissions",
154
- icon: H
154
+ icon: V
155
155
  },
156
156
  {
157
157
  id: "webhooks",
158
158
  label: "Webhooks",
159
- icon: xe
159
+ icon: Se
160
160
  },
161
161
  {
162
162
  id: "delegations",
163
163
  label: "Delegations",
164
- icon: W
164
+ icon: U
165
165
  },
166
166
  {
167
167
  id: "analytics",
@@ -176,27 +176,27 @@ var Ae = [
176
176
  {
177
177
  id: "store-listing",
178
178
  label: "Marketplace Listing",
179
- icon: be
179
+ icon: xe
180
180
  }
181
- ], je = {
181
+ ], Me = {
182
182
  ACTIVE: "bg-status-success-bg-subtle text-status-success-text",
183
183
  REVOKED: "bg-status-error-bg-subtle text-status-error-text",
184
184
  EXPIRED: "bg-bg-sunken text-text-secondary"
185
- }, Z = ({ message: e = "Loading..." }) => /* @__PURE__ */ q("div", {
185
+ }, X = ({ message: e = "Loading..." }) => /* @__PURE__ */ K("div", {
186
186
  className: "flex items-center justify-center gap-3 py-12",
187
- children: [/* @__PURE__ */ K(B, {
187
+ children: [/* @__PURE__ */ G(z, {
188
188
  size: 20,
189
189
  className: "animate-spin text-muted-foreground"
190
- }), /* @__PURE__ */ K("p", {
190
+ }), /* @__PURE__ */ G("p", {
191
191
  className: "text-sm text-muted-foreground",
192
192
  children: e
193
193
  })]
194
- }), Me = ({ message: e }) => /* @__PURE__ */ q("div", {
194
+ }), Z = ({ message: e }) => /* @__PURE__ */ K("div", {
195
195
  className: "flex flex-col items-center justify-center gap-2 py-12 text-center",
196
- children: [/* @__PURE__ */ K(le, {
196
+ children: [/* @__PURE__ */ G(le, {
197
197
  size: 32,
198
198
  className: "text-destructive"
199
- }), /* @__PURE__ */ K("p", {
199
+ }), /* @__PURE__ */ G("p", {
200
200
  className: "text-sm text-muted-foreground",
201
201
  children: e
202
202
  })]
@@ -204,7 +204,7 @@ var Ae = [
204
204
  let { navigate: i, basePath: o, workspaceId: c } = e(), { t: l } = P(), u = (e, t) => {
205
205
  let n = l(e);
206
206
  return n === e ? t : n;
207
- }, { allowed: d } = se(oe.APP_UPDATE), { allowed: m } = se(oe.APP_DELETE), { appId: g } = we(), [v, b] = Te(), C = [
207
+ }, { allowed: d } = se(oe.APP_UPDATE), { allowed: m } = se(oe.APP_DELETE), { appId: g } = Te(), [v, b] = Ee(), C = [
208
208
  "overview",
209
209
  "permissions",
210
210
  "webhooks",
@@ -218,219 +218,240 @@ var Ae = [
218
218
  }, [T]);
219
219
  let re = (e) => {
220
220
  D(e), b((t) => (t.set("tab", e), t), { replace: !0 });
221
- }, [ie, k] = N(!1), [j, M] = N(!1), [I, L] = N(null), [ue, fe] = N(!1), { data: R, loading: z, error: he } = s({
221
+ }, [ie, k] = N(!1), [j, M] = N(!1), [I, L] = N(null), [ue, fe] = N(!1), { data: R, loading: he, error: ge } = s({
222
222
  variables: { id: g },
223
223
  skip: !g
224
- }), [ge, { loading: V }] = h(), [H, { loading: be }] = a(), [U, { loading: W }] = p(), [xe, { loading: Se }] = _(), { data: G, refetch: J } = f({
224
+ }), [_e, { loading: B }] = h(), [V, { loading: xe }] = a(), [H, { loading: U }] = p(), [Se, { loading: Ce }] = _(), { data: W, refetch: q } = f({
225
225
  variables: {
226
226
  applicationId: g,
227
227
  workspaceId: c ?? void 0
228
228
  },
229
229
  skip: !c || !g,
230
230
  fetchPolicy: "cache-and-network"
231
- }), Ee = G?.appInstallations?.edges?.[0]?.node ?? null, Y = A((e) => {
231
+ }), J = W?.appInstallations?.edges?.[0]?.node ?? null, Y = A((e) => {
232
232
  i?.(`${o}${e}`);
233
233
  }, [i, o]), Oe = A(async () => {
234
234
  let e = R?.application?.appId;
235
235
  if (e) try {
236
- let t = (await ge({ variables: { id: e } })).data?.rotateAppSecret.clientSecret;
236
+ let t = (await _e({ variables: { id: e } })).data?.rotateAppSecret.clientSecret;
237
237
  t && L(t), k(!1);
238
238
  } catch {}
239
- }, [R?.application?.appId, ge]), X = A(async () => {
239
+ }, [R?.application?.appId, _e]), ke = A(async () => {
240
240
  if (g) try {
241
- await H({ variables: { id: g } }), M(!1), Y("/apps");
241
+ await V({ variables: { id: g } }), M(!1), Y("/apps");
242
242
  } catch {}
243
243
  }, [
244
244
  g,
245
- H,
245
+ V,
246
246
  Y
247
- ]), ke = A(async () => {
247
+ ]), Ae = A(async () => {
248
248
  if (!(!g || !c)) try {
249
- await U({ variables: { input: {
249
+ await H({ variables: { input: {
250
250
  applicationId: g,
251
251
  scope: "WORKSPACE",
252
252
  workspaceId: c,
253
253
  autoUpdate: !1
254
- } } }), J(), w("success");
254
+ } } }), q(), w("success");
255
255
  } catch (e) {
256
256
  console.error("[DevPortal] Test in Workspace failed:", e), w("error");
257
257
  }
258
258
  }, [
259
259
  g,
260
260
  c,
261
- U,
262
- J
263
- ]), je = A(async (e) => {
261
+ H,
262
+ q
263
+ ]), Me = A(async () => {
264
+ if (!(!g || !c)) try {
265
+ J || (await H({ variables: { input: {
266
+ applicationId: g,
267
+ scope: "WORKSPACE",
268
+ workspaceId: c,
269
+ autoUpdate: !1
270
+ } } }), await q()), i?.("/workflows/new");
271
+ } catch (e) {
272
+ console.error("[DevPortal] Test in Workflow Builder failed:", e), w("error");
273
+ }
274
+ }, [
275
+ g,
276
+ c,
277
+ H,
278
+ J,
279
+ q,
280
+ i
281
+ ]), X = A(async (e) => {
264
282
  try {
265
- await xe({ variables: { id: e } }), J(), w("success");
283
+ await Se({ variables: { id: e } }), q(), w("success");
266
284
  } catch {
267
285
  w("error");
268
286
  }
269
- }, [xe, J]);
270
- if (z && !R) return /* @__PURE__ */ K(n, { message: u("devportal.loadingApplication", "Loading application...") });
271
- if (he) return /* @__PURE__ */ K(y, {
287
+ }, [Se, q]);
288
+ if (he && !R) return /* @__PURE__ */ G(n, { message: u("devportal.loadingApplication", "Loading application...") });
289
+ if (ge) return /* @__PURE__ */ G(y, {
272
290
  title: u("devportal.error", "Error"),
273
291
  backLink: `${o}/apps`,
274
292
  backLabel: u("devportal.backToApplications", "Back to Applications"),
275
- children: /* @__PURE__ */ q("div", {
293
+ children: /* @__PURE__ */ K("div", {
276
294
  className: "flex flex-col items-center justify-center py-12 text-center",
277
295
  children: [
278
- /* @__PURE__ */ K(le, {
296
+ /* @__PURE__ */ G(le, {
279
297
  size: 48,
280
298
  className: "text-destructive mb-4"
281
299
  }),
282
- /* @__PURE__ */ K("h3", {
300
+ /* @__PURE__ */ G("h3", {
283
301
  className: "text-lg font-semibold mb-2",
284
302
  children: u("devportal.failedToLoadApplication", "Failed to load application")
285
303
  }),
286
- /* @__PURE__ */ K("p", {
304
+ /* @__PURE__ */ G("p", {
287
305
  className: "text-sm text-muted-foreground",
288
- children: he.message
306
+ children: ge.message
289
307
  })
290
308
  ]
291
309
  })
292
310
  });
293
311
  let Z = De(R?.application);
294
- return Z ? /* @__PURE__ */ q(y, {
312
+ return Z ? /* @__PURE__ */ K(y, {
295
313
  title: Z.name,
296
314
  description: Z.shortDescription,
297
315
  backLink: `${o}/apps`,
298
316
  backLabel: u("devportal.backToApplications", "Back to Applications"),
299
- actions: /* @__PURE__ */ q("div", {
317
+ actions: /* @__PURE__ */ K("div", {
300
318
  className: "flex items-center gap-2",
301
319
  children: [
302
- Z.appType !== "NODE" && Z.appType !== "WORKFLOW" && /* @__PURE__ */ q("button", {
320
+ Z.appType !== "NODE" && Z.appType !== "WORKFLOW" && /* @__PURE__ */ K("button", {
303
321
  onClick: () => k(!0),
304
322
  disabled: !Z.appId,
305
323
  title: Z.appId ? u("devportal.rotateSecretHint", "Generate a new client secret") : u("devportal.rotateSecretNoClient", "Create an OAuth client first to enable secret rotation"),
306
324
  className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
307
- children: [/* @__PURE__ */ K(ve, { size: 16 }), u("devportal.rotateSecret", "Rotate Secret")]
325
+ children: [/* @__PURE__ */ G(ye, { size: 16 }), u("devportal.rotateSecret", "Rotate Secret")]
308
326
  }),
309
- /* @__PURE__ */ q("button", {
327
+ /* @__PURE__ */ K("button", {
310
328
  onClick: () => Y(`/apps/${Z.id}/versions`),
311
329
  className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors",
312
- children: [/* @__PURE__ */ K(de, { size: 16 }), u("devportal.versions", "Versions")]
330
+ children: [/* @__PURE__ */ G(de, { size: 16 }), u("devportal.versions", "Versions")]
313
331
  }),
314
- Z.status !== "PUBLISHED" && /* @__PURE__ */ q("button", {
332
+ Z.status !== "PUBLISHED" && /* @__PURE__ */ K("button", {
315
333
  onClick: () => Y(`/apps/${Z.id}/publish`),
316
334
  className: "inline-flex items-center gap-2 rounded-md border border-primary/40 px-4 py-2 text-sm font-medium text-primary hover:bg-primary/10 transition-colors",
317
- children: [/* @__PURE__ */ K(ye, { size: 16 }), u("devportal.submitForReview", "Submit for Review")]
335
+ children: [/* @__PURE__ */ G(be, { size: 16 }), u("devportal.submitForReview", "Submit for Review")]
318
336
  }),
319
- Z.appType !== "NODE" && Z.appType !== "WORKFLOW" && (Ee ? /* @__PURE__ */ q("button", {
320
- onClick: () => void je(Ee.id),
321
- disabled: Se || !c,
337
+ Z.appType !== "NODE" && Z.appType !== "WORKFLOW" && (J ? /* @__PURE__ */ K("button", {
338
+ onClick: () => void X(J.id),
339
+ disabled: Ce || !c,
322
340
  title: u("devportal.uninstallFromWorkspace", "Uninstall this app from your current workspace"),
323
341
  className: "inline-flex items-center gap-2 rounded-md border border-destructive/50 px-4 py-2 text-sm font-medium text-destructive hover:bg-destructive/10 transition-colors disabled:opacity-50",
324
- children: [Se ? /* @__PURE__ */ K(B, {
342
+ children: [Ce ? /* @__PURE__ */ G(z, {
325
343
  size: 16,
326
344
  className: "animate-spin"
327
- }) : /* @__PURE__ */ K(Ce, { size: 16 }), u("devportal.uninstallFromWorkspace", "Uninstall from Workspace")]
328
- }) : /* @__PURE__ */ q("button", {
329
- onClick: () => void ke(),
330
- disabled: W || !c,
345
+ }) : /* @__PURE__ */ G(we, { size: 16 }), u("devportal.uninstallFromWorkspace", "Uninstall from Workspace")]
346
+ }) : /* @__PURE__ */ K("button", {
347
+ onClick: () => void Ae(),
348
+ disabled: U || !c,
331
349
  "aria-disabled": !c,
332
350
  title: c ? u("devportal.testInWorkspaceHint", "Install this app into your current workspace to test it") : u("devportal.noWorkspaceContext", "No workspace context available"),
333
351
  className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors disabled:opacity-50",
334
- children: [W ? /* @__PURE__ */ K(B, {
352
+ children: [U ? /* @__PURE__ */ G(z, {
335
353
  size: 16,
336
354
  className: "animate-spin"
337
- }) : /* @__PURE__ */ K(me, { size: 16 }), u("devportal.testInWorkspace", "Test in Workspace")]
355
+ }) : /* @__PURE__ */ G(me, { size: 16 }), u("devportal.testInWorkspace", "Test in Workspace")]
338
356
  })),
339
- Z.appType === "NODE" && /* @__PURE__ */ q("button", {
340
- onClick: () => i?.(`/workflows/new?nodeId=${Z.id}`),
341
- disabled: !c,
357
+ Z.appType === "NODE" && /* @__PURE__ */ K("button", {
358
+ onClick: () => void Me(),
359
+ disabled: U || !c,
342
360
  "aria-disabled": !c,
343
- title: c ? u("devportal.testInWorkflowBuilderHint", "Open a new workflow with this node available in the builder") : u("devportal.noWorkspaceContext", "No workspace context available"),
361
+ title: c ? J ? u("devportal.testInWorkflowBuilderHint", "Open the workflow builder (already installed in workspace)") : u("devportal.testInWorkflowBuilderInstallHint", "Install this node in your workspace and open the workflow builder") : u("devportal.noWorkspaceContext", "No workspace context available"),
344
362
  className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors disabled:opacity-50",
345
- children: [/* @__PURE__ */ K(me, { size: 16 }), u("devportal.testInWorkflowBuilder", "Test in Workflow Builder")]
363
+ children: [U ? /* @__PURE__ */ G(z, {
364
+ size: 16,
365
+ className: "animate-spin"
366
+ }) : /* @__PURE__ */ G(me, { size: 16 }), u("devportal.testInWorkflowBuilder", "Test in Workflow Builder")]
346
367
  }),
347
- /* @__PURE__ */ q("button", {
368
+ /* @__PURE__ */ K("button", {
348
369
  onClick: () => Y(`/apps/${Z.id}/edit`),
349
370
  disabled: !d,
350
371
  "aria-disabled": !d,
351
372
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
352
- children: [/* @__PURE__ */ K(pe, { size: 16 }), u("devportal.editApp", "Edit App")]
373
+ children: [/* @__PURE__ */ G(pe, { size: 16 }), u("devportal.editApp", "Edit App")]
353
374
  }),
354
- /* @__PURE__ */ q("button", {
375
+ /* @__PURE__ */ K("button", {
355
376
  onClick: () => M(!0),
356
377
  disabled: !m,
357
378
  "aria-disabled": !m,
358
379
  className: "inline-flex items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors disabled:opacity-50",
359
- children: [/* @__PURE__ */ K(_e, { size: 16 }), u("devportal.deactivate", "Deactivate")]
380
+ children: [/* @__PURE__ */ G(ve, { size: 16 }), u("devportal.deactivate", "Deactivate")]
360
381
  })
361
382
  ]
362
383
  }),
363
384
  children: [
364
- I && /* @__PURE__ */ K(ne, {
385
+ I && /* @__PURE__ */ G(ne, {
365
386
  title: u("devportal.newAppSecretGenerated", "New App Secret Generated"),
366
387
  secret: I,
367
388
  description: u("devportal.appSecretRotatedDescription", "Your app secret has been rotated. The old secret is no longer valid."),
368
389
  onDismiss: () => L(null)
369
390
  }),
370
- /* @__PURE__ */ q("div", {
391
+ /* @__PURE__ */ K("div", {
371
392
  className: "flex flex-wrap items-center gap-2",
372
393
  children: [
373
- /* @__PURE__ */ K(S, {
394
+ /* @__PURE__ */ G(S, {
374
395
  status: Z.status,
375
396
  type: "app"
376
397
  }),
377
- /* @__PURE__ */ K(S, {
398
+ /* @__PURE__ */ G(S, {
378
399
  status: Z.visibility,
379
400
  type: "app"
380
401
  }),
381
- Z.isVerified && /* @__PURE__ */ K(te, { verified: !0 }),
382
- Z.isFeatured && /* @__PURE__ */ K(x, {}),
383
- /* @__PURE__ */ K("span", {
402
+ Z.isVerified && /* @__PURE__ */ G(te, { verified: !0 }),
403
+ Z.isFeatured && /* @__PURE__ */ G(x, {}),
404
+ /* @__PURE__ */ G("span", {
384
405
  className: "text-sm text-muted-foreground",
385
406
  children: ee[Z.appType] || Z.appType
386
407
  })
387
408
  ]
388
409
  }),
389
- /* @__PURE__ */ K("div", {
410
+ /* @__PURE__ */ G("div", {
390
411
  className: "border-b",
391
- children: /* @__PURE__ */ K("nav", {
412
+ children: /* @__PURE__ */ G("nav", {
392
413
  className: "-mb-px flex gap-4 overflow-x-auto",
393
414
  role: "tablist",
394
415
  "aria-label": u("devportal.applicationSections", "Application sections"),
395
- children: Ae.filter((e) => !((Z.appType === "NODE" || Z.appType === "WORKFLOW") && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground"))).map((e) => {
416
+ children: je.filter((e) => !((Z.appType === "NODE" || Z.appType === "WORKFLOW") && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground"))).map((e) => {
396
417
  let n = e.icon;
397
- return /* @__PURE__ */ q("button", {
418
+ return /* @__PURE__ */ K("button", {
398
419
  id: `application-tab-${e.id}`,
399
420
  role: "tab",
400
421
  "aria-selected": E === e.id,
401
422
  "aria-controls": `application-panel-${e.id}`,
402
423
  onClick: () => re(e.id),
403
424
  className: t("flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors", E === e.id ? "border-primary text-primary" : "border-transparent text-muted-foreground hover:text-foreground hover:border-muted-foreground"),
404
- children: [/* @__PURE__ */ K(n, { size: 16 }), e.label]
425
+ children: [/* @__PURE__ */ G(n, { size: 16 }), e.label]
405
426
  }, e.id);
406
427
  })
407
428
  })
408
429
  }),
409
- /* @__PURE__ */ q("div", {
430
+ /* @__PURE__ */ K("div", {
410
431
  className: "mt-6",
411
432
  id: `application-panel-${E}`,
412
433
  role: "tabpanel",
413
434
  "aria-labelledby": `application-tab-${E}`,
414
435
  tabIndex: 0,
415
436
  children: [
416
- E === "overview" && /* @__PURE__ */ K(Le, { app: Z }),
417
- E === "permissions" && /* @__PURE__ */ K(tt, { app: Z }),
418
- E === "webhooks" && /* @__PURE__ */ K(Pe, {
437
+ E === "overview" && /* @__PURE__ */ G(Le, { app: Z }),
438
+ E === "permissions" && /* @__PURE__ */ G(tt, { app: Z }),
439
+ E === "webhooks" && /* @__PURE__ */ G(Pe, {
419
440
  appId: Z.id,
420
441
  onNavigate: Y
421
442
  }),
422
- E === "delegations" && /* @__PURE__ */ K(Fe, {
443
+ E === "delegations" && /* @__PURE__ */ G(Fe, {
423
444
  authAppId: Z.appId || void 0,
424
445
  appName: Z.name,
425
446
  onGrantDelegation: () => fe(!0),
426
447
  onNavigate: Y
427
448
  }),
428
- E === "analytics" && /* @__PURE__ */ K(Ie, { app: Z }),
429
- E === "playground" && /* @__PURE__ */ K(He, { app: Z }),
430
- E === "store-listing" && /* @__PURE__ */ K(Qe, { app: Z })
449
+ E === "analytics" && /* @__PURE__ */ G(Ie, { app: Z }),
450
+ E === "playground" && /* @__PURE__ */ G(He, { app: Z }),
451
+ E === "store-listing" && /* @__PURE__ */ G(Qe, { app: Z })
431
452
  ]
432
453
  }),
433
- /* @__PURE__ */ K(O, {
454
+ /* @__PURE__ */ G(O, {
434
455
  open: ie,
435
456
  onOpenChange: k,
436
457
  onConfirm: Oe,
@@ -439,20 +460,20 @@ var Ae = [
439
460
  confirmLabel: u("devportal.rotateSecret", "Rotate Secret"),
440
461
  cancelLabel: u("devportal.cancel", "Cancel"),
441
462
  variant: "warning",
442
- loading: V
463
+ loading: B
443
464
  }),
444
- /* @__PURE__ */ K(O, {
465
+ /* @__PURE__ */ G(O, {
445
466
  open: j,
446
467
  onOpenChange: M,
447
- onConfirm: X,
468
+ onConfirm: ke,
448
469
  title: u("devportal.deactivateApplication", "Deactivate Application"),
449
470
  description: u("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."),
450
471
  confirmLabel: u("devportal.deactivate", "Deactivate"),
451
472
  cancelLabel: u("devportal.cancel", "Cancel"),
452
473
  variant: "destructive",
453
- loading: be
474
+ loading: xe
454
475
  }),
455
- /* @__PURE__ */ K(ae, {
476
+ /* @__PURE__ */ G(ae, {
456
477
  open: ue,
457
478
  onOpenChange: fe,
458
479
  appId: Z.appId || "",
@@ -463,12 +484,12 @@ var Ae = [
463
484
  }
464
485
  })
465
486
  ]
466
- }) : /* @__PURE__ */ K(y, {
487
+ }) : /* @__PURE__ */ G(y, {
467
488
  title: u("devportal.notFound", "Not Found"),
468
489
  backLink: `${o}/apps`,
469
490
  backLabel: u("devportal.backToApplications", "Back to Applications"),
470
- children: /* @__PURE__ */ K(r, {
471
- icon: /* @__PURE__ */ K(F, { size: 48 }),
491
+ children: /* @__PURE__ */ G(r, {
492
+ icon: /* @__PURE__ */ G(F, { size: 48 }),
472
493
  title: u("devportal.applicationNotFound", "Application not found"),
473
494
  description: u("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
474
495
  })
@@ -478,7 +499,7 @@ var Ae = [
478
499
  let r = n(e);
479
500
  return r === e ? t : r;
480
501
  }, { data: i, loading: a, error: o } = d({ variables: { applicationId: e } });
481
- return a ? /* @__PURE__ */ K(Z, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ K(Me, { message: o.message }) : /* @__PURE__ */ K(Re, {
502
+ return a ? /* @__PURE__ */ G(X, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ G(Z, { message: o.message }) : /* @__PURE__ */ G(Re, {
482
503
  appId: e,
483
504
  webhooks: (i?.webhooks ?? []).map(Oe),
484
505
  onNavigate: t
@@ -487,7 +508,7 @@ var Ae = [
487
508
  let { t: o } = P(), s = (e, t) => {
488
509
  let n = o(e);
489
510
  return n === e ? t : n;
490
- }, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, ee] = N(null), x = j(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(ke) : [], [e, c]), S = j(() => x.filter((e) => e.status === "ACTIVE"), [x]), te = j(() => S.filter((e) => v.has(e.id)), [S, v]), C = S.length > 0 && S.every((e) => v.has(e.id)), w = S.some((e) => v.has(e.id)) && !C, ne = A((e, t) => {
511
+ }, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, ee] = N(null), x = j(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(Ae) : [], [e, c]), S = j(() => x.filter((e) => e.status === "ACTIVE"), [x]), te = j(() => S.filter((e) => v.has(e.id)), [S, v]), C = S.length > 0 && S.every((e) => v.has(e.id)), w = S.some((e) => v.has(e.id)) && !C, ne = A((e, t) => {
491
512
  y((n) => {
492
513
  let r = new Set(n);
493
514
  return t ? r.add(e) : r.delete(e), r;
@@ -513,19 +534,19 @@ var Ae = [
513
534
  _(!1);
514
535
  }
515
536
  }, [f, d]);
516
- return e ? l ? /* @__PURE__ */ K(Z, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ K(Me, { message: u.message }) : /* @__PURE__ */ q(G, { children: [
517
- b && /* @__PURE__ */ K("div", {
537
+ return e ? l ? /* @__PURE__ */ G(X, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ G(Z, { message: u.message }) : /* @__PURE__ */ K(W, { children: [
538
+ b && /* @__PURE__ */ G("div", {
518
539
  className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 text-sm text-status-success-text",
519
- children: /* @__PURE__ */ q("div", {
540
+ children: /* @__PURE__ */ K("div", {
520
541
  className: "flex items-center justify-between gap-3",
521
- children: [/* @__PURE__ */ K("span", { children: b }), /* @__PURE__ */ K("button", {
542
+ children: [/* @__PURE__ */ G("span", { children: b }), /* @__PURE__ */ G("button", {
522
543
  onClick: () => ee(null),
523
544
  className: "text-status-success-text hover:text-status-success-text",
524
545
  children: s("devportal.dismiss", "Dismiss")
525
546
  })]
526
547
  })
527
548
  }),
528
- /* @__PURE__ */ K(ze, {
549
+ /* @__PURE__ */ G(ze, {
529
550
  appName: t,
530
551
  delegations: x,
531
552
  onGrantDelegation: n,
@@ -538,7 +559,7 @@ var Ae = [
538
559
  allVisibleSelected: C,
539
560
  partiallySelected: w
540
561
  }),
541
- /* @__PURE__ */ K(O, {
562
+ /* @__PURE__ */ G(O, {
542
563
  open: p.length > 0,
543
564
  onOpenChange: (e) => {
544
565
  e || h([]);
@@ -553,14 +574,14 @@ var Ae = [
553
574
  variant: "destructive",
554
575
  loading: g
555
576
  })
556
- ] }) : /* @__PURE__ */ K(r, {
557
- icon: /* @__PURE__ */ K(H, { size: 32 }),
577
+ ] }) : /* @__PURE__ */ G(r, {
578
+ icon: /* @__PURE__ */ G(V, { size: 32 }),
558
579
  title: s("devportal.linkAuthAppFirst", "Link an auth app first"),
559
580
  description: s("devportal.linkAuthAppFirstDescription", "Delegations are managed through auth apps. Create or link an auth app before granting app-as-user access."),
560
- action: /* @__PURE__ */ q("button", {
581
+ action: /* @__PURE__ */ K("button", {
561
582
  onClick: () => a("/oauth"),
562
583
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90",
563
- children: [/* @__PURE__ */ K(R, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
584
+ children: [/* @__PURE__ */ G(R, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
564
585
  })
565
586
  });
566
587
  }, Ie = ({ app: e }) => {
@@ -592,31 +613,31 @@ var Ae = [
592
613
  });
593
614
  if (r) {
594
615
  let t = m?.productInstallations?.items ?? [], r = m?.productInstallations?.total ?? 0, i = t.filter((e) => e.status === "ACTIVE").length;
595
- return h && !m ? /* @__PURE__ */ K(Z, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : /* @__PURE__ */ q("div", {
616
+ return h && !m ? /* @__PURE__ */ G(X, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : /* @__PURE__ */ K("div", {
596
617
  className: "space-y-6",
597
- children: [/* @__PURE__ */ q("div", {
618
+ children: [/* @__PURE__ */ K("div", {
598
619
  className: "grid gap-4 sm:grid-cols-4",
599
620
  children: [
600
- /* @__PURE__ */ K(Q, {
621
+ /* @__PURE__ */ G(Q, {
601
622
  label: n("devportal.totalInstalls", "Total Installs"),
602
623
  value: r.toLocaleString()
603
624
  }),
604
- /* @__PURE__ */ K(Q, {
625
+ /* @__PURE__ */ G(Q, {
605
626
  label: n("devportal.activeInstalls", "Active Installs"),
606
627
  value: i.toLocaleString()
607
628
  }),
608
- /* @__PURE__ */ K(Q, {
629
+ /* @__PURE__ */ G(Q, {
609
630
  label: n("devportal.averageRating", "Average Rating"),
610
631
  value: e.averageRating ? `${e.averageRating.toFixed(1)} ★` : n("devportal.notAvailable", "N/A")
611
632
  }),
612
- /* @__PURE__ */ K(Q, {
633
+ /* @__PURE__ */ G(Q, {
613
634
  label: n("devportal.reviews", "Reviews"),
614
635
  value: e.reviewCount.toString()
615
636
  })
616
637
  ]
617
- }), t.length > 0 && /* @__PURE__ */ K(b, {
638
+ }), t.length > 0 && /* @__PURE__ */ G(b, {
618
639
  title: n("devportal.installBreakdown", "Install Breakdown"),
619
- children: /* @__PURE__ */ K(T, {
640
+ children: /* @__PURE__ */ G(T, {
620
641
  data: t,
621
642
  keyField: "id",
622
643
  columns: [
@@ -649,7 +670,7 @@ var Ae = [
649
670
  })]
650
671
  });
651
672
  }
652
- return _ ? /* @__PURE__ */ K(Z, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : v ? /* @__PURE__ */ K(Me, { message: v.message }) : /* @__PURE__ */ K(Be, { analytics: (g?.applicationAnalytics ?? []).map(X) });
673
+ return _ ? /* @__PURE__ */ G(X, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : v ? /* @__PURE__ */ G(Z, { message: v.message }) : /* @__PURE__ */ G(Be, { analytics: (g?.applicationAnalytics ?? []).map(ke) });
653
674
  }, Le = ({ app: t }) => {
654
675
  let { t: n } = P(), r = (e, t) => {
655
676
  let r = n(e);
@@ -680,16 +701,16 @@ var Ae = [
680
701
  cta: "Submit for review →"
681
702
  }
682
703
  ] : [], l = c.filter((e) => !e.done)[0];
683
- return /* @__PURE__ */ q("div", {
704
+ return /* @__PURE__ */ K("div", {
684
705
  className: "grid gap-6 lg:grid-cols-3",
685
- children: [/* @__PURE__ */ q("div", {
706
+ children: [/* @__PURE__ */ K("div", {
686
707
  className: "lg:col-span-2 space-y-6",
687
708
  children: [
688
- s && l && /* @__PURE__ */ q("div", {
709
+ s && l && /* @__PURE__ */ K("div", {
689
710
  className: "rounded-lg border border-primary/30 bg-primary/5 p-4 space-y-3",
690
- children: [/* @__PURE__ */ q("div", {
711
+ children: [/* @__PURE__ */ K("div", {
691
712
  className: "flex items-center justify-between",
692
- children: [/* @__PURE__ */ q("p", {
713
+ children: [/* @__PURE__ */ K("p", {
693
714
  className: "font-semibold text-sm text-primary",
694
715
  children: [
695
716
  r("devportal.setupProgress", "Setup Progress"),
@@ -699,25 +720,25 @@ var Ae = [
699
720
  c.length,
700
721
  " complete"
701
722
  ]
702
- }), /* @__PURE__ */ K("button", {
723
+ }), /* @__PURE__ */ G("button", {
703
724
  onClick: () => i?.(`${a}/apps/${t.id}/publish`),
704
725
  className: "text-xs text-primary hover:underline font-medium",
705
726
  children: r("devportal.viewChecklist", "View full checklist →")
706
727
  })]
707
- }), /* @__PURE__ */ K("div", {
728
+ }), /* @__PURE__ */ G("div", {
708
729
  className: "space-y-1.5",
709
- children: c.map((e, t) => /* @__PURE__ */ q("div", {
730
+ children: c.map((e, t) => /* @__PURE__ */ K("div", {
710
731
  className: "flex items-center gap-2 text-sm",
711
732
  children: [
712
- e.done ? /* @__PURE__ */ K(ue, {
733
+ e.done ? /* @__PURE__ */ G(ue, {
713
734
  size: 14,
714
735
  className: "text-status-success-text shrink-0"
715
- }) : /* @__PURE__ */ K("div", { className: "h-3.5 w-3.5 rounded-full border-2 border-muted-foreground/40 shrink-0" }),
716
- /* @__PURE__ */ K("span", {
736
+ }) : /* @__PURE__ */ G("div", { className: "h-3.5 w-3.5 rounded-full border-2 border-muted-foreground/40 shrink-0" }),
737
+ /* @__PURE__ */ G("span", {
717
738
  className: e.done ? "line-through text-muted-foreground" : "text-foreground",
718
739
  children: e.label
719
740
  }),
720
- !e.done && t === c.indexOf(l) && /* @__PURE__ */ K("button", {
741
+ !e.done && t === c.indexOf(l) && /* @__PURE__ */ G("button", {
721
742
  onClick: () => i?.(e.path),
722
743
  className: "ml-auto text-xs text-primary hover:underline font-medium shrink-0",
723
744
  children: e.cta
@@ -726,56 +747,56 @@ var Ae = [
726
747
  }, t))
727
748
  })]
728
749
  }),
729
- /* @__PURE__ */ q("div", {
750
+ /* @__PURE__ */ K("div", {
730
751
  className: "grid gap-4 sm:grid-cols-4",
731
752
  children: [
732
- /* @__PURE__ */ K(Q, {
753
+ /* @__PURE__ */ G(Q, {
733
754
  label: r("devportal.totalInstalls", "Total Installs"),
734
755
  value: t.installCount.toLocaleString()
735
756
  }),
736
- /* @__PURE__ */ K(Q, {
757
+ /* @__PURE__ */ G(Q, {
737
758
  label: r("devportal.activeInstalls", "Active Installs"),
738
759
  value: t.activeInstallCount.toLocaleString()
739
760
  }),
740
- /* @__PURE__ */ K(Q, {
761
+ /* @__PURE__ */ G(Q, {
741
762
  label: r("devportal.averageRating", "Average Rating"),
742
763
  value: t.averageRating ? `${t.averageRating.toFixed(1)} ★` : r("devportal.notAvailable", "N/A")
743
764
  }),
744
- /* @__PURE__ */ K(Q, {
765
+ /* @__PURE__ */ G(Q, {
745
766
  label: r("devportal.reviews", "Reviews"),
746
767
  value: t.reviewCount.toString()
747
768
  })
748
769
  ]
749
770
  }),
750
- /* @__PURE__ */ K(b, {
771
+ /* @__PURE__ */ G(b, {
751
772
  title: r("devportal.description", "Description"),
752
- children: /* @__PURE__ */ K("div", {
773
+ children: /* @__PURE__ */ G("div", {
753
774
  className: "prose prose-sm max-w-none",
754
- children: /* @__PURE__ */ K("pre", {
775
+ children: /* @__PURE__ */ G("pre", {
755
776
  className: "whitespace-pre-wrap font-sans text-sm text-foreground bg-transparent p-0 m-0",
756
777
  children: t.description || r("devportal.noDescriptionProvided", "No description provided.")
757
778
  })
758
779
  })
759
780
  }),
760
- /* @__PURE__ */ K(b, {
781
+ /* @__PURE__ */ G(b, {
761
782
  title: r("devportal.tagsAndKeywords", "Tags & Keywords"),
762
- children: /* @__PURE__ */ q("div", {
783
+ children: /* @__PURE__ */ K("div", {
763
784
  className: "space-y-3",
764
- children: [t.tags.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
785
+ children: [t.tags.length > 0 && /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
765
786
  className: "text-xs text-muted-foreground mb-2",
766
787
  children: r("devportal.tags", "Tags")
767
- }), /* @__PURE__ */ K("div", {
788
+ }), /* @__PURE__ */ G("div", {
768
789
  className: "flex flex-wrap gap-2",
769
- children: t.tags.map((e) => /* @__PURE__ */ K("span", {
790
+ children: t.tags.map((e) => /* @__PURE__ */ G("span", {
770
791
  className: "rounded-full bg-primary/10 px-3 py-1 text-xs font-medium text-primary",
771
792
  children: e
772
793
  }, e))
773
- })] }), t.keywords.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
794
+ })] }), t.keywords.length > 0 && /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
774
795
  className: "text-xs text-muted-foreground mb-2",
775
796
  children: r("devportal.keywords", "Keywords")
776
- }), /* @__PURE__ */ K("div", {
797
+ }), /* @__PURE__ */ G("div", {
777
798
  className: "flex flex-wrap gap-2",
778
- children: t.keywords.map((e) => /* @__PURE__ */ K("span", {
799
+ children: t.keywords.map((e) => /* @__PURE__ */ G("span", {
779
800
  className: "rounded-full bg-muted px-3 py-1 text-xs",
780
801
  children: e
781
802
  }, e))
@@ -783,14 +804,14 @@ var Ae = [
783
804
  })
784
805
  })
785
806
  ]
786
- }), /* @__PURE__ */ q("div", {
807
+ }), /* @__PURE__ */ K("div", {
787
808
  className: "space-y-6",
788
- children: [/* @__PURE__ */ K(b, {
809
+ children: [/* @__PURE__ */ G(b, {
789
810
  title: r("devportal.details", "Details"),
790
- children: /* @__PURE__ */ K(E, { items: [
811
+ children: /* @__PURE__ */ G(E, { items: [
791
812
  {
792
813
  label: r("devportal.appId", "App ID"),
793
- value: /* @__PURE__ */ K("code", {
814
+ value: /* @__PURE__ */ G("code", {
794
815
  className: "text-xs",
795
816
  children: t.id
796
817
  })
@@ -820,32 +841,32 @@ var Ae = [
820
841
  value: t.publishedAt ? new Date(t.publishedAt).toLocaleDateString() : r("devportal.notPublished", "Not published")
821
842
  }
822
843
  ] })
823
- }), /* @__PURE__ */ K(b, {
844
+ }), /* @__PURE__ */ G(b, {
824
845
  title: r("devportal.links", "Links"),
825
- children: /* @__PURE__ */ q("div", {
846
+ children: /* @__PURE__ */ K("div", {
826
847
  className: "space-y-2",
827
848
  children: [
828
- t.websiteUrl && /* @__PURE__ */ K($, {
849
+ t.websiteUrl && /* @__PURE__ */ G($, {
829
850
  label: r("devportal.website", "Website"),
830
851
  url: t.websiteUrl
831
852
  }),
832
- t.documentationUrl && /* @__PURE__ */ K($, {
853
+ t.documentationUrl && /* @__PURE__ */ G($, {
833
854
  label: r("devportal.documentation", "Documentation"),
834
855
  url: t.documentationUrl
835
856
  }),
836
- t.supportUrl && /* @__PURE__ */ K($, {
857
+ t.supportUrl && /* @__PURE__ */ G($, {
837
858
  label: r("devportal.support", "Support"),
838
859
  url: t.supportUrl
839
860
  }),
840
- t.githubUrl && /* @__PURE__ */ K($, {
861
+ t.githubUrl && /* @__PURE__ */ G($, {
841
862
  label: r("devportal.github", "GitHub"),
842
863
  url: t.githubUrl
843
864
  }),
844
- t.privacyPolicyUrl && /* @__PURE__ */ K($, {
865
+ t.privacyPolicyUrl && /* @__PURE__ */ G($, {
845
866
  label: r("devportal.privacyPolicy", "Privacy Policy"),
846
867
  url: t.privacyPolicyUrl
847
868
  }),
848
- t.termsOfServiceUrl && /* @__PURE__ */ K($, {
869
+ t.termsOfServiceUrl && /* @__PURE__ */ G($, {
849
870
  label: r("devportal.termsOfService", "Terms of Service"),
850
871
  url: t.termsOfServiceUrl
851
872
  })
@@ -859,11 +880,11 @@ var Ae = [
859
880
  let n = i(e);
860
881
  return n === e ? t : n;
861
882
  };
862
- return /* @__PURE__ */ q("div", {
883
+ return /* @__PURE__ */ K("div", {
863
884
  className: "space-y-6",
864
- children: [/* @__PURE__ */ q("div", {
885
+ children: [/* @__PURE__ */ K("div", {
865
886
  className: "flex items-center justify-between",
866
- children: [/* @__PURE__ */ q("p", {
887
+ children: [/* @__PURE__ */ K("p", {
867
888
  className: "text-sm text-muted-foreground",
868
889
  children: [
869
890
  t.length,
@@ -872,81 +893,81 @@ var Ae = [
872
893
  " ",
873
894
  a("devportal.configured", "configured")
874
895
  ]
875
- }), /* @__PURE__ */ q("button", {
896
+ }), /* @__PURE__ */ K("button", {
876
897
  onClick: () => n(`/apps/${e}/webhooks/new`),
877
898
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors",
878
- children: [/* @__PURE__ */ K(V, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
899
+ children: [/* @__PURE__ */ G(B, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
879
900
  })]
880
- }), t.length > 0 ? /* @__PURE__ */ K("div", {
901
+ }), t.length > 0 ? /* @__PURE__ */ G("div", {
881
902
  className: "space-y-4",
882
- children: t.map((t) => /* @__PURE__ */ q("div", {
903
+ children: t.map((t) => /* @__PURE__ */ K("div", {
883
904
  className: "rounded-lg border bg-card p-4 space-y-4",
884
905
  children: [
885
- /* @__PURE__ */ q("div", {
906
+ /* @__PURE__ */ K("div", {
886
907
  className: "flex items-start justify-between",
887
- children: [/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ q("div", {
908
+ children: [/* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K("div", {
888
909
  className: "flex items-center gap-2",
889
- children: [/* @__PURE__ */ K("h3", {
910
+ children: [/* @__PURE__ */ G("h3", {
890
911
  className: "font-medium",
891
912
  children: t.name
892
- }), /* @__PURE__ */ K(S, {
913
+ }), /* @__PURE__ */ G(S, {
893
914
  status: t.status,
894
915
  type: "webhook"
895
916
  })]
896
- }), t.description && /* @__PURE__ */ K("p", {
917
+ }), t.description && /* @__PURE__ */ G("p", {
897
918
  className: "text-sm text-muted-foreground mt-1",
898
919
  children: t.description
899
- })] }), /* @__PURE__ */ K("button", {
920
+ })] }), /* @__PURE__ */ G("button", {
900
921
  onClick: () => n(`/apps/${e}/webhooks/${t.id}`),
901
922
  className: "rounded-md p-1 hover:bg-muted",
902
- children: /* @__PURE__ */ K(ge, { size: 20 })
923
+ children: /* @__PURE__ */ G(_e, { size: 20 })
903
924
  })]
904
925
  }),
905
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
926
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
906
927
  className: "text-xs text-muted-foreground mb-1",
907
928
  children: a("devportal.endpointUrl", "Endpoint URL")
908
- }), /* @__PURE__ */ K("code", {
929
+ }), /* @__PURE__ */ G("code", {
909
930
  className: "text-sm bg-muted px-2 py-1 rounded block truncate",
910
931
  children: t.url
911
932
  })] }),
912
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
933
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
913
934
  className: "text-xs text-muted-foreground mb-2",
914
935
  children: a("devportal.events", "Events")
915
- }), /* @__PURE__ */ K("div", {
936
+ }), /* @__PURE__ */ G("div", {
916
937
  className: "flex flex-wrap gap-2",
917
- children: t.events.map((e) => /* @__PURE__ */ K("span", {
938
+ children: t.events.map((e) => /* @__PURE__ */ G("span", {
918
939
  className: "rounded-full bg-muted px-2 py-0.5 text-xs",
919
940
  children: e
920
941
  }, e))
921
942
  })] }),
922
- /* @__PURE__ */ q("div", {
943
+ /* @__PURE__ */ K("div", {
923
944
  className: "grid gap-4 sm:grid-cols-4 text-sm",
924
945
  children: [
925
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
946
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
926
947
  className: "text-xs text-muted-foreground",
927
948
  children: a("devportal.success", "Success")
928
- }), /* @__PURE__ */ K("p", {
949
+ }), /* @__PURE__ */ G("p", {
929
950
  className: "font-medium text-status-success-text",
930
951
  children: t.successCount.toLocaleString()
931
952
  })] }),
932
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
953
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
933
954
  className: "text-xs text-muted-foreground",
934
955
  children: a("devportal.failed", "Failed")
935
- }), /* @__PURE__ */ K("p", {
956
+ }), /* @__PURE__ */ G("p", {
936
957
  className: "font-medium text-status-error-text",
937
958
  children: t.failureCount.toLocaleString()
938
959
  })] }),
939
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
960
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
940
961
  className: "text-xs text-muted-foreground",
941
962
  children: a("devportal.successRate", "Success Rate")
942
- }), /* @__PURE__ */ q("p", {
963
+ }), /* @__PURE__ */ K("p", {
943
964
  className: "font-medium",
944
965
  children: [t.successCount + t.failureCount > 0 ? (t.successCount / (t.successCount + t.failureCount) * 100).toFixed(1) : "0.0", "%"]
945
966
  })] }),
946
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
967
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
947
968
  className: "text-xs text-muted-foreground",
948
969
  children: a("devportal.lastTriggered", "Last Triggered")
949
- }), /* @__PURE__ */ K("p", {
970
+ }), /* @__PURE__ */ G("p", {
950
971
  className: "font-medium",
951
972
  children: t.lastTriggeredAt ? new Date(t.lastTriggeredAt).toLocaleString() : a("devportal.never", "Never")
952
973
  })] })
@@ -954,14 +975,14 @@ var Ae = [
954
975
  })
955
976
  ]
956
977
  }, t.id))
957
- }) : /* @__PURE__ */ K(r, {
958
- icon: /* @__PURE__ */ K(xe, { size: 32 }),
978
+ }) : /* @__PURE__ */ G(r, {
979
+ icon: /* @__PURE__ */ G(Se, { size: 32 }),
959
980
  title: a("devportal.noWebhooks", "No webhooks"),
960
981
  description: a("devportal.noWebhooksDescription", "Add a webhook to receive event notifications"),
961
- action: /* @__PURE__ */ q("button", {
982
+ action: /* @__PURE__ */ K("button", {
962
983
  onClick: () => n(`/apps/${e}/webhooks/new`),
963
984
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90",
964
- children: [/* @__PURE__ */ K(V, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
985
+ children: [/* @__PURE__ */ G(B, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
965
986
  })
966
987
  })]
967
988
  });
@@ -970,12 +991,12 @@ var Ae = [
970
991
  let n = p(e);
971
992
  return n === e ? t : n;
972
993
  }, h = n.filter((e) => e.status === "ACTIVE"), g = n.filter((e) => e.status !== "ACTIVE");
973
- return /* @__PURE__ */ q("div", {
994
+ return /* @__PURE__ */ K("div", {
974
995
  className: "space-y-6",
975
996
  children: [
976
- /* @__PURE__ */ q("div", {
997
+ /* @__PURE__ */ K("div", {
977
998
  className: "flex items-center justify-between",
978
- children: [/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ q("p", {
999
+ children: [/* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K("p", {
979
1000
  className: "text-sm text-muted-foreground",
980
1001
  children: [
981
1002
  n.length,
@@ -986,7 +1007,7 @@ var Ae = [
986
1007
  " ",
987
1008
  e
988
1009
  ]
989
- }), h.length > 0 && /* @__PURE__ */ q("p", {
1010
+ }), h.length > 0 && /* @__PURE__ */ K("p", {
990
1011
  className: "text-xs text-muted-foreground mt-0.5",
991
1012
  children: [
992
1013
  h.length,
@@ -998,44 +1019,44 @@ var Ae = [
998
1019
  " ",
999
1020
  m("devportal.revokedExpired", "revoked/expired")
1000
1021
  ]
1001
- })] }), /* @__PURE__ */ q("button", {
1022
+ })] }), /* @__PURE__ */ K("button", {
1002
1023
  onClick: i,
1003
1024
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors",
1004
- children: [/* @__PURE__ */ K(V, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1025
+ children: [/* @__PURE__ */ G(B, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1005
1026
  })]
1006
1027
  }),
1007
- h.length > 0 && /* @__PURE__ */ K("div", {
1028
+ h.length > 0 && /* @__PURE__ */ G("div", {
1008
1029
  className: "rounded-lg border bg-card p-4",
1009
- children: /* @__PURE__ */ q("div", {
1030
+ children: /* @__PURE__ */ K("div", {
1010
1031
  className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
1011
- children: [/* @__PURE__ */ q("div", {
1032
+ children: [/* @__PURE__ */ K("div", {
1012
1033
  className: "flex flex-wrap items-center gap-3",
1013
- children: [/* @__PURE__ */ q("div", {
1034
+ children: [/* @__PURE__ */ K("div", {
1014
1035
  className: "flex items-center gap-2",
1015
- children: [/* @__PURE__ */ K(C, {
1036
+ children: [/* @__PURE__ */ G(C, {
1016
1037
  checked: d,
1017
1038
  indeterminate: f,
1018
1039
  onChange: c,
1019
1040
  ariaLabel: m("devportal.selectAllActiveDelegations", "Select all active app delegations")
1020
- }), /* @__PURE__ */ K("span", {
1041
+ }), /* @__PURE__ */ G("span", {
1021
1042
  className: "text-sm font-medium",
1022
1043
  children: m("devportal.selectAllActive", "Select all active")
1023
1044
  })]
1024
- }), o.size > 0 && /* @__PURE__ */ K("button", {
1045
+ }), o.size > 0 && /* @__PURE__ */ G("button", {
1025
1046
  onClick: l,
1026
1047
  className: "text-sm text-muted-foreground hover:text-foreground",
1027
1048
  children: m("devportal.clearSelection", "Clear selection")
1028
1049
  })]
1029
- }), /* @__PURE__ */ q("div", {
1050
+ }), /* @__PURE__ */ K("div", {
1030
1051
  className: "flex flex-wrap items-center gap-2",
1031
- children: [/* @__PURE__ */ q("span", {
1052
+ children: [/* @__PURE__ */ K("span", {
1032
1053
  className: "rounded-full bg-muted px-3 py-1 text-sm font-medium text-muted-foreground",
1033
1054
  children: [
1034
1055
  o.size,
1035
1056
  " ",
1036
1057
  m("devportal.selected", "selected")
1037
1058
  ]
1038
- }), /* @__PURE__ */ q("button", {
1059
+ }), /* @__PURE__ */ K("button", {
1039
1060
  onClick: u,
1040
1061
  disabled: o.size === 0,
1041
1062
  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",
@@ -1044,33 +1065,33 @@ var Ae = [
1044
1065
  })]
1045
1066
  })
1046
1067
  }),
1047
- n.length > 0 ? /* @__PURE__ */ K("div", {
1068
+ n.length > 0 ? /* @__PURE__ */ G("div", {
1048
1069
  className: "space-y-4",
1049
- children: n.map((e) => /* @__PURE__ */ q("div", {
1070
+ children: n.map((e) => /* @__PURE__ */ K("div", {
1050
1071
  className: "rounded-lg border bg-card p-4 space-y-4",
1051
1072
  children: [
1052
- /* @__PURE__ */ q("div", {
1073
+ /* @__PURE__ */ K("div", {
1053
1074
  className: "flex items-start justify-between",
1054
- children: [/* @__PURE__ */ q("div", {
1075
+ children: [/* @__PURE__ */ K("div", {
1055
1076
  className: "flex items-start gap-3",
1056
- children: [e.status === "ACTIVE" && /* @__PURE__ */ K("div", {
1077
+ children: [e.status === "ACTIVE" && /* @__PURE__ */ G("div", {
1057
1078
  onClick: (e) => e.stopPropagation(),
1058
- children: /* @__PURE__ */ K(C, {
1079
+ children: /* @__PURE__ */ G(C, {
1059
1080
  checked: o.has(e.id),
1060
1081
  onChange: (t) => s(e.id, t),
1061
1082
  ariaLabel: `Select delegation ${e.id}`,
1062
1083
  className: "mt-1"
1063
1084
  })
1064
- }), /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ q("div", {
1085
+ }), /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K("div", {
1065
1086
  className: "flex items-center gap-2",
1066
- children: [/* @__PURE__ */ q("h3", {
1087
+ children: [/* @__PURE__ */ K("h3", {
1067
1088
  className: "font-medium",
1068
1089
  children: ["Delegation #", e.id.slice(0, 8)]
1069
- }), /* @__PURE__ */ K("span", {
1070
- className: t("rounded-full px-2 py-0.5 text-xs font-medium", je[e.status]),
1090
+ }), /* @__PURE__ */ G("span", {
1091
+ className: t("rounded-full px-2 py-0.5 text-xs font-medium", Me[e.status]),
1071
1092
  children: e.status
1072
1093
  })]
1073
- }), /* @__PURE__ */ q("p", {
1094
+ }), /* @__PURE__ */ K("p", {
1074
1095
  className: "text-sm text-muted-foreground mt-1",
1075
1096
  children: [
1076
1097
  m("devportal.granted", "Granted"),
@@ -1082,55 +1103,55 @@ var Ae = [
1082
1103
  e.grantedBy === e.userId ? m("devportal.you", "you") : e.grantedBy.slice(0, 8)
1083
1104
  ]
1084
1105
  })] })]
1085
- }), e.status === "ACTIVE" && /* @__PURE__ */ q("button", {
1106
+ }), e.status === "ACTIVE" && /* @__PURE__ */ K("button", {
1086
1107
  onClick: () => a(e.id),
1087
1108
  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",
1088
- children: [/* @__PURE__ */ K(Ce, { size: 14 }), m("devportal.revoke", "Revoke")]
1109
+ children: [/* @__PURE__ */ G(we, { size: 14 }), m("devportal.revoke", "Revoke")]
1089
1110
  })]
1090
1111
  }),
1091
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
1112
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
1092
1113
  className: "text-xs text-muted-foreground mb-2",
1093
1114
  children: m("devportal.grantedScopes", "Granted Scopes")
1094
- }), /* @__PURE__ */ K("div", {
1115
+ }), /* @__PURE__ */ G("div", {
1095
1116
  className: "flex flex-wrap gap-2",
1096
- children: e.scopes.map((e) => /* @__PURE__ */ K("span", {
1117
+ children: e.scopes.map((e) => /* @__PURE__ */ G("span", {
1097
1118
  className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text",
1098
1119
  children: e
1099
1120
  }, e))
1100
1121
  })] }),
1101
- e.workspaceIds.length > 0 && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
1122
+ e.workspaceIds.length > 0 && /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
1102
1123
  className: "text-xs text-muted-foreground mb-2",
1103
1124
  children: m("devportal.workspaceScope", "Workspace Scope")
1104
- }), /* @__PURE__ */ K("div", {
1125
+ }), /* @__PURE__ */ G("div", {
1105
1126
  className: "flex flex-wrap gap-2",
1106
- children: e.workspaceIds.map((e) => /* @__PURE__ */ K("code", {
1127
+ children: e.workspaceIds.map((e) => /* @__PURE__ */ G("code", {
1107
1128
  className: "rounded bg-muted px-2 py-0.5 text-xs",
1108
1129
  children: e
1109
1130
  }, e))
1110
1131
  })] }),
1111
- /* @__PURE__ */ q("div", {
1132
+ /* @__PURE__ */ K("div", {
1112
1133
  className: "flex items-center gap-4 text-xs text-muted-foreground",
1113
1134
  children: [
1114
- e.expiresAt && /* @__PURE__ */ q("span", {
1135
+ e.expiresAt && /* @__PURE__ */ K("span", {
1115
1136
  className: "flex items-center gap-1",
1116
1137
  children: [
1117
- /* @__PURE__ */ K(de, { size: 12 }),
1138
+ /* @__PURE__ */ G(de, { size: 12 }),
1118
1139
  m("devportal.expires", "Expires"),
1119
1140
  " ",
1120
1141
  new Date(e.expiresAt).toLocaleDateString()
1121
1142
  ]
1122
1143
  }),
1123
- !e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ q("span", {
1144
+ !e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ K("span", {
1124
1145
  className: "flex items-center gap-1",
1125
- children: [/* @__PURE__ */ K(L, {
1146
+ children: [/* @__PURE__ */ G(L, {
1126
1147
  size: 12,
1127
1148
  className: "text-status-success-text"
1128
1149
  }), m("devportal.noExpiration", "No expiration")]
1129
1150
  }),
1130
- e.revokedAt && /* @__PURE__ */ q("span", {
1151
+ e.revokedAt && /* @__PURE__ */ K("span", {
1131
1152
  className: "flex items-center gap-1",
1132
1153
  children: [
1133
- /* @__PURE__ */ K(Ce, {
1154
+ /* @__PURE__ */ G(we, {
1134
1155
  size: 12,
1135
1156
  className: "text-status-error-text"
1136
1157
  }),
@@ -1143,14 +1164,14 @@ var Ae = [
1143
1164
  })
1144
1165
  ]
1145
1166
  }, e.id))
1146
- }) : /* @__PURE__ */ K(r, {
1147
- icon: /* @__PURE__ */ K(W, { size: 32 }),
1167
+ }) : /* @__PURE__ */ G(r, {
1168
+ icon: /* @__PURE__ */ G(U, { size: 32 }),
1148
1169
  title: m("devportal.noDelegations", "No delegations"),
1149
1170
  description: m("devportal.noDelegationsDescription", "Grant a delegation to allow this app to act on your behalf"),
1150
- action: /* @__PURE__ */ q("button", {
1171
+ action: /* @__PURE__ */ K("button", {
1151
1172
  onClick: i,
1152
1173
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90",
1153
- children: [/* @__PURE__ */ K(V, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1174
+ children: [/* @__PURE__ */ G(B, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
1154
1175
  })
1155
1176
  })
1156
1177
  ]
@@ -1160,35 +1181,35 @@ var Ae = [
1160
1181
  let r = t(e);
1161
1182
  return r === e ? n : r;
1162
1183
  }, i = e[0], a = e[1], o = (e, t) => t ? (e - t) / t * 100 : 0;
1163
- return /* @__PURE__ */ q("div", {
1184
+ return /* @__PURE__ */ K("div", {
1164
1185
  className: "space-y-6",
1165
- children: [/* @__PURE__ */ q("div", {
1186
+ children: [/* @__PURE__ */ K("div", {
1166
1187
  className: "grid gap-4 sm:grid-cols-4",
1167
1188
  children: [
1168
- /* @__PURE__ */ K(Q, {
1189
+ /* @__PURE__ */ G(Q, {
1169
1190
  label: n("devportal.activeUsers", "Active Users"),
1170
1191
  value: i?.activeUsers.toLocaleString() || "0",
1171
1192
  trend: a ? o(i.activeUsers, a.activeUsers) : void 0
1172
1193
  }),
1173
- /* @__PURE__ */ K(Q, {
1194
+ /* @__PURE__ */ G(Q, {
1174
1195
  label: n("devportal.apiCalls", "API Calls"),
1175
1196
  value: i ? `${(i.apiCalls / 1e3).toFixed(1)}K` : "0",
1176
1197
  trend: a ? o(i.apiCalls, a.apiCalls) : void 0
1177
1198
  }),
1178
- /* @__PURE__ */ K(Q, {
1199
+ /* @__PURE__ */ G(Q, {
1179
1200
  label: n("devportal.avgResponseTime", "Avg Response Time"),
1180
1201
  value: i?.avgResponseTime ? `${i.avgResponseTime}ms` : n("devportal.notAvailable", "N/A"),
1181
1202
  trend: a && i?.avgResponseTime ? -o(i.avgResponseTime, a.avgResponseTime || 1) : void 0
1182
1203
  }),
1183
- /* @__PURE__ */ K(Q, {
1204
+ /* @__PURE__ */ G(Q, {
1184
1205
  label: n("devportal.errorRate", "Error Rate"),
1185
1206
  value: i && i.apiCalls > 0 ? `${(i.errors / i.apiCalls * 100).toFixed(2)}%` : "0%",
1186
1207
  trend: a && i && i.apiCalls > 0 && a.apiCalls > 0 ? -o(i.errors / i.apiCalls, a.errors / a.apiCalls) : void 0
1187
1208
  })
1188
1209
  ]
1189
- }), /* @__PURE__ */ K(b, {
1210
+ }), /* @__PURE__ */ G(b, {
1190
1211
  title: n("devportal.dailyBreakdown", "Daily Breakdown"),
1191
- children: e.length > 0 ? /* @__PURE__ */ K(T, {
1212
+ children: e.length > 0 ? /* @__PURE__ */ G(T, {
1192
1213
  data: e,
1193
1214
  keyField: "id",
1194
1215
  columns: [
@@ -1228,8 +1249,8 @@ var Ae = [
1228
1249
  render: (e) => e.sessions.toLocaleString()
1229
1250
  }
1230
1251
  ]
1231
- }) : /* @__PURE__ */ K(r, {
1232
- icon: /* @__PURE__ */ K(I, { size: 32 }),
1252
+ }) : /* @__PURE__ */ G(r, {
1253
+ icon: /* @__PURE__ */ G(I, { size: 32 }),
1233
1254
  title: n("devportal.noAnalyticsData", "No analytics data"),
1234
1255
  description: n("devportal.noAnalyticsDataDescription", "Analytics data will appear here once the application starts receiving traffic.")
1235
1256
  })
@@ -1273,21 +1294,21 @@ var Ae = [
1273
1294
  ]), x = A(() => {
1274
1295
  i && v(i), b(!0);
1275
1296
  }, [i]);
1276
- return /* @__PURE__ */ q("div", {
1297
+ return /* @__PURE__ */ K("div", {
1277
1298
  className: "space-y-4",
1278
1299
  children: [
1279
- /* @__PURE__ */ q("div", {
1300
+ /* @__PURE__ */ K("div", {
1280
1301
  className: "flex items-center justify-between",
1281
- children: [/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("h3", {
1302
+ children: [/* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("h3", {
1282
1303
  className: "text-lg font-semibold",
1283
1304
  children: o("devportal.apiPlayground", "API Playground")
1284
- }), /* @__PURE__ */ q("p", {
1305
+ }), /* @__PURE__ */ K("p", {
1285
1306
  className: "text-sm text-muted-foreground",
1286
1307
  children: [
1287
1308
  o("devportal.apiPlaygroundDescription", "Test GraphQL APIs in the context of"),
1288
1309
  " ",
1289
- /* @__PURE__ */ K("strong", { children: t.name }),
1290
- t.appId && /* @__PURE__ */ q("span", {
1310
+ /* @__PURE__ */ G("strong", { children: t.name }),
1311
+ t.appId && /* @__PURE__ */ K("span", {
1291
1312
  className: "ml-1 text-xs text-muted-foreground",
1292
1313
  children: [
1293
1314
  "(OAuth App: ",
@@ -1296,39 +1317,39 @@ var Ae = [
1296
1317
  ]
1297
1318
  })
1298
1319
  ]
1299
- })] }), /* @__PURE__ */ q("button", {
1320
+ })] }), /* @__PURE__ */ K("button", {
1300
1321
  onClick: x,
1301
1322
  className: "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-accent transition-colors",
1302
- children: [/* @__PURE__ */ K(he, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
1323
+ children: [/* @__PURE__ */ G(ge, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
1303
1324
  })]
1304
1325
  }),
1305
- y && /* @__PURE__ */ q("div", {
1326
+ y && /* @__PURE__ */ K("div", {
1306
1327
  className: "rounded-lg border bg-status-info-bg-subtle p-4 text-sm space-y-2",
1307
1328
  children: [
1308
- /* @__PURE__ */ K("p", {
1329
+ /* @__PURE__ */ G("p", {
1309
1330
  className: "font-medium text-status-info-text",
1310
1331
  children: o("devportal.authenticationGuide", "Authentication Guide")
1311
1332
  }),
1312
- /* @__PURE__ */ q("p", {
1333
+ /* @__PURE__ */ K("p", {
1313
1334
  className: "text-status-info-text",
1314
1335
  children: [
1315
1336
  o("devportal.authenticationGuideText", "Your current session token has been filled in. For app-level authentication (Client Credentials flow), use the"),
1316
1337
  " ",
1317
- /* @__PURE__ */ K("strong", { children: o("devportal.oauthClientsTab", "OAuth Clients") }),
1338
+ /* @__PURE__ */ G("strong", { children: o("devportal.oauthClientsTab", "OAuth Clients") }),
1318
1339
  " ",
1319
1340
  o("devportal.authenticationGuideText2", "tab to get the app's clientId and clientSecret, then call:")
1320
1341
  ]
1321
1342
  }),
1322
- /* @__PURE__ */ K("pre", {
1343
+ /* @__PURE__ */ G("pre", {
1323
1344
  className: "rounded bg-status-info-bg-subtle p-2 text-xs overflow-x-auto text-status-info-text",
1324
1345
  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}"
1325
1346
  }),
1326
- /* @__PURE__ */ q("p", {
1347
+ /* @__PURE__ */ K("p", {
1327
1348
  className: "text-status-info-text",
1328
1349
  children: [
1329
1350
  o("devportal.useReturnedAccessToken", "Use the returned"),
1330
1351
  " ",
1331
- /* @__PURE__ */ K("code", {
1352
+ /* @__PURE__ */ G("code", {
1332
1353
  className: "bg-status-info-bg-subtle px-1 rounded",
1333
1354
  children: "accessToken"
1334
1355
  }),
@@ -1336,79 +1357,79 @@ var Ae = [
1336
1357
  o("devportal.asBearerToken", "as the Bearer token below.")
1337
1358
  ]
1338
1359
  }),
1339
- /* @__PURE__ */ K("button", {
1360
+ /* @__PURE__ */ G("button", {
1340
1361
  onClick: () => b(!1),
1341
1362
  className: "text-xs text-accent-blue hover:underline",
1342
1363
  children: o("devportal.dismiss", "Dismiss")
1343
1364
  })
1344
1365
  ]
1345
1366
  }),
1346
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
1367
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
1347
1368
  className: "block text-sm font-medium mb-1",
1348
1369
  children: o("devportal.gatewayEndpoint", "Gateway Endpoint")
1349
- }), /* @__PURE__ */ q("div", {
1370
+ }), /* @__PURE__ */ K("div", {
1350
1371
  className: "flex gap-2",
1351
- children: [/* @__PURE__ */ K("input", {
1372
+ children: [/* @__PURE__ */ G("input", {
1352
1373
  type: "text",
1353
1374
  value: h,
1354
1375
  onChange: (e) => g(e.target.value),
1355
1376
  className: "flex-1 rounded-md border px-3 py-2 text-sm font-mono bg-background"
1356
- }), /* @__PURE__ */ q("select", {
1377
+ }), /* @__PURE__ */ K("select", {
1357
1378
  onChange: (e) => g(e.target.value),
1358
1379
  className: "rounded-md border px-3 py-2 text-sm bg-background",
1359
1380
  value: h,
1360
- children: [/* @__PURE__ */ K("option", {
1381
+ children: [/* @__PURE__ */ G("option", {
1361
1382
  value: `${n || "https://gw-global.local.burdenoff.com"}/global/graphql`,
1362
1383
  children: o("devportal.globalGateway", "Global Gateway")
1363
- }), /* @__PURE__ */ K("option", {
1384
+ }), /* @__PURE__ */ G("option", {
1364
1385
  value: `${r || "https://gw-wspace.local.burdenoff.com"}/workspaces/graphql`,
1365
1386
  children: o("devportal.workspaceGateway", "Workspace Gateway")
1366
1387
  })]
1367
1388
  })]
1368
1389
  })] }),
1369
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
1390
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
1370
1391
  className: "block text-sm font-medium mb-1",
1371
1392
  children: o("devportal.bearerToken", "Bearer Token")
1372
- }), /* @__PURE__ */ K("input", {
1393
+ }), /* @__PURE__ */ G("input", {
1373
1394
  type: "password",
1374
1395
  value: _,
1375
1396
  onChange: (e) => v(e.target.value),
1376
1397
  placeholder: o("devportal.pasteAccessToken", "Paste access token here..."),
1377
1398
  className: "w-full rounded-md border px-3 py-2 text-sm font-mono bg-background"
1378
1399
  })] }),
1379
- /* @__PURE__ */ q("div", {
1400
+ /* @__PURE__ */ K("div", {
1380
1401
  className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
1381
- children: [/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
1402
+ children: [/* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
1382
1403
  className: "block text-sm font-medium mb-1",
1383
1404
  children: o("devportal.query", "Query")
1384
- }), /* @__PURE__ */ K("textarea", {
1405
+ }), /* @__PURE__ */ G("textarea", {
1385
1406
  value: s,
1386
1407
  onChange: (e) => c(e.target.value),
1387
1408
  className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-background resize-y",
1388
1409
  spellCheck: !1
1389
- })] }), /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
1410
+ })] }), /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
1390
1411
  className: "block text-sm font-medium mb-1",
1391
1412
  children: o("devportal.variablesJson", "Variables (JSON)")
1392
- }), /* @__PURE__ */ K("textarea", {
1413
+ }), /* @__PURE__ */ G("textarea", {
1393
1414
  value: l,
1394
1415
  onChange: (e) => u(e.target.value),
1395
1416
  className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-background resize-y",
1396
1417
  spellCheck: !1
1397
1418
  })] })]
1398
1419
  }),
1399
- /* @__PURE__ */ q("button", {
1420
+ /* @__PURE__ */ K("button", {
1400
1421
  onClick: ee,
1401
1422
  disabled: p,
1402
1423
  className: "flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
1403
- children: [p ? /* @__PURE__ */ K(B, {
1424
+ children: [p ? /* @__PURE__ */ G(z, {
1404
1425
  size: 16,
1405
1426
  className: "animate-spin"
1406
- }) : /* @__PURE__ */ K(R, { size: 16 }), p ? o("devportal.executing", "Executing...") : o("devportal.executeQuery", "Execute Query")]
1427
+ }) : /* @__PURE__ */ G(R, { size: 16 }), p ? o("devportal.executing", "Executing...") : o("devportal.executeQuery", "Execute Query")]
1407
1428
  }),
1408
- d && /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
1429
+ d && /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
1409
1430
  className: "block text-sm font-medium mb-1",
1410
1431
  children: o("devportal.response", "Response")
1411
- }), /* @__PURE__ */ K("pre", {
1432
+ }), /* @__PURE__ */ G("pre", {
1412
1433
  className: "w-full max-h-96 overflow-auto rounded-md border bg-muted p-4 text-xs font-mono",
1413
1434
  children: d
1414
1435
  })] })
@@ -1420,45 +1441,45 @@ var Ae = [
1420
1441
  r((await s(e)).downloadUrl);
1421
1442
  } catch {}
1422
1443
  }, [s, r]);
1423
- return /* @__PURE__ */ q("div", {
1444
+ return /* @__PURE__ */ K("div", {
1424
1445
  className: "space-y-1.5",
1425
1446
  children: [
1426
- /* @__PURE__ */ K("label", {
1447
+ /* @__PURE__ */ G("label", {
1427
1448
  className: "text-sm font-medium",
1428
1449
  children: e
1429
1450
  }),
1430
- /* @__PURE__ */ q("div", {
1451
+ /* @__PURE__ */ K("div", {
1431
1452
  className: "flex gap-3 items-start",
1432
- children: [/* @__PURE__ */ q("div", {
1453
+ children: [/* @__PURE__ */ K("div", {
1433
1454
  className: t("relative shrink-0 w-20 rounded-lg border border-border bg-bg-sunken overflow-hidden flex items-center justify-center", o),
1434
- children: [n ? /* @__PURE__ */ K("img", {
1455
+ children: [n ? /* @__PURE__ */ G("img", {
1435
1456
  src: n,
1436
1457
  alt: e,
1437
1458
  className: "w-full h-full object-cover"
1438
- }) : /* @__PURE__ */ K(U, {
1459
+ }) : /* @__PURE__ */ G(H, {
1439
1460
  size: 18,
1440
1461
  className: "text-text-secondary opacity-40"
1441
- }), c && /* @__PURE__ */ q("div", {
1462
+ }), c && /* @__PURE__ */ K("div", {
1442
1463
  className: "absolute inset-0 bg-black/40 flex flex-col items-center justify-center gap-1",
1443
- children: [/* @__PURE__ */ K(B, {
1464
+ children: [/* @__PURE__ */ G(z, {
1444
1465
  size: 14,
1445
1466
  className: "animate-spin text-white"
1446
- }), /* @__PURE__ */ q("span", {
1467
+ }), /* @__PURE__ */ K("span", {
1447
1468
  className: "text-white text-xs",
1448
1469
  children: [l, "%"]
1449
1470
  })]
1450
1471
  })]
1451
- }), /* @__PURE__ */ q("div", {
1472
+ }), /* @__PURE__ */ K("div", {
1452
1473
  className: "flex-1 space-y-1.5",
1453
1474
  children: [
1454
- /* @__PURE__ */ K("input", {
1475
+ /* @__PURE__ */ G("input", {
1455
1476
  type: "url",
1456
1477
  value: n,
1457
1478
  onChange: (e) => r(e.target.value),
1458
1479
  placeholder: "https://...",
1459
1480
  className: "w-full rounded-md border border-border bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30"
1460
1481
  }),
1461
- /* @__PURE__ */ K("input", {
1482
+ /* @__PURE__ */ G("input", {
1462
1483
  ref: d,
1463
1484
  type: "file",
1464
1485
  accept: a,
@@ -1468,21 +1489,21 @@ var Ae = [
1468
1489
  t && f(t), e.target.value = "";
1469
1490
  }
1470
1491
  }),
1471
- /* @__PURE__ */ q("button", {
1492
+ /* @__PURE__ */ K("button", {
1472
1493
  type: "button",
1473
1494
  disabled: c,
1474
1495
  onClick: () => d.current?.click(),
1475
1496
  className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-muted transition-colors disabled:opacity-50",
1476
- children: [/* @__PURE__ */ K(U, { size: 11 }), c ? `Uploading… ${l}%` : "Upload image"]
1497
+ children: [/* @__PURE__ */ G(H, { size: 11 }), c ? `Uploading… ${l}%` : "Upload image"]
1477
1498
  }),
1478
- u && /* @__PURE__ */ K("p", {
1499
+ u && /* @__PURE__ */ G("p", {
1479
1500
  className: "text-xs text-status-error-text",
1480
1501
  children: u
1481
1502
  })
1482
1503
  ]
1483
1504
  })]
1484
1505
  }),
1485
- i && /* @__PURE__ */ K("p", {
1506
+ i && /* @__PURE__ */ G("p", {
1486
1507
  className: "text-xs text-text-secondary",
1487
1508
  children: i
1488
1509
  })
@@ -1501,45 +1522,45 @@ var Ae = [
1501
1522
  ]), l = (t) => {
1502
1523
  n(e.filter((e, n) => n !== t));
1503
1524
  };
1504
- return /* @__PURE__ */ q("div", {
1525
+ return /* @__PURE__ */ K("div", {
1505
1526
  className: "space-y-2",
1506
1527
  children: [
1507
- /* @__PURE__ */ K("label", {
1528
+ /* @__PURE__ */ G("label", {
1508
1529
  className: "text-sm font-medium",
1509
1530
  children: "Screenshots"
1510
1531
  }),
1511
- /* @__PURE__ */ q("div", {
1532
+ /* @__PURE__ */ K("div", {
1512
1533
  className: "flex flex-wrap gap-3",
1513
- children: [e.map((e, t) => /* @__PURE__ */ q("div", {
1534
+ children: [e.map((e, t) => /* @__PURE__ */ K("div", {
1514
1535
  className: "relative group w-36 aspect-video rounded-lg border border-border overflow-hidden bg-bg-sunken",
1515
- children: [/* @__PURE__ */ K("img", {
1536
+ children: [/* @__PURE__ */ G("img", {
1516
1537
  src: e,
1517
1538
  alt: `Screenshot ${t + 1}`,
1518
1539
  className: "w-full h-full object-cover"
1519
- }), /* @__PURE__ */ K("button", {
1540
+ }), /* @__PURE__ */ G("button", {
1520
1541
  type: "button",
1521
1542
  onClick: () => l(t),
1522
1543
  className: "absolute top-1 right-1 rounded-full bg-black/60 text-white p-0.5 opacity-0 group-hover:opacity-100 transition-opacity",
1523
- children: /* @__PURE__ */ K(Se, { size: 12 })
1544
+ children: /* @__PURE__ */ G(Ce, { size: 12 })
1524
1545
  })]
1525
- }, t)), /* @__PURE__ */ K("button", {
1546
+ }, t)), /* @__PURE__ */ G("button", {
1526
1547
  type: "button",
1527
1548
  disabled: i,
1528
1549
  onClick: () => s.current?.click(),
1529
1550
  className: t("w-36 aspect-video rounded-lg border-2 border-dashed border-border 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"),
1530
- children: i ? /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(B, {
1551
+ children: i ? /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(z, {
1531
1552
  size: 18,
1532
1553
  className: "animate-spin text-primary"
1533
- }), /* @__PURE__ */ q("span", {
1554
+ }), /* @__PURE__ */ K("span", {
1534
1555
  className: "text-xs",
1535
1556
  children: [a, "%"]
1536
- })] }) : /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(U, { size: 18 }), /* @__PURE__ */ K("span", {
1557
+ })] }) : /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(H, { size: 18 }), /* @__PURE__ */ G("span", {
1537
1558
  className: "text-xs",
1538
1559
  children: "Add screenshot"
1539
1560
  })] })
1540
1561
  })]
1541
1562
  }),
1542
- /* @__PURE__ */ K("input", {
1563
+ /* @__PURE__ */ G("input", {
1543
1564
  ref: s,
1544
1565
  type: "file",
1545
1566
  accept: "image/png,image/jpeg,image/webp,image/gif",
@@ -1549,7 +1570,7 @@ var Ae = [
1549
1570
  t && c(t), e.target.value = "";
1550
1571
  }
1551
1572
  }),
1552
- o && /* @__PURE__ */ K("p", {
1573
+ o && /* @__PURE__ */ G("p", {
1553
1574
  className: "text-xs text-status-error-text",
1554
1575
  children: o
1555
1576
  })
@@ -1660,15 +1681,15 @@ function Je(e) {
1660
1681
  manifestJsonContent: typeof t.jsonContent == "string" ? t.jsonContent : typeof t.content == "string" ? t.content : ""
1661
1682
  };
1662
1683
  }
1663
- var Ye = J`
1684
+ var Ye = q`
1664
1685
  query MyPublisherForListing {
1665
1686
  myPublisher { id }
1666
1687
  }
1667
- `, Xe = J`
1688
+ `, Xe = q`
1668
1689
  query PublisherProductsForListing($publisherId: String!) {
1669
1690
  products(filter: { publisherId: $publisherId }) { id productId }
1670
1691
  }
1671
- `, Ze = J`
1692
+ `, Ze = q`
1672
1693
  mutation UpdateStoreProduct($input: UpdateProductInput!) {
1673
1694
  updateProduct(input: $input) { id name description }
1674
1695
  }
@@ -1682,7 +1703,7 @@ var Ye = J`
1682
1703
  variables: { publisherId: x ?? "" },
1683
1704
  fetchPolicy: "cache-first",
1684
1705
  skip: !x
1685
- }), te = S?.products?.find((e) => e.productId === n.id)?.id ?? null, [C] = Ee(Ze), [ne] = v(), [T, { loading: E }] = g();
1706
+ }), te = S?.products?.find((e) => e.productId === n.id)?.id ?? null, [C] = J(Ze), [ne] = v(), [T, { loading: E }] = g();
1686
1707
  ce(() => {
1687
1708
  f(Je(y.current));
1688
1709
  }, [n.id]);
@@ -1752,7 +1773,7 @@ var Ye = J`
1752
1773
  } catch {
1753
1774
  w("error");
1754
1775
  }
1755
- }, se = M(null), j = M(null), { upload: F, uploading: I, progress: ue, error: pe } = k(r, i, a, o), { upload: R, uploading: me, progress: he, error: ge } = k(r, i, a, o, "/DevPortal/Assets"), { upload: V, uploading: _e, progress: ve, error: H } = k(r, i, a, o, "/DevPortal/Assets"), { upload: W, uploading: xe, progress: Se, error: Ce } = k(r, i, a, o, "/DevPortal/Assets"), we = A(async (e) => {
1776
+ }, se = M(null), j = M(null), { upload: F, uploading: I, progress: ue, error: pe } = k(r, i, a, o), { upload: R, uploading: me, progress: ge, error: _e } = k(r, i, a, o, "/DevPortal/Assets"), { upload: B, uploading: ve, progress: ye, error: V } = k(r, i, a, o, "/DevPortal/Assets"), { upload: U, uploading: Se, progress: Ce, error: we } = k(r, i, a, o, "/DevPortal/Assets"), Te = A(async (e) => {
1756
1777
  let t = e.target.files?.[0];
1757
1778
  if (t) {
1758
1779
  e.target.value = "";
@@ -1764,7 +1785,7 @@ var Ye = J`
1764
1785
  }));
1765
1786
  } catch {}
1766
1787
  }
1767
- }, [F]), Te = A(async (e) => {
1788
+ }, [F]), Ee = A(async (e) => {
1768
1789
  e.preventDefault(), _(!1);
1769
1790
  let t = e.dataTransfer.files?.[0];
1770
1791
  if (t) try {
@@ -1774,7 +1795,7 @@ var Ye = J`
1774
1795
  manifestRegistryUrl: e.downloadUrl
1775
1796
  }));
1776
1797
  } catch {}
1777
- }, [F]), J = A((e) => {
1798
+ }, [F]), q = A((e) => {
1778
1799
  let t = e.target.files?.[0];
1779
1800
  if (!t) return;
1780
1801
  let n = new FileReader();
@@ -1809,9 +1830,9 @@ var Ye = J`
1809
1830
  compatibility: { minPlatformVersion: d.manifestMinPlatformVersion }
1810
1831
  }, i = new Blob([JSON.stringify(r, null, 2)], { type: "application/json" }), a = URL.createObjectURL(i), o = document.createElement("a");
1811
1832
  o.href = a, o.download = `${n.slug}-manifest.json`, o.click(), URL.revokeObjectURL(a);
1812
- }, [n.slug, d]), Oe = Ge.has(d.manifestItemType), X = d.manifestInstallType === "builtin", ke = d.pricingType !== "FREE", Ae = d.manifestRegistryUrl ? d.manifestRegistryUrl.split("/").pop()?.split("?")[0] ?? "" : "";
1833
+ }, [n.slug, d]), Oe = Ge.has(d.manifestItemType), ke = d.manifestInstallType === "builtin", Ae = d.pricingType !== "FREE", je = d.manifestRegistryUrl ? d.manifestRegistryUrl.split("/").pop()?.split("?")[0] ?? "" : "";
1813
1834
  n.status;
1814
- let je = n.status === "SUBMITTED", Z = n.status === "PUBLISHED", Me = n.appType === "NODE" || n.appType === "WORKFLOW", Ne = [
1835
+ let Me = n.status === "SUBMITTED", X = n.status === "PUBLISHED", Z = n.appType === "NODE" || n.appType === "WORKFLOW", Ne = n.appType === "API_INTEGRATION", Pe = [
1815
1836
  {
1816
1837
  label: "Short description",
1817
1838
  done: !!d.shortDescription.trim()
@@ -1832,38 +1853,38 @@ var Ye = J`
1832
1853
  label: "Terms of Service URL",
1833
1854
  done: !!d.termsOfServiceUrl.trim()
1834
1855
  }
1835
- ], Pe = Ne.filter((e) => e.done).length, Fe = Ne.length;
1836
- return /* @__PURE__ */ q("div", {
1856
+ ], Fe = Pe.filter((e) => e.done).length, Ie = Pe.length;
1857
+ return /* @__PURE__ */ K("div", {
1837
1858
  className: "space-y-8 max-w-3xl",
1838
1859
  children: [
1839
- /* @__PURE__ */ q("div", {
1860
+ /* @__PURE__ */ K("div", {
1840
1861
  className: "rounded-lg border border-primary/20 bg-primary/5 px-4 py-3 space-y-2",
1841
- children: [/* @__PURE__ */ K("p", {
1862
+ children: [/* @__PURE__ */ G("p", {
1842
1863
  className: "text-sm font-semibold text-primary",
1843
1864
  children: u("devportal.listingTabPurpose", "What is this tab for?")
1844
- }), /* @__PURE__ */ q("ul", {
1865
+ }), /* @__PURE__ */ K("ul", {
1845
1866
  className: "text-sm text-muted-foreground space-y-1 list-none pl-0",
1846
1867
  children: [
1847
- /* @__PURE__ */ q("li", {
1868
+ /* @__PURE__ */ K("li", {
1848
1869
  className: "flex items-start gap-2",
1849
- children: [/* @__PURE__ */ K(be, {
1870
+ children: [/* @__PURE__ */ G(xe, {
1850
1871
  size: 14,
1851
1872
  className: "mt-0.5 shrink-0 text-primary"
1852
- }), /* @__PURE__ */ q("span", { children: [
1853
- /* @__PURE__ */ K("strong", { children: u("devportal.thisTab", "This tab") }),
1873
+ }), /* @__PURE__ */ K("span", { children: [
1874
+ /* @__PURE__ */ G("strong", { children: u("devportal.thisTab", "This tab") }),
1854
1875
  " ",
1855
1876
  u("devportal.listingTabDesc", "controls your store card — the name, description, icon and screenshots users see in the marketplace. Save changes here any time without creating a new release.")
1856
1877
  ] })]
1857
1878
  }),
1858
- Me && /* @__PURE__ */ q("li", {
1879
+ Z && /* @__PURE__ */ K("li", {
1859
1880
  className: "flex items-start gap-2",
1860
- children: [/* @__PURE__ */ K(de, {
1881
+ children: [/* @__PURE__ */ G(de, {
1861
1882
  size: 14,
1862
1883
  className: "mt-0.5 shrink-0 text-primary"
1863
- }), /* @__PURE__ */ q("span", { children: [
1884
+ }), /* @__PURE__ */ K("span", { children: [
1864
1885
  u("devportal.versionsTabDesc", "To release a new version (ZIP package + manifest), go to the"),
1865
1886
  " ",
1866
- /* @__PURE__ */ K("button", {
1887
+ /* @__PURE__ */ G("button", {
1867
1888
  type: "button",
1868
1889
  className: "underline text-primary hover:no-underline",
1869
1890
  onClick: () => s?.(`${c}/apps/${n.id}/versions`),
@@ -1872,66 +1893,66 @@ var Ye = J`
1872
1893
  "."
1873
1894
  ] })]
1874
1895
  }),
1875
- /* @__PURE__ */ q("li", {
1896
+ /* @__PURE__ */ K("li", {
1876
1897
  className: "flex items-start gap-2",
1877
- children: [/* @__PURE__ */ K(ye, {
1898
+ children: [/* @__PURE__ */ G(be, {
1878
1899
  size: 14,
1879
1900
  className: "mt-0.5 shrink-0 text-primary"
1880
- }), /* @__PURE__ */ K("span", { children: u("devportal.submitTabDesc", "When your listing is ready, click \"Submit for Review\" to send it to the review team.") })]
1901
+ }), /* @__PURE__ */ G("span", { children: u("devportal.submitTabDesc", "When your listing is ready, click \"Submit for Review\" to send it to the review team.") })]
1881
1902
  })
1882
1903
  ]
1883
1904
  })]
1884
1905
  }),
1885
- !Z && /* @__PURE__ */ q("div", {
1906
+ !X && /* @__PURE__ */ K("div", {
1886
1907
  className: "rounded-lg border bg-card p-4 space-y-3",
1887
- children: [/* @__PURE__ */ q("div", {
1908
+ children: [/* @__PURE__ */ K("div", {
1888
1909
  className: "flex items-center justify-between",
1889
- children: [/* @__PURE__ */ q("p", {
1910
+ children: [/* @__PURE__ */ K("p", {
1890
1911
  className: "text-sm font-medium",
1891
1912
  children: [
1892
1913
  u("devportal.listingCompleteness", "Listing completeness"),
1893
1914
  " ",
1894
- /* @__PURE__ */ q("span", {
1895
- className: t("ml-1 text-xs font-semibold", Pe === Fe ? "text-status-success-text" : "text-status-warning-text"),
1915
+ /* @__PURE__ */ K("span", {
1916
+ className: t("ml-1 text-xs font-semibold", Fe === Ie ? "text-status-success-text" : "text-status-warning-text"),
1896
1917
  children: [
1897
- Pe,
1918
+ Fe,
1898
1919
  "/",
1899
- Fe
1920
+ Ie
1900
1921
  ]
1901
1922
  })
1902
1923
  ]
1903
- }), Pe === Fe && /* @__PURE__ */ q("span", {
1924
+ }), Fe === Ie && /* @__PURE__ */ K("span", {
1904
1925
  className: "text-xs text-status-success-text flex items-center gap-1",
1905
- children: [/* @__PURE__ */ K(L, { size: 12 }), u("devportal.readyToSubmit", "Ready to submit")]
1926
+ children: [/* @__PURE__ */ G(L, { size: 12 }), u("devportal.readyToSubmit", "Ready to submit")]
1906
1927
  })]
1907
- }), /* @__PURE__ */ K("div", {
1928
+ }), /* @__PURE__ */ G("div", {
1908
1929
  className: "grid grid-cols-2 sm:grid-cols-3 gap-2",
1909
- children: Ne.map((e) => /* @__PURE__ */ q("div", {
1930
+ children: Pe.map((e) => /* @__PURE__ */ K("div", {
1910
1931
  className: "flex items-center gap-1.5 text-xs",
1911
- children: [e.done ? /* @__PURE__ */ K(L, {
1932
+ children: [e.done ? /* @__PURE__ */ G(L, {
1912
1933
  size: 12,
1913
1934
  className: "text-status-success-text shrink-0"
1914
- }) : /* @__PURE__ */ K(le, {
1935
+ }) : /* @__PURE__ */ G(le, {
1915
1936
  size: 12,
1916
1937
  className: "text-status-warning-text shrink-0"
1917
- }), /* @__PURE__ */ K("span", {
1938
+ }), /* @__PURE__ */ G("span", {
1918
1939
  className: e.done ? "text-foreground" : "text-muted-foreground",
1919
1940
  children: e.label
1920
1941
  })]
1921
1942
  }, e.label))
1922
1943
  })]
1923
1944
  }),
1924
- Z ? /* @__PURE__ */ q("div", {
1945
+ X ? /* @__PURE__ */ K("div", {
1925
1946
  className: "flex items-start gap-3 rounded-lg border border-success/30 bg-success/10 px-4 py-3",
1926
- children: [/* @__PURE__ */ K(L, {
1947
+ children: [/* @__PURE__ */ G(L, {
1927
1948
  size: 16,
1928
1949
  className: "text-success mt-0.5 shrink-0"
1929
- }), /* @__PURE__ */ q("div", {
1950
+ }), /* @__PURE__ */ K("div", {
1930
1951
  className: "text-sm",
1931
- children: [/* @__PURE__ */ K("span", {
1952
+ children: [/* @__PURE__ */ G("span", {
1932
1953
  className: "font-medium text-success",
1933
1954
  children: u("devportal.storeListing.published", "Published")
1934
- }), n.publishedAt && /* @__PURE__ */ q("span", {
1955
+ }), n.publishedAt && /* @__PURE__ */ K("span", {
1935
1956
  className: "text-muted-foreground ml-2",
1936
1957
  children: [
1937
1958
  u("devportal.storeListing.since", "since"),
@@ -1940,66 +1961,66 @@ var Ye = J`
1940
1961
  ]
1941
1962
  })]
1942
1963
  })]
1943
- }) : je ? /* @__PURE__ */ q("div", {
1964
+ }) : Me ? /* @__PURE__ */ K("div", {
1944
1965
  className: "flex items-start gap-3 rounded-lg border border-primary/30 bg-primary/5 px-4 py-3",
1945
- children: [/* @__PURE__ */ K(de, {
1966
+ children: [/* @__PURE__ */ G(de, {
1946
1967
  size: 16,
1947
1968
  className: "text-primary mt-0.5 shrink-0"
1948
- }), /* @__PURE__ */ q("div", {
1969
+ }), /* @__PURE__ */ K("div", {
1949
1970
  className: "text-sm",
1950
1971
  children: [
1951
- /* @__PURE__ */ K("span", {
1972
+ /* @__PURE__ */ G("span", {
1952
1973
  className: "font-medium text-primary",
1953
1974
  children: u("devportal.storeListing.underReview", "Submitted for review")
1954
1975
  }),
1955
- n.submittedAt && /* @__PURE__ */ K("span", {
1976
+ n.submittedAt && /* @__PURE__ */ G("span", {
1956
1977
  className: "text-muted-foreground ml-2",
1957
1978
  children: new Date(n.submittedAt).toLocaleDateString()
1958
1979
  }),
1959
- n.reviewStatus && /* @__PURE__ */ q("span", {
1980
+ n.reviewStatus && /* @__PURE__ */ K("span", {
1960
1981
  className: "text-muted-foreground ml-2",
1961
1982
  children: ["· ", n.reviewStatus]
1962
1983
  })
1963
1984
  ]
1964
1985
  })]
1965
- }) : /* @__PURE__ */ q("div", {
1986
+ }) : /* @__PURE__ */ K("div", {
1966
1987
  className: "flex items-start gap-3 rounded-lg border border-warning/30 bg-warning/5 px-4 py-3",
1967
- children: [/* @__PURE__ */ K(le, {
1988
+ children: [/* @__PURE__ */ G(le, {
1968
1989
  size: 16,
1969
1990
  className: "text-warning mt-0.5 shrink-0"
1970
- }), /* @__PURE__ */ q("div", {
1991
+ }), /* @__PURE__ */ K("div", {
1971
1992
  className: "text-sm",
1972
- children: [/* @__PURE__ */ K("span", {
1993
+ children: [/* @__PURE__ */ G("span", {
1973
1994
  className: "font-medium text-warning",
1974
1995
  children: u("devportal.storeListing.draft", "Draft")
1975
- }), /* @__PURE__ */ K("span", {
1996
+ }), /* @__PURE__ */ G("span", {
1976
1997
  className: "text-muted-foreground ml-2",
1977
1998
  children: u("devportal.storeListing.draftHint", "Complete your store listing and submit for review to publish.")
1978
1999
  })]
1979
2000
  })]
1980
2001
  }),
1981
- Me ? /* @__PURE__ */ q("div", {
2002
+ Z ? /* @__PURE__ */ K("div", {
1982
2003
  className: "rounded-lg border border-border-subtle bg-bg-sunken px-4 py-4 flex items-start gap-3",
1983
- children: [/* @__PURE__ */ K(z, {
2004
+ children: [/* @__PURE__ */ G(he, {
1984
2005
  size: 16,
1985
2006
  className: "shrink-0 mt-0.5 text-muted-foreground"
1986
- }), /* @__PURE__ */ q("div", {
2007
+ }), /* @__PURE__ */ K("div", {
1987
2008
  className: "text-sm space-y-1",
1988
- children: [/* @__PURE__ */ K("p", {
2009
+ children: [/* @__PURE__ */ G("p", {
1989
2010
  className: "font-medium",
1990
2011
  children: u("devportal.packageManagedInVersions", "ZIP package & manifest are managed in Versions")
1991
- }), /* @__PURE__ */ K("p", {
2012
+ }), /* @__PURE__ */ G("p", {
1992
2013
  className: "text-muted-foreground",
1993
2014
  children: u("devportal.packageManagedInVersionsDesc", "For NODE and WORKFLOW types, each release is uploaded through the Versions page — including the ZIP archive and manifest.json. This keeps your code releases separate from your store card.")
1994
2015
  })]
1995
2016
  })]
1996
- }) : /* @__PURE__ */ K(b, {
2017
+ }) : !Ne && /* @__PURE__ */ G(b, {
1997
2018
  title: u("devportal.package", "Package"),
1998
2019
  description: u("devportal.packageDescription", "Technical configuration — how FluidGrid installs and runs this item"),
1999
- children: /* @__PURE__ */ q("div", {
2020
+ children: /* @__PURE__ */ K("div", {
2000
2021
  className: "space-y-6",
2001
2022
  children: [
2002
- /* @__PURE__ */ K(re, {
2023
+ /* @__PURE__ */ G(re, {
2003
2024
  label: u("devportal.storeItemType", "Item Type"),
2004
2025
  value: d.manifestItemType,
2005
2026
  onChange: (e) => {
@@ -2010,14 +2031,14 @@ var Ye = J`
2010
2031
  placeholder: u("devportal.selectItemType", "Select item type…"),
2011
2032
  hint: u("devportal.storeItemTypeHint", "Determines how this item is categorised and how the platform runs it")
2012
2033
  }),
2013
- /* @__PURE__ */ q("div", {
2034
+ /* @__PURE__ */ K("div", {
2014
2035
  className: "grid gap-4 sm:grid-cols-2",
2015
- children: [/* @__PURE__ */ K(D, {
2036
+ children: [/* @__PURE__ */ G(D, {
2016
2037
  label: u("devportal.manifestDisplayName", "Display Name"),
2017
2038
  value: d.manifestDisplayName,
2018
2039
  onChange: (e) => O("manifestDisplayName", e.target.value),
2019
2040
  placeholder: "My Awesome Node"
2020
- }), /* @__PURE__ */ K(D, {
2041
+ }), /* @__PURE__ */ G(D, {
2021
2042
  label: u("devportal.manifestVersion", "Version"),
2022
2043
  value: d.manifestVersion,
2023
2044
  onChange: (e) => O("manifestVersion", e.target.value),
@@ -2025,7 +2046,7 @@ var Ye = J`
2025
2046
  hint: u("devportal.semverHint", "Semantic version (MAJOR.MINOR.PATCH)")
2026
2047
  })]
2027
2048
  }),
2028
- Oe && /* @__PURE__ */ K(ie, {
2049
+ Oe && /* @__PURE__ */ G(ie, {
2029
2050
  label: u("devportal.jsonContent", d.manifestItemType === "workflow" ? "Workflow Definition (JSON)" : "Template Definition (JSON)"),
2030
2051
  value: d.manifestJsonContent,
2031
2052
  onChange: (e) => O("manifestJsonContent", e.target.value),
@@ -2033,62 +2054,62 @@ var Ye = J`
2033
2054
  placeholder: "{\n \"nodes\": [],\n \"edges\": []\n}",
2034
2055
  hint: u("devportal.jsonContentHint", "Paste the full JSON definition. Stored and applied directly — no zip needed.")
2035
2056
  }),
2036
- !Oe && /* @__PURE__ */ q("div", {
2057
+ !Oe && /* @__PURE__ */ K("div", {
2037
2058
  className: "space-y-3",
2038
2059
  children: [
2039
- /* @__PURE__ */ q("div", {
2060
+ /* @__PURE__ */ K("div", {
2040
2061
  className: "flex items-center justify-between flex-wrap gap-2",
2041
- children: [/* @__PURE__ */ K("label", {
2062
+ children: [/* @__PURE__ */ G("label", {
2042
2063
  className: "text-sm font-medium",
2043
2064
  children: u("devportal.packageFile", "Package File")
2044
- }), /* @__PURE__ */ q("label", {
2065
+ }), /* @__PURE__ */ K("label", {
2045
2066
  className: "flex items-center gap-2 text-sm cursor-pointer select-none",
2046
- children: [/* @__PURE__ */ K("input", {
2067
+ children: [/* @__PURE__ */ G("input", {
2047
2068
  type: "checkbox",
2048
- checked: X,
2069
+ checked: ke,
2049
2070
  onChange: (e) => O("manifestInstallType", e.target.checked ? "builtin" : "zip"),
2050
2071
  className: "h-4 w-4 rounded border-border accent-primary"
2051
- }), /* @__PURE__ */ K("span", {
2072
+ }), /* @__PURE__ */ G("span", {
2052
2073
  className: "text-text-secondary",
2053
2074
  children: u("devportal.builtinToggle", "Built-in (pre-installed, no upload needed)")
2054
2075
  })]
2055
2076
  })]
2056
2077
  }),
2057
- !X && /* @__PURE__ */ q(G, { children: [
2058
- /* @__PURE__ */ q("div", {
2078
+ !ke && /* @__PURE__ */ K(W, { children: [
2079
+ /* @__PURE__ */ K("div", {
2059
2080
  className: "flex gap-3 rounded-lg border border-border-subtle bg-bg-sunken p-3 text-sm text-text-secondary",
2060
- children: [/* @__PURE__ */ K(z, {
2081
+ children: [/* @__PURE__ */ G(he, {
2061
2082
  size: 15,
2062
2083
  className: "mt-0.5 shrink-0"
2063
- }), /* @__PURE__ */ q("span", { children: [
2084
+ }), /* @__PURE__ */ K("span", { children: [
2064
2085
  u("devportal.zipModelHint", "Package your code and a "),
2065
- /* @__PURE__ */ K("code", {
2086
+ /* @__PURE__ */ G("code", {
2066
2087
  className: "rounded bg-muted px-1 py-0.5 font-mono text-xs",
2067
2088
  children: "manifest.json"
2068
2089
  }),
2069
2090
  u("devportal.zipModelHint2", " into a single zip — like a Chrome extension. Upload it below and FluidGrid handles the rest automatically.")
2070
2091
  ] })]
2071
2092
  }),
2072
- /* @__PURE__ */ q("div", {
2093
+ /* @__PURE__ */ K("div", {
2073
2094
  onDragOver: (e) => {
2074
2095
  e.preventDefault(), _(!0);
2075
2096
  },
2076
2097
  onDragLeave: () => _(!1),
2077
- onDrop: (e) => void Te(e),
2098
+ onDrop: (e) => void Ee(e),
2078
2099
  onClick: () => !I && j.current?.click(),
2079
2100
  className: t("relative flex flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed px-6 py-10 text-center transition-colors cursor-pointer", h ? "border-primary bg-primary/5" : "border-border hover:border-border-strong hover:bg-bg-sunken", I && "pointer-events-none opacity-75"),
2080
- children: [/* @__PURE__ */ K("input", {
2101
+ children: [/* @__PURE__ */ G("input", {
2081
2102
  ref: j,
2082
2103
  type: "file",
2083
2104
  accept: ".zip,application/zip,application/x-zip-compressed",
2084
2105
  className: "hidden",
2085
- onChange: (e) => void we(e)
2086
- }), I ? /* @__PURE__ */ q(G, { children: [
2087
- /* @__PURE__ */ K(B, {
2106
+ onChange: (e) => void Te(e)
2107
+ }), I ? /* @__PURE__ */ K(W, { children: [
2108
+ /* @__PURE__ */ G(z, {
2088
2109
  size: 28,
2089
2110
  className: "animate-spin text-primary"
2090
2111
  }),
2091
- /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ q("p", {
2112
+ /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ K("p", {
2092
2113
  className: "text-sm font-medium",
2093
2114
  children: [
2094
2115
  u("devportal.uploading", "Uploading…"),
@@ -2096,78 +2117,78 @@ var Ye = J`
2096
2117
  ue,
2097
2118
  "%"
2098
2119
  ]
2099
- }), /* @__PURE__ */ K("p", {
2120
+ }), /* @__PURE__ */ G("p", {
2100
2121
  className: "text-xs text-text-secondary mt-0.5",
2101
2122
  children: u("devportal.uploadingHint", "Stored securely in your workspace")
2102
2123
  })] }),
2103
- /* @__PURE__ */ K("div", {
2124
+ /* @__PURE__ */ G("div", {
2104
2125
  className: "w-48 h-1.5 rounded-full bg-muted overflow-hidden",
2105
- children: /* @__PURE__ */ K("div", {
2126
+ children: /* @__PURE__ */ G("div", {
2106
2127
  className: "h-full bg-primary transition-all",
2107
2128
  style: { width: `${ue}%` }
2108
2129
  })
2109
2130
  })
2110
- ] }) : Ae ? /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(L, {
2131
+ ] }) : je ? /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(L, {
2111
2132
  size: 28,
2112
2133
  className: "text-status-success-text"
2113
- }), /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
2134
+ }), /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
2114
2135
  className: "text-sm font-medium",
2115
- children: Ae
2116
- }), /* @__PURE__ */ K("p", {
2136
+ children: je
2137
+ }), /* @__PURE__ */ G("p", {
2117
2138
  className: "text-xs text-text-secondary mt-0.5",
2118
2139
  children: u("devportal.clickToReplace", "Click or drag to replace")
2119
- })] })] }) : /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(U, {
2140
+ })] })] }) : /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(H, {
2120
2141
  size: 28,
2121
2142
  className: "text-text-secondary"
2122
- }), /* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("p", {
2143
+ }), /* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("p", {
2123
2144
  className: "text-sm font-medium",
2124
2145
  children: u("devportal.dropZipHere", "Drop your .zip here")
2125
- }), /* @__PURE__ */ K("p", {
2146
+ }), /* @__PURE__ */ G("p", {
2126
2147
  className: "text-xs text-text-secondary mt-0.5",
2127
2148
  children: u("devportal.orClickToBrowse", "or click to browse")
2128
2149
  })] })] })]
2129
2150
  }),
2130
- pe && /* @__PURE__ */ K("p", {
2151
+ pe && /* @__PURE__ */ G("p", {
2131
2152
  className: "text-xs text-status-error-text",
2132
2153
  children: pe
2133
2154
  })
2134
2155
  ] }),
2135
- X && /* @__PURE__ */ q("div", {
2156
+ ke && /* @__PURE__ */ K("div", {
2136
2157
  className: "flex gap-3 rounded-lg border border-border-subtle bg-bg-sunken p-3 text-sm text-text-secondary",
2137
- children: [/* @__PURE__ */ K(z, {
2158
+ children: [/* @__PURE__ */ G(he, {
2138
2159
  size: 15,
2139
2160
  className: "mt-0.5 shrink-0"
2140
- }), /* @__PURE__ */ K("span", { children: u("devportal.builtinHint", "Built-in items are pre-installed by the platform. No package upload is needed.") })]
2161
+ }), /* @__PURE__ */ G("span", { children: u("devportal.builtinHint", "Built-in items are pre-installed by the platform. No package upload is needed.") })]
2141
2162
  })
2142
2163
  ]
2143
2164
  }),
2144
- /* @__PURE__ */ q("div", {
2165
+ /* @__PURE__ */ K("div", {
2145
2166
  className: "flex flex-wrap items-center gap-2 border-t pt-4",
2146
2167
  children: [
2147
- /* @__PURE__ */ K("input", {
2168
+ /* @__PURE__ */ G("input", {
2148
2169
  ref: se,
2149
2170
  type: "file",
2150
2171
  accept: ".json,application/json",
2151
2172
  className: "hidden",
2152
- onChange: J
2173
+ onChange: q
2153
2174
  }),
2154
- /* @__PURE__ */ K("span", {
2175
+ /* @__PURE__ */ G("span", {
2155
2176
  className: "text-xs text-text-secondary mr-1",
2156
2177
  children: "manifest.json:"
2157
2178
  }),
2158
- /* @__PURE__ */ q("button", {
2179
+ /* @__PURE__ */ K("button", {
2159
2180
  type: "button",
2160
2181
  onClick: () => se.current?.click(),
2161
2182
  className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-muted transition-colors",
2162
- children: [/* @__PURE__ */ K(U, { size: 12 }), u("devportal.importManifest", "Import")]
2183
+ children: [/* @__PURE__ */ G(H, { size: 12 }), u("devportal.importManifest", "Import")]
2163
2184
  }),
2164
- /* @__PURE__ */ q("button", {
2185
+ /* @__PURE__ */ K("button", {
2165
2186
  type: "button",
2166
2187
  onClick: De,
2167
2188
  className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-muted transition-colors",
2168
- children: [/* @__PURE__ */ K(fe, { size: 12 }), u("devportal.exportManifest", "Export")]
2189
+ children: [/* @__PURE__ */ G(fe, { size: 12 }), u("devportal.exportManifest", "Export")]
2169
2190
  }),
2170
- /* @__PURE__ */ K("span", {
2191
+ /* @__PURE__ */ G("span", {
2171
2192
  className: "text-xs text-text-secondary",
2172
2193
  children: u("devportal.manifestTip", "— export to get a manifest.json to include inside your zip")
2173
2194
  })
@@ -2176,15 +2197,15 @@ var Ye = J`
2176
2197
  ]
2177
2198
  })
2178
2199
  }),
2179
- /* @__PURE__ */ K(b, {
2200
+ /* @__PURE__ */ G(b, {
2180
2201
  title: u("devportal.storePresentation", "Store Presence"),
2181
2202
  description: u("devportal.storePresentationDescription", "Visual assets and copy shown to users browsing the marketplace"),
2182
- children: /* @__PURE__ */ q("div", {
2203
+ children: /* @__PURE__ */ K("div", {
2183
2204
  className: "space-y-5",
2184
2205
  children: [
2185
- /* @__PURE__ */ q("div", {
2206
+ /* @__PURE__ */ K("div", {
2186
2207
  className: "grid gap-5 sm:grid-cols-2",
2187
- children: [/* @__PURE__ */ K(Ue, {
2208
+ children: [/* @__PURE__ */ G(Ue, {
2188
2209
  label: u("devportal.iconUrl", "Icon"),
2189
2210
  value: d.iconUrl,
2190
2211
  onChange: (e) => O("iconUrl", e),
@@ -2192,28 +2213,28 @@ var Ye = J`
2192
2213
  aspectClass: "aspect-square",
2193
2214
  upload: R,
2194
2215
  uploading: me,
2195
- progress: he,
2196
- error: ge
2197
- }), /* @__PURE__ */ K(Ue, {
2216
+ progress: ge,
2217
+ error: _e
2218
+ }), /* @__PURE__ */ G(Ue, {
2198
2219
  label: u("devportal.bannerUrl", "Banner"),
2199
2220
  value: d.bannerUrl,
2200
2221
  onChange: (e) => O("bannerUrl", e),
2201
2222
  hint: u("devportal.bannerUrlHint", "1280×640 px recommended"),
2202
2223
  aspectClass: "aspect-video",
2203
- upload: V,
2204
- uploading: _e,
2205
- progress: ve,
2206
- error: H
2224
+ upload: B,
2225
+ uploading: ve,
2226
+ progress: ye,
2227
+ error: V
2207
2228
  })]
2208
2229
  }),
2209
- /* @__PURE__ */ K(D, {
2230
+ /* @__PURE__ */ G(D, {
2210
2231
  label: u("devportal.videoUrl", "Demo Video URL"),
2211
2232
  value: d.videoUrl,
2212
2233
  onChange: (e) => O("videoUrl", e.target.value),
2213
2234
  placeholder: "https://...",
2214
2235
  hint: u("devportal.videoUrlHint", "YouTube or Vimeo embed URL")
2215
2236
  }),
2216
- /* @__PURE__ */ K(ie, {
2237
+ /* @__PURE__ */ G(ie, {
2217
2238
  label: u("devportal.shortDescription", "Short Description"),
2218
2239
  value: d.shortDescription,
2219
2240
  onChange: (e) => O("shortDescription", e.target.value),
@@ -2221,62 +2242,62 @@ var Ye = J`
2221
2242
  rows: 2,
2222
2243
  hint: `${d.shortDescription.length}/200 · ${u("devportal.shortDescHint", "Shown in search results and cards")}`
2223
2244
  }),
2224
- /* @__PURE__ */ K(ie, {
2245
+ /* @__PURE__ */ G(ie, {
2225
2246
  label: u("devportal.longDescription", "Full Description"),
2226
2247
  value: d.description,
2227
2248
  onChange: (e) => O("description", e.target.value),
2228
2249
  rows: 5,
2229
2250
  hint: u("devportal.fullDescHint", "Markdown supported")
2230
2251
  }),
2231
- /* @__PURE__ */ K(We, {
2252
+ /* @__PURE__ */ G(We, {
2232
2253
  urls: d.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean),
2233
2254
  onChange: (e) => O("screenshotsText", e.join("\n")),
2234
- upload: W,
2235
- uploading: xe,
2236
- progress: Se,
2237
- error: Ce
2255
+ upload: U,
2256
+ uploading: Se,
2257
+ progress: Ce,
2258
+ error: we
2238
2259
  })
2239
2260
  ]
2240
2261
  })
2241
2262
  }),
2242
- /* @__PURE__ */ K(b, {
2263
+ /* @__PURE__ */ G(b, {
2243
2264
  title: u("devportal.linksPolicies", "Links & Policies"),
2244
2265
  description: u("devportal.linksPoliciesDescription", "External resources and legal documents — privacy policy and terms are required for store submission"),
2245
- children: /* @__PURE__ */ q("div", {
2266
+ children: /* @__PURE__ */ K("div", {
2246
2267
  className: "grid gap-4 sm:grid-cols-2",
2247
2268
  children: [
2248
- /* @__PURE__ */ K(D, {
2269
+ /* @__PURE__ */ G(D, {
2249
2270
  label: u("devportal.websiteUrl", "Website"),
2250
2271
  value: d.websiteUrl,
2251
2272
  onChange: (e) => O("websiteUrl", e.target.value),
2252
2273
  placeholder: "https://..."
2253
2274
  }),
2254
- /* @__PURE__ */ K(D, {
2275
+ /* @__PURE__ */ G(D, {
2255
2276
  label: u("devportal.documentationUrl", "Documentation"),
2256
2277
  value: d.documentationUrl,
2257
2278
  onChange: (e) => O("documentationUrl", e.target.value),
2258
2279
  placeholder: "https://..."
2259
2280
  }),
2260
- /* @__PURE__ */ K(D, {
2281
+ /* @__PURE__ */ G(D, {
2261
2282
  label: u("devportal.githubUrl", "GitHub"),
2262
2283
  value: d.githubUrl,
2263
2284
  onChange: (e) => O("githubUrl", e.target.value),
2264
2285
  placeholder: "https://github.com/..."
2265
2286
  }),
2266
- /* @__PURE__ */ K(D, {
2287
+ /* @__PURE__ */ G(D, {
2267
2288
  label: u("devportal.supportUrl", "Support"),
2268
2289
  value: d.supportUrl,
2269
2290
  onChange: (e) => O("supportUrl", e.target.value),
2270
2291
  placeholder: "https://..."
2271
2292
  }),
2272
- /* @__PURE__ */ K(D, {
2293
+ /* @__PURE__ */ G(D, {
2273
2294
  label: `${u("devportal.privacyPolicyUrl", "Privacy Policy")} *`,
2274
2295
  value: d.privacyPolicyUrl,
2275
2296
  onChange: (e) => O("privacyPolicyUrl", e.target.value),
2276
2297
  placeholder: "https://...",
2277
2298
  hint: u("devportal.requiredForStore", "Required for store submission")
2278
2299
  }),
2279
- /* @__PURE__ */ K(D, {
2300
+ /* @__PURE__ */ G(D, {
2280
2301
  label: `${u("devportal.termsOfServiceUrl", "Terms of Service")} *`,
2281
2302
  value: d.termsOfServiceUrl,
2282
2303
  onChange: (e) => O("termsOfServiceUrl", e.target.value),
@@ -2286,31 +2307,31 @@ var Ye = J`
2286
2307
  ]
2287
2308
  })
2288
2309
  }),
2289
- /* @__PURE__ */ K(b, {
2310
+ /* @__PURE__ */ G(b, {
2290
2311
  title: u("devportal.pricing", "Pricing"),
2291
2312
  description: u("devportal.pricingDescription", "How this item is priced in the marketplace"),
2292
- children: /* @__PURE__ */ q("div", {
2313
+ children: /* @__PURE__ */ K("div", {
2293
2314
  className: "space-y-4",
2294
- children: [/* @__PURE__ */ q("div", { children: [/* @__PURE__ */ K("label", {
2315
+ children: [/* @__PURE__ */ K("div", { children: [/* @__PURE__ */ G("label", {
2295
2316
  className: "mb-2 block text-sm font-medium",
2296
2317
  children: u("devportal.pricingType", "Pricing Type")
2297
- }), /* @__PURE__ */ K("div", {
2318
+ }), /* @__PURE__ */ G("div", {
2298
2319
  className: "flex flex-wrap gap-2",
2299
- children: Ke.map((e) => /* @__PURE__ */ K("button", {
2320
+ children: Ke.map((e) => /* @__PURE__ */ G("button", {
2300
2321
  type: "button",
2301
2322
  onClick: () => O("pricingType", e.value),
2302
2323
  className: t("rounded-md border px-3 py-1.5 text-sm font-medium transition-colors", d.pricingType === e.value ? "bg-primary text-primary-foreground border-primary" : "hover:bg-muted"),
2303
2324
  children: e.label
2304
2325
  }, e.value))
2305
- })] }), ke && /* @__PURE__ */ q("div", {
2326
+ })] }), Ae && /* @__PURE__ */ K("div", {
2306
2327
  className: "grid gap-4 sm:grid-cols-2",
2307
- children: [/* @__PURE__ */ K(D, {
2328
+ children: [/* @__PURE__ */ G(D, {
2308
2329
  label: u("devportal.price", "Price"),
2309
2330
  type: "number",
2310
2331
  value: d.price,
2311
2332
  onChange: (e) => O("price", e.target.value),
2312
2333
  placeholder: "0.00"
2313
- }), /* @__PURE__ */ K(D, {
2334
+ }), /* @__PURE__ */ G(D, {
2314
2335
  label: u("devportal.currency", "Currency"),
2315
2336
  value: d.currency,
2316
2337
  onChange: (e) => O("currency", e.target.value),
@@ -2319,32 +2340,32 @@ var Ye = J`
2319
2340
  })]
2320
2341
  })
2321
2342
  }),
2322
- /* @__PURE__ */ q("div", {
2343
+ /* @__PURE__ */ K("div", {
2323
2344
  className: "border-t pt-6 flex items-center gap-3 flex-wrap",
2324
2345
  children: [
2325
- /* @__PURE__ */ K("button", {
2346
+ /* @__PURE__ */ G("button", {
2326
2347
  type: "button",
2327
2348
  onClick: ae,
2328
2349
  disabled: p,
2329
2350
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
2330
- children: p ? /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(B, {
2351
+ children: p ? /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(z, {
2331
2352
  size: 16,
2332
2353
  className: "animate-spin"
2333
- }), u("devportal.saving", "Saving…")] }) : /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(be, { size: 16 }), u("devportal.saveMarketplaceListing", "Save Marketplace Listing")] })
2354
+ }), u("devportal.saving", "Saving…")] }) : /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(xe, { size: 16 }), u("devportal.saveMarketplaceListing", "Save Marketplace Listing")] })
2334
2355
  }),
2335
- !Z && !je && /* @__PURE__ */ K("button", {
2356
+ !X && !Me && /* @__PURE__ */ G("button", {
2336
2357
  type: "button",
2337
2358
  onClick: () => void oe(),
2338
2359
  disabled: E || p,
2339
2360
  className: "inline-flex items-center gap-2 rounded-md border border-primary px-4 py-2 text-sm font-medium text-primary hover:bg-primary/5 transition-colors disabled:opacity-50",
2340
- children: E ? /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(B, {
2361
+ children: E ? /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(z, {
2341
2362
  size: 16,
2342
2363
  className: "animate-spin"
2343
- }), u("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ q(G, { children: [/* @__PURE__ */ K(ye, { size: 16 }), u("devportal.submitForReview", "Submit for Review")] })
2364
+ }), u("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(be, { size: 16 }), u("devportal.submitForReview", "Submit for Review")] })
2344
2365
  }),
2345
- !Z && je && /* @__PURE__ */ q("p", {
2366
+ !X && Me && /* @__PURE__ */ K("p", {
2346
2367
  className: "text-xs text-muted-foreground flex items-center gap-1.5",
2347
- children: [/* @__PURE__ */ K(de, { size: 12 }), u("devportal.awaitingReview", "Your listing is under review. You can still update and save — changes take effect after approval.")]
2368
+ children: [/* @__PURE__ */ G(de, { size: 12 }), u("devportal.awaitingReview", "Your listing is under review. You can still update and save — changes take effect after approval.")]
2348
2369
  })
2349
2370
  ]
2350
2371
  })
@@ -2352,18 +2373,18 @@ var Ye = J`
2352
2373
  });
2353
2374
  }, Q = ({ label: e, value: n, trend: r }) => {
2354
2375
  let { t: i } = P();
2355
- return /* @__PURE__ */ q("div", {
2376
+ return /* @__PURE__ */ K("div", {
2356
2377
  className: "rounded-lg border bg-card p-4",
2357
2378
  children: [
2358
- /* @__PURE__ */ K("p", {
2379
+ /* @__PURE__ */ G("p", {
2359
2380
  className: "text-sm text-muted-foreground",
2360
2381
  children: e
2361
2382
  }),
2362
- /* @__PURE__ */ K("p", {
2383
+ /* @__PURE__ */ G("p", {
2363
2384
  className: "text-2xl font-bold",
2364
2385
  children: n
2365
2386
  }),
2366
- r !== void 0 && /* @__PURE__ */ q("p", {
2387
+ r !== void 0 && /* @__PURE__ */ K("p", {
2367
2388
  className: t("text-xs mt-1", r > 0 ? "text-status-success-text" : r < 0 ? "text-status-error-text" : "text-muted-foreground"),
2368
2389
  children: [
2369
2390
  r > 0 ? "+" : "",
@@ -2377,12 +2398,12 @@ var Ye = J`
2377
2398
  })
2378
2399
  ]
2379
2400
  });
2380
- }, $ = ({ label: e, url: t }) => /* @__PURE__ */ q("a", {
2401
+ }, $ = ({ label: e, url: t }) => /* @__PURE__ */ K("a", {
2381
2402
  href: t,
2382
2403
  target: "_blank",
2383
2404
  rel: "noopener noreferrer",
2384
2405
  className: "flex items-center gap-2 text-sm text-primary hover:underline",
2385
- children: [/* @__PURE__ */ K(R, { size: 14 }), e]
2406
+ children: [/* @__PURE__ */ G(R, { size: 14 }), e]
2386
2407
  }), $e = [
2387
2408
  {
2388
2409
  id: "auth",
@@ -2493,41 +2514,41 @@ var tt = ({ app: e }) => {
2493
2514
  "read",
2494
2515
  "write"
2495
2516
  ];
2496
- return /* @__PURE__ */ K(b, {
2517
+ return /* @__PURE__ */ G(b, {
2497
2518
  title: "Permissions",
2498
2519
  description: "Define what platform data this app can request access to. Users see these when authorizing the app.",
2499
- children: /* @__PURE__ */ q("div", {
2520
+ children: /* @__PURE__ */ K("div", {
2500
2521
  className: "space-y-4",
2501
2522
  children: [
2502
- /* @__PURE__ */ K("div", {
2523
+ /* @__PURE__ */ G("div", {
2503
2524
  className: "overflow-x-auto rounded-lg border border-border",
2504
- children: /* @__PURE__ */ q("table", {
2525
+ children: /* @__PURE__ */ K("table", {
2505
2526
  className: "w-full text-sm",
2506
- children: [/* @__PURE__ */ K("thead", { children: /* @__PURE__ */ q("tr", {
2527
+ children: [/* @__PURE__ */ G("thead", { children: /* @__PURE__ */ K("tr", {
2507
2528
  className: "border-b border-border bg-muted/50",
2508
- children: [/* @__PURE__ */ K("th", {
2529
+ children: [/* @__PURE__ */ G("th", {
2509
2530
  className: "px-4 py-3 text-left font-medium text-muted-foreground w-1/2",
2510
2531
  children: "Resource"
2511
- }), f.map((e) => /* @__PURE__ */ K("th", {
2532
+ }), f.map((e) => /* @__PURE__ */ G("th", {
2512
2533
  className: "px-4 py-3 text-center font-medium text-muted-foreground",
2513
2534
  children: d[e]
2514
2535
  }, e))]
2515
- }) }), /* @__PURE__ */ K("tbody", {
2536
+ }) }), /* @__PURE__ */ G("tbody", {
2516
2537
  className: "divide-y divide-border",
2517
- children: $e.map((e) => /* @__PURE__ */ q("tr", {
2538
+ children: $e.map((e) => /* @__PURE__ */ K("tr", {
2518
2539
  className: "hover:bg-muted/30 transition-colors",
2519
- children: [/* @__PURE__ */ q("td", {
2540
+ children: [/* @__PURE__ */ K("td", {
2520
2541
  className: "px-4 py-3",
2521
- children: [/* @__PURE__ */ K("p", {
2542
+ children: [/* @__PURE__ */ G("p", {
2522
2543
  className: "font-medium text-foreground",
2523
2544
  children: e.label
2524
- }), /* @__PURE__ */ K("p", {
2545
+ }), /* @__PURE__ */ G("p", {
2525
2546
  className: "text-xs text-muted-foreground",
2526
2547
  children: e.description
2527
2548
  })]
2528
- }), f.map((t) => /* @__PURE__ */ K("td", {
2549
+ }), f.map((t) => /* @__PURE__ */ G("td", {
2529
2550
  className: "px-4 py-3 text-center",
2530
- children: /* @__PURE__ */ K("input", {
2551
+ children: /* @__PURE__ */ G("input", {
2531
2552
  type: "radio",
2532
2553
  name: `perm-${e.id}`,
2533
2554
  value: t,
@@ -2540,27 +2561,27 @@ var tt = ({ app: e }) => {
2540
2561
  })]
2541
2562
  })
2542
2563
  }),
2543
- /* @__PURE__ */ q("div", {
2564
+ /* @__PURE__ */ K("div", {
2544
2565
  className: "rounded-lg border border-border-subtle bg-muted/30 p-3 flex gap-2 text-xs text-muted-foreground",
2545
- children: [/* @__PURE__ */ K(z, {
2566
+ children: [/* @__PURE__ */ G(he, {
2546
2567
  size: 14,
2547
2568
  className: "flex-shrink-0 mt-0.5"
2548
- }), /* @__PURE__ */ q("span", { children: [/* @__PURE__ */ K("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
2569
+ }), /* @__PURE__ */ K("span", { children: [/* @__PURE__ */ G("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
2549
2570
  }),
2550
- /* @__PURE__ */ q("div", {
2571
+ /* @__PURE__ */ K("div", {
2551
2572
  className: "flex items-center justify-end gap-3",
2552
- children: [o && /* @__PURE__ */ q("span", {
2573
+ children: [o && /* @__PURE__ */ K("span", {
2553
2574
  className: "flex items-center gap-1.5 text-sm text-status-success-text",
2554
- children: [/* @__PURE__ */ K(L, { size: 14 }), "Saved"]
2555
- }), /* @__PURE__ */ q("button", {
2575
+ children: [/* @__PURE__ */ G(L, { size: 14 }), "Saved"]
2576
+ }), /* @__PURE__ */ K("button", {
2556
2577
  type: "button",
2557
2578
  onClick: () => void u(),
2558
2579
  disabled: i,
2559
2580
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
2560
- children: [i ? /* @__PURE__ */ K(B, {
2581
+ children: [i ? /* @__PURE__ */ G(z, {
2561
2582
  size: 14,
2562
2583
  className: "animate-spin"
2563
- }) : /* @__PURE__ */ K(H, { size: 14 }), "Save Permissions"]
2584
+ }) : /* @__PURE__ */ G(V, { size: 14 }), "Save Permissions"]
2564
2585
  })]
2565
2586
  })
2566
2587
  ]