@burdenoff/microfe-devportal 2026.611.1 → 2026.614.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/devportal/components/SectionNav.js +105 -41
  2. package/dist/devportal/components/SectionNav.js.map +1 -1
  3. package/dist/devportal/hooks/useGraphQL.js +1 -1
  4. package/dist/devportal/pages/AdminReviewPage.js +36 -36
  5. package/dist/devportal/pages/AnalyticsDashboardPage.js +150 -150
  6. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  7. package/dist/devportal/pages/ApiKeysPage.js +184 -172
  8. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  9. package/dist/devportal/pages/AppLogsPage.js +9 -9
  10. package/dist/devportal/pages/ApplicationDetailPage.js +414 -414
  11. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  12. package/dist/devportal/pages/ApplicationVersionsPage.js +44 -44
  13. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  14. package/dist/devportal/pages/ApplicationsPage.js +118 -118
  15. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  16. package/dist/devportal/pages/CreateApiKeyPage.js +20 -20
  17. package/dist/devportal/pages/CreateApplicationPage.js +32 -32
  18. package/dist/devportal/pages/CreateOAuthClientPage.js +20 -20
  19. package/dist/devportal/pages/CreateOrganizationPage.js +109 -422
  20. package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
  21. package/dist/devportal/pages/CreateWebhookPage.js +25 -25
  22. package/dist/devportal/pages/DashboardPage.js +160 -145
  23. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  24. package/dist/devportal/pages/DelegationsPage.js +22 -22
  25. package/dist/devportal/pages/EditApplicationPage.js +283 -283
  26. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  27. package/dist/devportal/pages/ListingPreviewPage.js +9 -9
  28. package/dist/devportal/pages/OAuthClientDetailPage.js +17 -17
  29. package/dist/devportal/pages/OAuthClientsPage.js +16 -16
  30. package/dist/devportal/pages/OrganizationDetailPage.js +78 -78
  31. package/dist/devportal/pages/OrganizationMembersPage.js +260 -260
  32. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  33. package/dist/devportal/pages/OrganizationsPage.js +18 -18
  34. package/dist/devportal/pages/PublishPage.js +16 -16
  35. package/dist/devportal/pages/PublisherProfilePage.js +156 -146
  36. package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
  37. package/dist/devportal/pages/RevenueDashboardPage.js +528 -322
  38. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  39. package/dist/devportal/pages/SettingsPage.js +17 -17
  40. package/dist/devportal/pages/SetupPage.js +99 -99
  41. package/dist/devportal/pages/SetupPage.js.map +1 -1
  42. package/dist/devportal/pages/WebhookDetailPage.js +143 -143
  43. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  44. package/dist/devportal/pages/WebhooksPage.js +140 -140
  45. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  46. package/dist/devportal/providers/DevportalProvider.js +46 -33
  47. package/dist/devportal/providers/DevportalProvider.js.map +1 -1
  48. package/dist/devportal/types/index.js.map +1 -1
  49. package/dist/generated/global-operations.js +99 -59
  50. package/dist/generated/global-operations.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,27 +1,27 @@
1
1
  import { useDevportal as e } from "../providers/DevportalProvider.js";
2
2
  import { LoadingState as t } from "../components/LoadingState.js";
3
3
  import { EmptyState as n } from "../components/EmptyState.js";
4
- import { PageLayout as r, PageSection as i } from "../components/PageLayout.js";
5
- import { APP_TYPE_LABELS as a } from "../utils/constants.js";
6
- import { StatusBadge as o } from "../components/StatusBadge.js";
7
- import { nativeImpact as s, nativeNotify as c } from "../../utils/nativeBridge.js";
8
- import { CheckboxField as l, InputField as u, SelectField as d, TagInput as f, TextareaField as p } from "../components/FormField.js";
9
- import { ConfirmDialog as m } from "../components/ConfirmDialog.js";
10
- import { useDeactivateAppMutation as h, useDeleteApplicationMutation as ee, useGetApplicationQuery as te, useSubmitApplicationMutation as ne, useUpdateApplicationMutation as re } from "../../generated/global-operations.js";
4
+ import { useDeactivateAppMutation as ee, useDeleteApplicationMutation as te, useGetApplicationQuery as ne, useSubmitApplicationMutation as r, useUpdateApplicationMutation as i } from "../../generated/global-operations.js";
5
+ import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
6
+ import { APP_TYPE_LABELS as s } from "../utils/constants.js";
7
+ import { StatusBadge as re } from "../components/StatusBadge.js";
8
+ import { nativeImpact as c, nativeNotify as l } from "../../utils/nativeBridge.js";
9
+ import { CheckboxField as u, InputField as d, SelectField as f, TagInput as p, TextareaField as m } from "../components/FormField.js";
10
+ import { ConfirmDialog as h } from "../components/ConfirmDialog.js";
11
11
  import { PermissionGuard as g } from "../components/PermissionGuard.js";
12
12
  import "../components/index.js";
13
13
  import { DEVPORTAL_PERMISSIONS as _ } from "../constants/permissions.js";
14
14
  import { useDevportalPermission as v } from "../hooks/usePermission.js";
15
15
  import { useEffect as y, useState as b } from "react";
16
16
  import { useI18n as x } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
17
- import { AlertCircle as S, AlertTriangle as C, AppWindow as w, Archive as ie, Power as ae, Save as oe, Send as se, Trash2 as ce } from "lucide-react";
18
- import { useParams as le } from "react-router-dom";
19
- import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
17
+ import { AlertCircle as S, AlertTriangle as C, AppWindow as w, Archive as T, Power as ie, Save as ae, Send as oe, Trash2 as se } from "lucide-react";
18
+ import { useParams as ce } from "react-router-dom";
19
+ import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
20
20
  //#region src/devportal/pages/EditApplicationPage.tsx
21
- var ue = Object.entries(a).map(([e, t]) => ({
21
+ var le = Object.entries(s).map(([e, t]) => ({
22
22
  value: e,
23
23
  label: t
24
- })), de = [
24
+ })), ue = [
25
25
  {
26
26
  value: "PUBLIC",
27
27
  label: "Public - Visible to everyone"
@@ -38,7 +38,7 @@ var ue = Object.entries(a).map(([e, t]) => ({
38
38
  value: "INTERNAL",
39
39
  label: "Internal - Only visible within organization"
40
40
  }
41
- ], fe = [
41
+ ], de = [
42
42
  {
43
43
  value: "productivity",
44
44
  label: "Productivity"
@@ -88,7 +88,7 @@ var ue = Object.entries(a).map(([e, t]) => ({
88
88
  label: "Other"
89
89
  }
90
90
  ];
91
- function pe(e) {
91
+ function fe(e) {
92
92
  return e ? {
93
93
  id: e.id,
94
94
  name: e.name,
@@ -129,21 +129,21 @@ function pe(e) {
129
129
  updatedAt: e.updatedAt
130
130
  } : null;
131
131
  }
132
- var O = () => {
133
- let { navigate: a, basePath: O } = e(), { appId: k } = le(), { t: A } = x(), { allowed: j } = v(_.APP_UPDATE), { allowed: M } = v(_.APP_DELETE), N = (e, t) => {
134
- let n = A(e);
132
+ var k = () => {
133
+ let { navigate: s, basePath: k } = e(), { appId: A } = ce(), { t: j } = x(), { allowed: M } = v(_.APP_UPDATE), { allowed: N } = v(_.APP_DELETE), P = (e, t) => {
134
+ let n = j(e);
135
135
  return n === e ? t : n;
136
- }, [P, F] = b(!1), [I, L] = b({}), [R, z] = b(!1), [B, V] = b(!1), [me, H] = b(!1), [U, W] = b(!1), { data: G, loading: he, error: K } = te({
137
- variables: { id: k },
138
- skip: !k
139
- }), [q] = re(), [ge] = ee(), [_e] = ne(), [ve] = h(), J = pe(G?.application);
136
+ }, [F, I] = b(!1), [L, R] = b({}), [z, B] = b(!1), [V, H] = b(!1), [pe, U] = b(!1), [W, G] = b(!1), { data: K, loading: me, error: q } = ne({
137
+ variables: { id: A },
138
+ skip: !A
139
+ }), [J] = i(), [he] = te(), [ge] = r(), [_e] = ee(), Y = fe(K?.application);
140
140
  y(() => {
141
- let e = J?.name;
142
- if (!k || !e) return;
141
+ let e = Y?.name;
142
+ if (!A || !e) return;
143
143
  let t = window.__breadcrumbRegistry;
144
- return t?.register(k, e), () => t?.unregister(k);
145
- }, [k, J?.name]);
146
- let [Y, X] = b({
144
+ return t?.register(A, e), () => t?.unregister(A);
145
+ }, [A, Y?.name]);
146
+ let [X, Z] = b({
147
147
  name: "",
148
148
  slug: "",
149
149
  shortDescription: "",
@@ -162,376 +162,376 @@ var O = () => {
162
162
  requiresApproval: !1
163
163
  });
164
164
  y(() => {
165
- J && (X({
166
- name: J.name,
167
- slug: J.slug,
168
- shortDescription: J.shortDescription || "",
169
- description: J.description || "",
170
- appType: J.appType,
171
- visibility: J.visibility,
172
- category: J.category || "",
173
- tags: J.tags,
174
- keywords: J.keywords,
175
- websiteUrl: J.websiteUrl || "",
176
- documentationUrl: J.documentationUrl || "",
177
- supportUrl: J.supportUrl || "",
178
- privacyPolicyUrl: J.privacyPolicyUrl || "",
179
- termsOfServiceUrl: J.termsOfServiceUrl || "",
180
- githubUrl: J.githubUrl || "",
181
- requiresApproval: J.requiresApproval
182
- }), W(!1));
183
- }, [G?.application]);
184
- let Z = (e) => {
185
- a?.(`${O}${e}`);
186
- }, Q = (e, t) => {
187
- X((n) => ({
165
+ Y && (Z({
166
+ name: Y.name,
167
+ slug: Y.slug,
168
+ shortDescription: Y.shortDescription || "",
169
+ description: Y.description || "",
170
+ appType: Y.appType,
171
+ visibility: Y.visibility,
172
+ category: Y.category || "",
173
+ tags: Y.tags,
174
+ keywords: Y.keywords,
175
+ websiteUrl: Y.websiteUrl || "",
176
+ documentationUrl: Y.documentationUrl || "",
177
+ supportUrl: Y.supportUrl || "",
178
+ privacyPolicyUrl: Y.privacyPolicyUrl || "",
179
+ termsOfServiceUrl: Y.termsOfServiceUrl || "",
180
+ githubUrl: Y.githubUrl || "",
181
+ requiresApproval: Y.requiresApproval
182
+ }), G(!1));
183
+ }, [K?.application]);
184
+ let Q = (e) => {
185
+ s?.(`${k}${e}`);
186
+ }, $ = (e, t) => {
187
+ Z((n) => ({
188
188
  ...n,
189
189
  [e]: t
190
- })), W(!0), I[e] && L((t) => ({
190
+ })), G(!0), L[e] && R((t) => ({
191
191
  ...t,
192
192
  [e]: void 0
193
193
  }));
194
- }, ye = () => {
194
+ }, ve = () => {
195
195
  let e = {};
196
- return Y.name.trim() ? Y.name.length < 3 ? e.name = N("devportal.appNameMinLength", "Name must be at least 3 characters") : Y.name.length > 100 && (e.name = N("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = N("devportal.appNameRequired", "Application name is required"), Y.slug.trim() ? /^[a-z0-9-]+$/.test(Y.slug) || (e.slug = N("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = N("devportal.slugRequired", "Slug is required"), Y.shortDescription.trim() ? Y.shortDescription.length > 200 && (e.shortDescription = N("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = N("devportal.shortDescriptionRequired", "Short description is required"), Y.appType || (e.appType = N("devportal.appTypeRequired", "Application type is required")), Y.category || (e.category = N("devportal.categoryRequired", "Category is required")), L(e), Object.keys(e).length === 0;
197
- }, be = async (e) => {
198
- if (e.preventDefault(), !(!ye() || !J)) {
199
- F(!0);
196
+ return X.name.trim() ? X.name.length < 3 ? e.name = P("devportal.appNameMinLength", "Name must be at least 3 characters") : X.name.length > 100 && (e.name = P("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = P("devportal.appNameRequired", "Application name is required"), X.slug.trim() ? /^[a-z0-9-]+$/.test(X.slug) || (e.slug = P("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = P("devportal.slugRequired", "Slug is required"), X.shortDescription.trim() ? X.shortDescription.length > 200 && (e.shortDescription = P("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = P("devportal.shortDescriptionRequired", "Short description is required"), X.appType || (e.appType = P("devportal.appTypeRequired", "Application type is required")), X.category || (e.category = P("devportal.categoryRequired", "Category is required")), R(e), Object.keys(e).length === 0;
197
+ }, ye = async (e) => {
198
+ if (e.preventDefault(), !(!ve() || !Y)) {
199
+ I(!0);
200
200
  try {
201
- await q({ variables: {
202
- id: J.id,
201
+ await J({ variables: {
202
+ id: Y.id,
203
203
  input: {
204
- name: Y.name,
205
- shortDescription: Y.shortDescription,
206
- description: Y.description,
207
- appType: Y.appType,
208
- visibility: Y.visibility,
209
- category: Y.category,
210
- tags: Y.tags,
211
- keywords: Y.keywords,
212
- websiteUrl: Y.websiteUrl || null,
213
- documentationUrl: Y.documentationUrl || null,
214
- supportUrl: Y.supportUrl || null,
215
- privacyPolicyUrl: Y.privacyPolicyUrl || null,
216
- termsOfServiceUrl: Y.termsOfServiceUrl || null,
217
- githubUrl: Y.githubUrl || null
204
+ name: X.name,
205
+ shortDescription: X.shortDescription,
206
+ description: X.description,
207
+ appType: X.appType,
208
+ visibility: X.visibility,
209
+ category: X.category,
210
+ tags: X.tags,
211
+ keywords: X.keywords,
212
+ websiteUrl: X.websiteUrl || null,
213
+ documentationUrl: X.documentationUrl || null,
214
+ supportUrl: X.supportUrl || null,
215
+ privacyPolicyUrl: X.privacyPolicyUrl || null,
216
+ termsOfServiceUrl: X.termsOfServiceUrl || null,
217
+ githubUrl: X.githubUrl || null
218
218
  }
219
- } }), W(!1);
219
+ } }), G(!1);
220
220
  } catch (e) {
221
221
  console.error("Failed to update application:", e);
222
222
  } finally {
223
- F(!1);
223
+ I(!1);
224
224
  }
225
225
  }
226
- }, xe = async () => {
227
- if (J) {
228
- s("medium");
226
+ }, be = async () => {
227
+ if (Y) {
228
+ c("medium");
229
229
  try {
230
- await ge({ variables: { id: J.id } }), c("success"), Z("/apps");
230
+ await he({ variables: { id: Y.id } }), l("success"), Q("/apps");
231
231
  } catch (e) {
232
- c("error"), console.error("Failed to delete application:", e);
232
+ l("error"), console.error("Failed to delete application:", e);
233
233
  }
234
234
  }
235
- }, Se = async () => {
236
- if (J) try {
237
- await q({ variables: {
238
- id: J.id,
235
+ }, xe = async () => {
236
+ if (Y) try {
237
+ await J({ variables: {
238
+ id: Y.id,
239
239
  input: { visibility: "PRIVATE" }
240
- } }), V(!1);
240
+ } }), H(!1);
241
241
  } catch (e) {
242
242
  console.error("Failed to deprecate application:", e);
243
243
  }
244
- }, Ce = async () => {
245
- if (J) try {
246
- await ve({ variables: { id: J.id } }), H(!1), Z("/apps");
244
+ }, Se = async () => {
245
+ if (Y) try {
246
+ await _e({ variables: { id: Y.id } }), U(!1), Q("/apps");
247
247
  } catch (e) {
248
248
  console.error("Failed to deactivate application:", e);
249
249
  }
250
- }, $ = async () => {
251
- if (J) try {
252
- F(!0), await _e({ variables: { id: J.id } });
250
+ }, Ce = async () => {
251
+ if (Y) try {
252
+ I(!0), await ge({ variables: { id: Y.id } });
253
253
  } catch (e) {
254
254
  console.error("Failed to submit for review:", e);
255
255
  } finally {
256
- F(!1);
256
+ I(!1);
257
257
  }
258
258
  };
259
- if (he) return /* @__PURE__ */ E(t, { message: N("devportal.loadingApplication", "Loading application...") });
260
- if (K) return /* @__PURE__ */ E(r, {
261
- title: N("devportal.error", "Error"),
262
- backLink: `${O}/apps`,
263
- backLabel: N("devportal.backToApplications", "Back to Applications"),
264
- children: /* @__PURE__ */ D("div", {
259
+ if (me) return /* @__PURE__ */ D(t, { message: P("devportal.loadingApplication", "Loading application...") });
260
+ if (q) return /* @__PURE__ */ D(a, {
261
+ title: P("devportal.error", "Error"),
262
+ backLink: `${k}/apps`,
263
+ backLabel: P("devportal.backToApplications", "Back to Applications"),
264
+ children: /* @__PURE__ */ O("div", {
265
265
  className: "flex flex-col items-center justify-center py-12 text-center",
266
266
  children: [
267
- /* @__PURE__ */ E(S, {
267
+ /* @__PURE__ */ D(S, {
268
268
  size: 48,
269
269
  className: "text-destructive mb-4"
270
270
  }),
271
- /* @__PURE__ */ E("h3", {
271
+ /* @__PURE__ */ D("h3", {
272
272
  className: "text-lg font-semibold mb-2",
273
- children: N("devportal.failedToLoadApplication", "Failed to load application")
273
+ children: P("devportal.failedToLoadApplication", "Failed to load application")
274
274
  }),
275
- /* @__PURE__ */ E("p", {
275
+ /* @__PURE__ */ D("p", {
276
276
  className: "text-sm text-muted-foreground",
277
- children: K.message
277
+ children: q.message
278
278
  })
279
279
  ]
280
280
  })
281
281
  });
282
- if (!J) return /* @__PURE__ */ E(r, {
283
- title: N("devportal.notFound", "Not Found"),
284
- backLink: `${O}/apps`,
285
- backLabel: N("devportal.backToApplications", "Back to Applications"),
286
- children: /* @__PURE__ */ E(n, {
287
- icon: /* @__PURE__ */ E(w, { size: 48 }),
288
- title: N("devportal.applicationNotFound", "Application not found"),
289
- description: N("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
282
+ if (!Y) return /* @__PURE__ */ D(a, {
283
+ title: P("devportal.notFound", "Not Found"),
284
+ backLink: `${k}/apps`,
285
+ backLabel: P("devportal.backToApplications", "Back to Applications"),
286
+ children: /* @__PURE__ */ D(n, {
287
+ icon: /* @__PURE__ */ D(w, { size: 48 }),
288
+ title: P("devportal.applicationNotFound", "Application not found"),
289
+ description: P("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
290
290
  })
291
291
  });
292
- let we = J.status === "DRAFT" || J.status === "REJECTED", Te = J.status === "PUBLISHED", Ee = J.status === "ACTIVE" || J.status === "PUBLISHED";
293
- return /* @__PURE__ */ E(g, {
292
+ let we = Y.status === "DRAFT" || Y.status === "REJECTED", Te = Y.status === "PUBLISHED", Ee = Y.status === "ACTIVE" || Y.status === "PUBLISHED";
293
+ return /* @__PURE__ */ D(g, {
294
294
  permission: _.APP_UPDATE,
295
- children: /* @__PURE__ */ D(r, {
296
- title: `${N("devportal.editAppTitlePrefix", "Edit:")} ${J.name}`,
297
- description: N("devportal.editAppDescription", "Update your application settings"),
298
- backLink: `${O}/apps/${J.id}`,
299
- backLabel: N("devportal.backToApplication", "Back to Application"),
300
- actions: /* @__PURE__ */ E("div", {
295
+ children: /* @__PURE__ */ O(a, {
296
+ title: `${P("devportal.editAppTitlePrefix", "Edit:")} ${Y.name}`,
297
+ description: P("devportal.editAppDescription", "Update your application settings"),
298
+ backLink: `${k}/apps/${Y.id}`,
299
+ backLabel: P("devportal.backToApplication", "Back to Application"),
300
+ actions: /* @__PURE__ */ D("div", {
301
301
  className: "flex items-center gap-2",
302
- children: /* @__PURE__ */ E(o, {
303
- status: J.status,
302
+ children: /* @__PURE__ */ D(re, {
303
+ status: Y.status,
304
304
  type: "app"
305
305
  })
306
306
  }),
307
307
  children: [
308
- /* @__PURE__ */ D("form", {
309
- onSubmit: be,
308
+ /* @__PURE__ */ O("form", {
309
+ onSubmit: ye,
310
310
  className: "space-y-8 max-w-3xl",
311
311
  children: [
312
- J.status === "PUBLISHED" && /* @__PURE__ */ D("div", {
312
+ Y.status === "PUBLISHED" && /* @__PURE__ */ O("div", {
313
313
  className: "rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4 flex gap-3",
314
- children: [/* @__PURE__ */ E(C, {
314
+ children: [/* @__PURE__ */ D(C, {
315
315
  size: 20,
316
316
  className: "text-status-warning-text flex-shrink-0 mt-0.5"
317
- }), /* @__PURE__ */ D("div", {
317
+ }), /* @__PURE__ */ O("div", {
318
318
  className: "text-sm text-status-warning-text",
319
- children: [/* @__PURE__ */ E("p", {
319
+ children: [/* @__PURE__ */ D("p", {
320
320
  className: "font-medium",
321
- children: N("devportal.appIsPublished", "This application is published")
322
- }), /* @__PURE__ */ E("p", {
321
+ children: P("devportal.appIsPublished", "This application is published")
322
+ }), /* @__PURE__ */ D("p", {
323
323
  className: "mt-1 text-status-warning-text",
324
- children: N("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
324
+ children: P("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
325
325
  })]
326
326
  })]
327
327
  }),
328
- /* @__PURE__ */ E(i, {
329
- title: N("devportal.basicInformation", "Basic Information"),
330
- description: N("devportal.basicInformationDescription", "Core details about your application"),
331
- children: /* @__PURE__ */ D("div", {
328
+ /* @__PURE__ */ D(o, {
329
+ title: P("devportal.basicInformation", "Basic Information"),
330
+ description: P("devportal.basicInformationDescription", "Core details about your application"),
331
+ children: /* @__PURE__ */ O("div", {
332
332
  className: "space-y-4",
333
333
  children: [
334
- /* @__PURE__ */ E(u, {
335
- label: N("devportal.applicationName", "Application Name"),
336
- value: Y.name,
337
- onChange: (e) => Q("name", e.target.value),
338
- placeholder: N("devportal.applicationNamePlaceholder", "My Awesome App"),
334
+ /* @__PURE__ */ D(d, {
335
+ label: P("devportal.applicationName", "Application Name"),
336
+ value: X.name,
337
+ onChange: (e) => $("name", e.target.value),
338
+ placeholder: P("devportal.applicationNamePlaceholder", "My Awesome App"),
339
339
  required: !0,
340
- error: I.name
340
+ error: L.name
341
341
  }),
342
- /* @__PURE__ */ E(u, {
343
- label: N("devportal.slug", "Slug"),
344
- value: Y.slug,
345
- onChange: (e) => Q("slug", e.target.value.toLowerCase()),
346
- placeholder: N("devportal.slugPlaceholder", "my-awesome-app"),
342
+ /* @__PURE__ */ D(d, {
343
+ label: P("devportal.slug", "Slug"),
344
+ value: X.slug,
345
+ onChange: (e) => $("slug", e.target.value.toLowerCase()),
346
+ placeholder: P("devportal.slugPlaceholder", "my-awesome-app"),
347
347
  required: !0,
348
- error: I.slug,
349
- hint: N("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
348
+ error: L.slug,
349
+ hint: P("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
350
350
  }),
351
- /* @__PURE__ */ E(p, {
352
- label: N("devportal.shortDescription", "Short Description"),
353
- value: Y.shortDescription,
354
- onChange: (e) => Q("shortDescription", e.target.value),
355
- placeholder: N("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
351
+ /* @__PURE__ */ D(m, {
352
+ label: P("devportal.shortDescription", "Short Description"),
353
+ value: X.shortDescription,
354
+ onChange: (e) => $("shortDescription", e.target.value),
355
+ placeholder: P("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
356
356
  required: !0,
357
- error: I.shortDescription,
358
- hint: `${Y.shortDescription.length}/200 ${N("devportal.characters", "characters")}`,
357
+ error: L.shortDescription,
358
+ hint: `${X.shortDescription.length}/200 ${P("devportal.characters", "characters")}`,
359
359
  rows: 2
360
360
  }),
361
- /* @__PURE__ */ E(p, {
362
- label: N("devportal.fullDescription", "Full Description"),
363
- value: Y.description,
364
- onChange: (e) => Q("description", e.target.value),
365
- placeholder: N("devportal.fullDescriptionPlaceholder", "Detailed description of your application, features, and use cases..."),
361
+ /* @__PURE__ */ D(m, {
362
+ label: P("devportal.fullDescription", "Full Description"),
363
+ value: X.description,
364
+ onChange: (e) => $("description", e.target.value),
365
+ placeholder: P("devportal.fullDescriptionPlaceholder", "Detailed description of your application, features, and use cases..."),
366
366
  rows: 6,
367
- hint: N("devportal.markdownSupported", "Markdown formatting is supported")
367
+ hint: P("devportal.markdownSupported", "Markdown formatting is supported")
368
368
  })
369
369
  ]
370
370
  })
371
371
  }),
372
- /* @__PURE__ */ D(i, {
373
- title: N("devportal.classification", "Classification"),
374
- description: N("devportal.classificationDescription", "Categorize your application"),
372
+ /* @__PURE__ */ O(o, {
373
+ title: P("devportal.classification", "Classification"),
374
+ description: P("devportal.classificationDescription", "Categorize your application"),
375
375
  children: [
376
- /* @__PURE__ */ D("div", {
376
+ /* @__PURE__ */ O("div", {
377
377
  className: "grid gap-4 sm:grid-cols-2",
378
378
  children: [
379
- /* @__PURE__ */ E(d, {
380
- label: N("devportal.applicationType", "Application Type"),
381
- value: Y.appType,
382
- onChange: (e) => Q("appType", e.target.value),
383
- options: ue,
379
+ /* @__PURE__ */ D(f, {
380
+ label: P("devportal.applicationType", "Application Type"),
381
+ value: X.appType,
382
+ onChange: (e) => $("appType", e.target.value),
383
+ options: le,
384
384
  required: !0,
385
- error: I.appType
385
+ error: L.appType
386
386
  }),
387
- /* @__PURE__ */ E(d, {
388
- label: N("devportal.category", "Category"),
389
- value: Y.category,
390
- onChange: (e) => Q("category", e.target.value),
391
- options: fe,
387
+ /* @__PURE__ */ D(f, {
388
+ label: P("devportal.category", "Category"),
389
+ value: X.category,
390
+ onChange: (e) => $("category", e.target.value),
391
+ options: de,
392
392
  required: !0,
393
- error: I.category
393
+ error: L.category
394
394
  }),
395
- /* @__PURE__ */ E(d, {
396
- label: N("devportal.visibility", "Visibility"),
397
- value: Y.visibility,
398
- onChange: (e) => Q("visibility", e.target.value),
399
- options: de,
400
- hint: N("devportal.visibilityHint", "Controls who can see this app once published. Public apps still require admin review and approval before appearing in the store.")
395
+ /* @__PURE__ */ D(f, {
396
+ label: P("devportal.visibility", "Visibility"),
397
+ value: X.visibility,
398
+ onChange: (e) => $("visibility", e.target.value),
399
+ options: ue,
400
+ hint: P("devportal.visibilityHint", "Controls who can see this app once published. Public apps still require admin review and approval before appearing in the store.")
401
401
  })
402
402
  ]
403
403
  }),
404
- /* @__PURE__ */ E(f, {
405
- label: N("devportal.tags", "Tags"),
406
- value: Y.tags,
407
- onChange: (e) => Q("tags", e),
408
- placeholder: N("devportal.addTagsPlaceholder", "Add tags (press Enter)")
404
+ /* @__PURE__ */ D(p, {
405
+ label: P("devportal.tags", "Tags"),
406
+ value: X.tags,
407
+ onChange: (e) => $("tags", e),
408
+ placeholder: P("devportal.addTagsPlaceholder", "Add tags (press Enter)")
409
409
  }),
410
- /* @__PURE__ */ E(f, {
411
- label: N("devportal.keywords", "Keywords"),
412
- value: Y.keywords,
413
- onChange: (e) => Q("keywords", e),
414
- placeholder: N("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
410
+ /* @__PURE__ */ D(p, {
411
+ label: P("devportal.keywords", "Keywords"),
412
+ value: X.keywords,
413
+ onChange: (e) => $("keywords", e),
414
+ placeholder: P("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
415
415
  })
416
416
  ]
417
417
  }),
418
- /* @__PURE__ */ E(i, {
419
- title: N("devportal.links", "Links"),
420
- description: N("devportal.linksDescription", "External resources for your application"),
421
- children: /* @__PURE__ */ D("div", {
418
+ /* @__PURE__ */ D(o, {
419
+ title: P("devportal.links", "Links"),
420
+ description: P("devportal.linksDescription", "External resources for your application"),
421
+ children: /* @__PURE__ */ O("div", {
422
422
  className: "grid gap-4 sm:grid-cols-2",
423
423
  children: [
424
- /* @__PURE__ */ E(u, {
425
- label: N("devportal.websiteUrl", "Website URL"),
424
+ /* @__PURE__ */ D(d, {
425
+ label: P("devportal.websiteUrl", "Website URL"),
426
426
  type: "url",
427
- value: Y.websiteUrl,
428
- onChange: (e) => Q("websiteUrl", e.target.value),
429
- placeholder: N("devportal.websiteUrlPlaceholder", "https://example.com")
427
+ value: X.websiteUrl,
428
+ onChange: (e) => $("websiteUrl", e.target.value),
429
+ placeholder: P("devportal.websiteUrlPlaceholder", "https://example.com")
430
430
  }),
431
- /* @__PURE__ */ E(u, {
432
- label: N("devportal.documentationUrl", "Documentation URL"),
431
+ /* @__PURE__ */ D(d, {
432
+ label: P("devportal.documentationUrl", "Documentation URL"),
433
433
  type: "url",
434
- value: Y.documentationUrl,
435
- onChange: (e) => Q("documentationUrl", e.target.value),
436
- placeholder: N("devportal.documentationUrlPlaceholder", "https://docs.example.com")
434
+ value: X.documentationUrl,
435
+ onChange: (e) => $("documentationUrl", e.target.value),
436
+ placeholder: P("devportal.documentationUrlPlaceholder", "https://docs.example.com")
437
437
  }),
438
- /* @__PURE__ */ E(u, {
439
- label: N("devportal.supportUrl", "Support URL"),
438
+ /* @__PURE__ */ D(d, {
439
+ label: P("devportal.supportUrl", "Support URL"),
440
440
  type: "url",
441
- value: Y.supportUrl,
442
- onChange: (e) => Q("supportUrl", e.target.value),
443
- placeholder: N("devportal.supportUrlPlaceholder", "https://support.example.com")
441
+ value: X.supportUrl,
442
+ onChange: (e) => $("supportUrl", e.target.value),
443
+ placeholder: P("devportal.supportUrlPlaceholder", "https://support.example.com")
444
444
  }),
445
- /* @__PURE__ */ E(u, {
446
- label: N("devportal.githubUrl", "GitHub URL"),
445
+ /* @__PURE__ */ D(d, {
446
+ label: P("devportal.githubUrl", "GitHub URL"),
447
447
  type: "url",
448
- value: Y.githubUrl,
449
- onChange: (e) => Q("githubUrl", e.target.value),
450
- placeholder: N("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
448
+ value: X.githubUrl,
449
+ onChange: (e) => $("githubUrl", e.target.value),
450
+ placeholder: P("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
451
451
  }),
452
- /* @__PURE__ */ E(u, {
453
- label: N("devportal.privacyPolicyUrl", "Privacy Policy URL"),
452
+ /* @__PURE__ */ D(d, {
453
+ label: P("devportal.privacyPolicyUrl", "Privacy Policy URL"),
454
454
  type: "url",
455
- value: Y.privacyPolicyUrl,
456
- onChange: (e) => Q("privacyPolicyUrl", e.target.value),
457
- placeholder: N("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
455
+ value: X.privacyPolicyUrl,
456
+ onChange: (e) => $("privacyPolicyUrl", e.target.value),
457
+ placeholder: P("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
458
458
  }),
459
- /* @__PURE__ */ E(u, {
460
- label: N("devportal.termsOfServiceUrl", "Terms of Service URL"),
459
+ /* @__PURE__ */ D(d, {
460
+ label: P("devportal.termsOfServiceUrl", "Terms of Service URL"),
461
461
  type: "url",
462
- value: Y.termsOfServiceUrl,
463
- onChange: (e) => Q("termsOfServiceUrl", e.target.value),
464
- placeholder: N("devportal.termsOfServiceUrlPlaceholder", "https://example.com/terms")
462
+ value: X.termsOfServiceUrl,
463
+ onChange: (e) => $("termsOfServiceUrl", e.target.value),
464
+ placeholder: P("devportal.termsOfServiceUrlPlaceholder", "https://example.com/terms")
465
465
  })
466
466
  ]
467
467
  })
468
468
  }),
469
- /* @__PURE__ */ E(i, {
470
- title: N("devportal.settings", "Settings"),
471
- description: N("devportal.settingsDescription", "Additional configuration options"),
472
- children: /* @__PURE__ */ E("div", {
469
+ /* @__PURE__ */ D(o, {
470
+ title: P("devportal.settings", "Settings"),
471
+ description: P("devportal.settingsDescription", "Additional configuration options"),
472
+ children: /* @__PURE__ */ D("div", {
473
473
  className: "space-y-4",
474
- children: /* @__PURE__ */ E(l, {
475
- label: N("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
476
- description: N("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
477
- checked: Y.requiresApproval,
478
- onChange: (e) => Q("requiresApproval", e.target.checked)
474
+ children: /* @__PURE__ */ D(u, {
475
+ label: P("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
476
+ description: P("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
477
+ checked: X.requiresApproval,
478
+ onChange: (e) => $("requiresApproval", e.target.checked)
479
479
  })
480
480
  })
481
481
  }),
482
- /* @__PURE__ */ D("div", {
482
+ /* @__PURE__ */ O("div", {
483
483
  className: "flex flex-col gap-4 border-t pt-6",
484
- children: [/* @__PURE__ */ D("div", {
484
+ children: [/* @__PURE__ */ O("div", {
485
485
  className: "flex items-center justify-between",
486
- children: [/* @__PURE__ */ E("div", {
486
+ children: [/* @__PURE__ */ D("div", {
487
487
  className: "flex items-center gap-2",
488
- children: we && /* @__PURE__ */ D("button", {
488
+ children: we && /* @__PURE__ */ O("button", {
489
489
  type: "button",
490
- onClick: $,
491
- disabled: P || U,
490
+ onClick: Ce,
491
+ disabled: F || W,
492
492
  className: "inline-flex items-center gap-2 rounded-md border border-primary bg-primary/10 px-4 py-2 text-sm font-medium text-primary hover:bg-primary/20 transition-colors disabled:opacity-50",
493
- children: [/* @__PURE__ */ E(se, { size: 16 }), N("devportal.submitForReview", "Submit for Review")]
493
+ children: [/* @__PURE__ */ D(oe, { size: 16 }), P("devportal.submitForReview", "Submit for Review")]
494
494
  })
495
- }), /* @__PURE__ */ E("button", {
495
+ }), /* @__PURE__ */ D("button", {
496
496
  type: "submit",
497
- disabled: P || !U || !j,
498
- "aria-disabled": !j,
497
+ disabled: F || !W || !M,
498
+ "aria-disabled": !M,
499
499
  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",
500
- children: P ? /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), N("devportal.saving", "Saving...")] }) : /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(oe, { size: 16 }), N("devportal.saveChanges", "Save Changes")] })
500
+ children: F ? /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), P("devportal.saving", "Saving...")] }) : /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(ae, { size: 16 }), P("devportal.saveChanges", "Save Changes")] })
501
501
  })]
502
- }), /* @__PURE__ */ D("div", {
502
+ }), /* @__PURE__ */ O("div", {
503
503
  className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-4",
504
504
  children: [
505
- /* @__PURE__ */ E("h3", {
505
+ /* @__PURE__ */ D("h3", {
506
506
  className: "text-sm font-medium text-status-error-text",
507
- children: N("devportal.dangerZone", "Danger Zone")
507
+ children: P("devportal.dangerZone", "Danger Zone")
508
508
  }),
509
- /* @__PURE__ */ E("p", {
509
+ /* @__PURE__ */ D("p", {
510
510
  className: "mt-1 text-sm text-status-error-text",
511
- children: N("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
511
+ children: P("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
512
512
  }),
513
- /* @__PURE__ */ D("div", {
513
+ /* @__PURE__ */ O("div", {
514
514
  className: "mt-4 flex gap-3",
515
515
  children: [
516
- Te && /* @__PURE__ */ D("button", {
516
+ Te && /* @__PURE__ */ O("button", {
517
517
  type: "button",
518
- onClick: () => V(!0),
518
+ onClick: () => H(!0),
519
519
  className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
520
- children: [/* @__PURE__ */ E(ie, { size: 14 }), N("devportal.deprecateApp", "Deprecate App")]
520
+ children: [/* @__PURE__ */ D(T, { size: 14 }), P("devportal.deprecateApp", "Deprecate App")]
521
521
  }),
522
- Ee && /* @__PURE__ */ D("button", {
522
+ Ee && /* @__PURE__ */ O("button", {
523
523
  type: "button",
524
- onClick: () => H(!0),
524
+ onClick: () => U(!0),
525
525
  className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
526
- children: [/* @__PURE__ */ E(ae, { size: 14 }), N("devportal.deactivateApp", "Deactivate App")]
526
+ children: [/* @__PURE__ */ D(ie, { size: 14 }), P("devportal.deactivateApp", "Deactivate App")]
527
527
  }),
528
- /* @__PURE__ */ D("button", {
528
+ /* @__PURE__ */ O("button", {
529
529
  type: "button",
530
- onClick: () => z(!0),
531
- disabled: !M,
532
- "aria-disabled": !M,
530
+ onClick: () => B(!0),
531
+ disabled: !N,
532
+ "aria-disabled": !N,
533
533
  className: "inline-flex items-center gap-2 rounded-md border border-status-error-bg bg-bg-surface px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors disabled:opacity-50",
534
- children: [/* @__PURE__ */ E(ce, { size: 14 }), N("devportal.deleteApp", "Delete App")]
534
+ children: [/* @__PURE__ */ D(se, { size: 14 }), P("devportal.deleteApp", "Delete App")]
535
535
  })
536
536
  ]
537
537
  })
@@ -540,38 +540,38 @@ var O = () => {
540
540
  })
541
541
  ]
542
542
  }),
543
- /* @__PURE__ */ E(m, {
544
- open: R,
545
- onOpenChange: z,
546
- title: N("devportal.deleteApplication", "Delete Application"),
547
- description: N("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${J.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
548
- confirmLabel: N("devportal.deleteApplication", "Delete Application"),
543
+ /* @__PURE__ */ D(h, {
544
+ open: z,
545
+ onOpenChange: B,
546
+ title: P("devportal.deleteApplication", "Delete Application"),
547
+ description: P("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${Y.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
548
+ confirmLabel: P("devportal.deleteApplication", "Delete Application"),
549
549
  variant: "destructive",
550
- onConfirm: xe
550
+ onConfirm: be
551
551
  }),
552
- /* @__PURE__ */ E(m, {
553
- open: B,
554
- onOpenChange: V,
555
- title: N("devportal.deprecateApplication", "Deprecate Application"),
556
- description: N("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${J.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
557
- confirmLabel: N("devportal.deprecateApplication", "Deprecate Application"),
552
+ /* @__PURE__ */ D(h, {
553
+ open: V,
554
+ onOpenChange: H,
555
+ title: P("devportal.deprecateApplication", "Deprecate Application"),
556
+ description: P("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${Y.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
557
+ confirmLabel: P("devportal.deprecateApplication", "Deprecate Application"),
558
558
  variant: "warning",
559
- onConfirm: Se
559
+ onConfirm: xe
560
560
  }),
561
- /* @__PURE__ */ E(m, {
562
- open: me,
563
- onOpenChange: H,
564
- title: N("devportal.deactivateApplication", "Deactivate Application"),
565
- description: N("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${J.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
566
- confirmLabel: N("devportal.deactivateApplication", "Deactivate Application"),
561
+ /* @__PURE__ */ D(h, {
562
+ open: pe,
563
+ onOpenChange: U,
564
+ title: P("devportal.deactivateApplication", "Deactivate Application"),
565
+ description: P("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${Y.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
566
+ confirmLabel: P("devportal.deactivateApplication", "Deactivate Application"),
567
567
  variant: "destructive",
568
- onConfirm: Ce
568
+ onConfirm: Se
569
569
  })
570
570
  ]
571
571
  })
572
572
  });
573
573
  };
574
574
  //#endregion
575
- export { O as EditApplicationPage };
575
+ export { k as EditApplicationPage };
576
576
 
577
577
  //# sourceMappingURL=EditApplicationPage.js.map