@burdenoff/microfe-devportal 2026.624.27 → 2026.624.29

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