@burdenoff/microfe-devportal 2026.609.4 → 2026.611.2

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 (58) hide show
  1. package/dist/devportal/DevportalRoot.js +6 -1
  2. package/dist/devportal/DevportalRoot.js.map +1 -1
  3. package/dist/devportal/DevportalRoutes.js +169 -158
  4. package/dist/devportal/DevportalRoutes.js.map +1 -1
  5. package/dist/devportal/hooks/usePackageUpload.js +120 -0
  6. package/dist/devportal/hooks/usePackageUpload.js.map +1 -0
  7. package/dist/devportal/pages/AnalyticsDashboardPage.js +73 -62
  8. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  9. package/dist/devportal/pages/AppLogsPage.js +89 -82
  10. package/dist/devportal/pages/AppLogsPage.js.map +1 -1
  11. package/dist/devportal/pages/ApplicationDetailPage.js +948 -367
  12. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  13. package/dist/devportal/pages/ApplicationVersionsPage.js +56 -45
  14. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  15. package/dist/devportal/pages/CreateApiKeyPage.js +30 -32
  16. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  17. package/dist/devportal/pages/CreateApplicationPage.js +8 -3
  18. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  19. package/dist/devportal/pages/CreateOAuthClientPage.js +4 -4
  20. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  21. package/dist/devportal/pages/CreateOrganizationPage.js +238 -229
  22. package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
  23. package/dist/devportal/pages/CreateWebhookPage.js +159 -148
  24. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  25. package/dist/devportal/pages/DelegationsPage.js +1 -1
  26. package/dist/devportal/pages/DelegationsPage.js.map +1 -1
  27. package/dist/devportal/pages/EditApplicationPage.js +25 -17
  28. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  29. package/dist/devportal/pages/ListingPreviewPage.js +159 -153
  30. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  31. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  32. package/dist/devportal/pages/OAuthClientsPage.js +2 -2
  33. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  34. package/dist/devportal/pages/OrganizationDetailPage.js +158 -153
  35. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  36. package/dist/devportal/pages/OrganizationMembersPage.js +223 -212
  37. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  38. package/dist/devportal/pages/PublishPage.js +172 -165
  39. package/dist/devportal/pages/PublishPage.js.map +1 -1
  40. package/dist/devportal/pages/ResourcesPage.js.map +1 -1
  41. package/dist/devportal/pages/RevenueDashboardPage.js +461 -0
  42. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -0
  43. package/dist/devportal/pages/SetupPage.js +186 -181
  44. package/dist/devportal/pages/SetupPage.js.map +1 -1
  45. package/dist/devportal/pages/StoreSubmissionPage.js +76 -97
  46. package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
  47. package/dist/devportal/pages/WebhookDetailPage.js +172 -154
  48. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  49. package/dist/devportal/pages/WebhooksPage.js +218 -200
  50. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  51. package/dist/devportal/providers/DevportalProvider.js +16 -13
  52. package/dist/devportal/providers/DevportalProvider.js.map +1 -1
  53. package/dist/devportal/types/index.js.map +1 -1
  54. package/dist/generated/global-operations.js +334 -223
  55. package/dist/generated/global-operations.js.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/devportal/pages/RevenueRedirectPage.js +0 -14
  58. package/dist/devportal/pages/RevenueRedirectPage.js.map +0 -1
@@ -7,96 +7,103 @@ import "../components/index.js";
7
7
  import { DEVPORTAL_PERMISSIONS as s } from "../constants/permissions.js";
8
8
  import { useDevportalPermission as c } from "../hooks/usePermission.js";
9
9
  import "../hooks/index.js";
10
- import { useMemo as l, useState as u } from "react";
11
- import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
- import { AlertTriangle as f, CheckCircle as p, Eye as m, FileText as h, Globe as g, Image as _, Loader2 as v, Send as y, Shield as b, XCircle as x } from "lucide-react";
13
- import { useParams as S } from "react-router-dom";
14
- import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
10
+ import { useEffect as l, useMemo as u, useState as d } from "react";
11
+ import { useI18n as f } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
+ import { AlertTriangle as p, CheckCircle as m, Eye as h, FileText as g, Globe as _, Image as v, Loader2 as y, Send as b, Shield as x, XCircle as S } from "lucide-react";
13
+ import { useParams as C } from "react-router-dom";
14
+ import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
15
15
  //#region src/devportal/pages/PublishPage.tsx
16
- var E = [
16
+ var D = [
17
17
  "SUBMITTED",
18
18
  "IN_REVIEW",
19
19
  "APPROVED",
20
20
  "PUBLISHED"
21
- ], D = () => {
22
- let { appId: D } = S(), { navigate: O, basePath: k } = e(), { t: A } = d(), j = (e, t) => {
23
- let n = A(e);
21
+ ], O = () => {
22
+ let { appId: O } = C(), { navigate: k, basePath: A } = e(), { t: j } = f(), M = (e, t) => {
23
+ let n = j(e);
24
24
  return n === e ? t : n;
25
- }, [M, N] = u(!1), [P, F] = u(null), [I, L] = u(""), R = c(s.APP_SUBMIT), { data: z, loading: B, error: V } = i({
26
- variables: { id: D },
27
- skip: !D,
25
+ }, [N, P] = d(!1), [F, I] = d(null), [L, R] = d(""), z = c(s.APP_SUBMIT), { data: B, loading: V, error: H } = i({
26
+ variables: { id: O },
27
+ skip: !O,
28
28
  fetchPolicy: "network-only"
29
- }), [H] = a(), U = z?.application, W = E.includes(U?.status ?? ""), G = l(() => {
30
- if (!U) return [];
31
- let e = U.screenshots?.length ?? 0;
29
+ }), [U] = a(), W = B?.application;
30
+ l(() => {
31
+ let e = W?.name;
32
+ if (!O || !e) return;
33
+ let t = window.__breadcrumbRegistry;
34
+ return t?.register(O, e), () => t?.unregister(O);
35
+ }, [O, W?.name]);
36
+ let G = D.includes(W?.status ?? ""), K = u(() => {
37
+ if (!W) return [];
38
+ let e = W.screenshots?.length ?? 0;
32
39
  return [
33
40
  {
34
41
  id: "name",
35
- label: j("devportal.checklistNameLabel", "App Name & Description"),
36
- description: j("devportal.checklistNameDesc", "Name and short description are required"),
37
- status: U.name && U.shortDescription ? "passed" : "failed",
38
- icon: /* @__PURE__ */ w(h, { size: 20 })
42
+ label: M("devportal.checklistNameLabel", "App Name & Description"),
43
+ description: M("devportal.checklistNameDesc", "Name and short description are required"),
44
+ status: W.name && W.shortDescription ? "passed" : "failed",
45
+ icon: /* @__PURE__ */ T(g, { size: 20 })
39
46
  },
40
47
  {
41
48
  id: "category",
42
- label: j("devportal.checklistCategoryLabel", "Category"),
43
- description: j("devportal.checklistCategoryDesc", "A category must be selected"),
44
- status: U.category ? "passed" : "failed",
45
- icon: /* @__PURE__ */ w(g, { size: 20 })
49
+ label: M("devportal.checklistCategoryLabel", "Category"),
50
+ description: M("devportal.checklistCategoryDesc", "A category must be selected"),
51
+ status: W.category ? "passed" : "failed",
52
+ icon: /* @__PURE__ */ T(_, { size: 20 })
46
53
  },
47
54
  {
48
55
  id: "privacy",
49
- label: j("devportal.checklistPrivacyLabel", "Privacy Policy"),
50
- description: j("devportal.checklistPrivacyDesc", "Privacy policy URL is required"),
51
- status: U.privacyPolicyUrl ? "passed" : "failed",
52
- icon: /* @__PURE__ */ w(b, { size: 20 })
56
+ label: M("devportal.checklistPrivacyLabel", "Privacy Policy"),
57
+ description: M("devportal.checklistPrivacyDesc", "Privacy policy URL is required"),
58
+ status: W.privacyPolicyUrl ? "passed" : "failed",
59
+ icon: /* @__PURE__ */ T(x, { size: 20 })
53
60
  },
54
61
  {
55
62
  id: "terms",
56
- label: j("devportal.checklistTermsLabel", "Terms of Service"),
57
- description: j("devportal.checklistTermsDesc", "Terms of service URL is required"),
58
- status: U.termsOfServiceUrl ? "passed" : "failed",
59
- icon: /* @__PURE__ */ w(h, { size: 20 })
63
+ label: M("devportal.checklistTermsLabel", "Terms of Service"),
64
+ description: M("devportal.checklistTermsDesc", "Terms of service URL is required"),
65
+ status: W.termsOfServiceUrl ? "passed" : "failed",
66
+ icon: /* @__PURE__ */ T(g, { size: 20 })
60
67
  },
61
68
  {
62
69
  id: "icon",
63
- label: j("devportal.checklistIconLabel", "App Icon"),
64
- description: j("devportal.checklistIconDesc", "An icon URL is recommended"),
65
- status: U.iconUrl ? "passed" : "warning",
66
- icon: /* @__PURE__ */ w(_, { size: 20 })
70
+ label: M("devportal.checklistIconLabel", "App Icon"),
71
+ description: M("devportal.checklistIconDesc", "An icon URL is recommended"),
72
+ status: W.iconUrl ? "passed" : "warning",
73
+ icon: /* @__PURE__ */ T(v, { size: 20 })
67
74
  },
68
75
  {
69
76
  id: "screenshots",
70
- label: j("devportal.checklistScreenshotsLabel", "Screenshots"),
71
- description: j("devportal.checklistScreenshotsDesc", "At least 3 screenshots are recommended"),
77
+ label: M("devportal.checklistScreenshotsLabel", "Screenshots"),
78
+ description: M("devportal.checklistScreenshotsDesc", "At least 3 screenshots are recommended"),
72
79
  status: e >= 3 ? "passed" : "warning",
73
- icon: /* @__PURE__ */ w(_, { size: 20 })
80
+ icon: /* @__PURE__ */ T(v, { size: 20 })
74
81
  },
75
82
  {
76
83
  id: "status",
77
- label: j("devportal.checklistStatusLabel", "App Status"),
78
- description: j("devportal.checklistStatusDesc", "App must be in DRAFT or REJECTED state to submit"),
79
- status: ["DRAFT", "REJECTED"].includes(U.status ?? "") ? "passed" : "warning",
80
- icon: /* @__PURE__ */ w(p, { size: 20 })
84
+ label: M("devportal.checklistStatusLabel", "App Status"),
85
+ description: M("devportal.checklistStatusDesc", "App must be in DRAFT or REJECTED state to submit"),
86
+ status: ["DRAFT", "REJECTED"].includes(W.status ?? "") ? "passed" : "warning",
87
+ icon: /* @__PURE__ */ T(m, { size: 20 })
81
88
  }
82
89
  ];
83
- }, [U]), K = G.filter((e) => e.status === "passed").length, q = G.filter((e) => e.status === "failed").length, J = G.filter((e) => e.status === "warning").length, Y = ["DRAFT", "REJECTED"].includes(U?.status ?? ""), X = !B && !V && q === 0 && !!U && !W && Y, Z = (e) => {
90
+ }, [W]), q = K.filter((e) => e.status === "passed").length, J = K.filter((e) => e.status === "failed").length, Y = K.filter((e) => e.status === "warning").length, X = ["DRAFT", "REJECTED"].includes(W?.status ?? ""), Z = !V && !H && J === 0 && !!W && !G && X, Q = (e) => {
84
91
  switch (e) {
85
- case "passed": return /* @__PURE__ */ w(p, {
92
+ case "passed": return /* @__PURE__ */ T(m, {
86
93
  size: 20,
87
94
  className: "text-status-success-text"
88
95
  });
89
- case "failed": return /* @__PURE__ */ w(x, {
96
+ case "failed": return /* @__PURE__ */ T(S, {
90
97
  size: 20,
91
98
  className: "text-status-error-text"
92
99
  });
93
- case "warning": return /* @__PURE__ */ w(f, {
100
+ case "warning": return /* @__PURE__ */ T(p, {
94
101
  size: 20,
95
102
  className: "text-status-warning-text"
96
103
  });
97
- default: return /* @__PURE__ */ w("div", { className: "h-5 w-5 rounded-full border-2 border-border-default" });
104
+ default: return /* @__PURE__ */ T("div", { className: "h-5 w-5 rounded-full border-2 border-border-default" });
98
105
  }
99
- }, Q = (e) => {
106
+ }, $ = (e) => {
100
107
  switch (e) {
101
108
  case "passed": return "bg-status-success-bg-subtle border-border-subtle";
102
109
  case "failed": return "bg-status-error-bg-subtle border-border-subtle";
@@ -104,239 +111,239 @@ var E = [
104
111
  default: return "bg-bg-canvas border-border-subtle";
105
112
  }
106
113
  };
107
- return B ? /* @__PURE__ */ w(t, {
108
- title: j("devportal.publishToStoreTitle", "Publish to Store"),
109
- description: j("devportal.loadingApplicationDetails", "Loading application details..."),
110
- backLink: `/apps/${D}`,
111
- backLabel: j("devportal.backToApplication", "Back to Application"),
112
- children: /* @__PURE__ */ w("div", {
114
+ return V ? /* @__PURE__ */ T(t, {
115
+ title: M("devportal.publishToStoreTitle", "Publish to Store"),
116
+ description: M("devportal.loadingApplicationDetails", "Loading application details..."),
117
+ backLink: `/apps/${O}`,
118
+ backLabel: M("devportal.backToApplication", "Back to Application"),
119
+ children: /* @__PURE__ */ T("div", {
113
120
  className: "flex items-center justify-center py-12",
114
- children: /* @__PURE__ */ w(v, { className: "animate-spin h-8 w-8 text-muted-foreground" })
121
+ children: /* @__PURE__ */ T(y, { className: "animate-spin h-8 w-8 text-muted-foreground" })
115
122
  })
116
- }) : V || !U ? /* @__PURE__ */ w(t, {
117
- title: j("devportal.publishToStoreTitle", "Publish to Store"),
118
- description: j("devportal.couldNotLoadApplication", "Could not load application"),
119
- backLink: `/apps/${D}`,
120
- backLabel: j("devportal.backToApplication", "Back to Application"),
121
- children: /* @__PURE__ */ w(r, {
123
+ }) : H || !W ? /* @__PURE__ */ T(t, {
124
+ title: M("devportal.publishToStoreTitle", "Publish to Store"),
125
+ description: M("devportal.couldNotLoadApplication", "Could not load application"),
126
+ backLink: `/apps/${O}`,
127
+ backLabel: M("devportal.backToApplication", "Back to Application"),
128
+ children: /* @__PURE__ */ T(r, {
122
129
  variant: "error",
123
- title: j("devportal.failedToLoadApplication", "Failed to load application"),
124
- children: V?.message ?? j("devportal.applicationNotFound", "Application not found")
130
+ title: M("devportal.failedToLoadApplication", "Failed to load application"),
131
+ children: H?.message ?? M("devportal.applicationNotFound", "Application not found")
125
132
  })
126
- }) : /* @__PURE__ */ w(o, {
133
+ }) : /* @__PURE__ */ T(o, {
127
134
  permission: s.APP_SUBMIT,
128
- children: /* @__PURE__ */ T(t, {
129
- title: j("devportal.publishToStoreTitle", "Publish to Store"),
130
- description: `${j("devportal.submitAppForReview", "Submit")} "${U.name}" ${j("devportal.forReviewAndPublication", "for review and publication")}`,
131
- backLink: `/apps/${D}`,
132
- backLabel: j("devportal.backToApplication", "Back to Application"),
133
- actions: /* @__PURE__ */ T("button", {
134
- onClick: () => O?.(`${k}/apps/${D}/listing`),
135
+ children: /* @__PURE__ */ E(t, {
136
+ title: M("devportal.publishToStoreTitle", "Publish to Store"),
137
+ description: `${M("devportal.submitAppForReview", "Submit")} "${W.name}" ${M("devportal.forReviewAndPublication", "for review and publication")}`,
138
+ backLink: `/apps/${O}`,
139
+ backLabel: M("devportal.backToApplication", "Back to Application"),
140
+ actions: /* @__PURE__ */ E("button", {
141
+ onClick: () => k?.(`${A}/apps/${O}/listing`),
135
142
  className: "inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm font-medium hover:bg-muted",
136
- children: [/* @__PURE__ */ w(m, { size: 16 }), j("devportal.previewListing", "Preview Listing")]
143
+ children: [/* @__PURE__ */ T(h, { size: 16 }), M("devportal.previewListing", "Preview Listing")]
137
144
  }),
138
145
  children: [
139
- W && /* @__PURE__ */ T(r, {
146
+ G && /* @__PURE__ */ E(r, {
140
147
  variant: "warning",
141
- title: j("devportal.alreadySubmittedTitle", "Already Submitted"),
148
+ title: M("devportal.alreadySubmittedTitle", "Already Submitted"),
142
149
  children: [
143
- j("devportal.alreadySubmittedMsg1", "This app is currently in"),
150
+ M("devportal.alreadySubmittedMsg1", "This app is currently in"),
144
151
  " ",
145
- /* @__PURE__ */ w("strong", { children: U.status }),
152
+ /* @__PURE__ */ T("strong", { children: W.status }),
146
153
  " ",
147
- j("devportal.alreadySubmittedMsg2", "state and cannot be re-submitted until the review process is complete or the app is rejected.")
154
+ M("devportal.alreadySubmittedMsg2", "state and cannot be re-submitted until the review process is complete or the app is rejected.")
148
155
  ]
149
156
  }),
150
- /* @__PURE__ */ T("div", {
157
+ /* @__PURE__ */ E("div", {
151
158
  className: "rounded-lg border bg-card p-6",
152
159
  children: [
153
- /* @__PURE__ */ w("h2", {
160
+ /* @__PURE__ */ T("h2", {
154
161
  className: "text-lg font-semibold",
155
- children: j("devportal.preSubmissionChecklist", "Pre-submission Checklist")
162
+ children: M("devportal.preSubmissionChecklist", "Pre-submission Checklist")
156
163
  }),
157
- /* @__PURE__ */ w("p", {
164
+ /* @__PURE__ */ T("p", {
158
165
  className: "mt-1 text-sm text-muted-foreground",
159
- children: j("devportal.completeAllRequiredItems", "Complete all required items before submitting for review")
166
+ children: M("devportal.completeAllRequiredItems", "Complete all required items before submitting for review")
160
167
  }),
161
- /* @__PURE__ */ T("div", {
168
+ /* @__PURE__ */ E("div", {
162
169
  className: "mt-4 flex gap-6",
163
170
  children: [
164
- /* @__PURE__ */ T("div", {
171
+ /* @__PURE__ */ E("div", {
165
172
  className: "flex items-center gap-2",
166
- children: [/* @__PURE__ */ w(p, {
173
+ children: [/* @__PURE__ */ T(m, {
167
174
  size: 20,
168
175
  className: "text-status-success-text"
169
- }), /* @__PURE__ */ T("span", { children: [
170
- K,
176
+ }), /* @__PURE__ */ E("span", { children: [
177
+ q,
171
178
  " ",
172
- j("devportal.passed", "Passed")
179
+ M("devportal.passed", "Passed")
173
180
  ] })]
174
181
  }),
175
- /* @__PURE__ */ T("div", {
182
+ /* @__PURE__ */ E("div", {
176
183
  className: "flex items-center gap-2",
177
- children: [/* @__PURE__ */ w(x, {
184
+ children: [/* @__PURE__ */ T(S, {
178
185
  size: 20,
179
186
  className: "text-status-error-text"
180
- }), /* @__PURE__ */ T("span", { children: [
181
- q,
187
+ }), /* @__PURE__ */ E("span", { children: [
188
+ J,
182
189
  " ",
183
- j("devportal.failed", "Failed")
190
+ M("devportal.failed", "Failed")
184
191
  ] })]
185
192
  }),
186
- /* @__PURE__ */ T("div", {
193
+ /* @__PURE__ */ E("div", {
187
194
  className: "flex items-center gap-2",
188
- children: [/* @__PURE__ */ w(f, {
195
+ children: [/* @__PURE__ */ T(p, {
189
196
  size: 20,
190
197
  className: "text-status-warning-text"
191
- }), /* @__PURE__ */ T("span", { children: [
192
- J,
198
+ }), /* @__PURE__ */ E("span", { children: [
199
+ Y,
193
200
  " ",
194
- j("devportal.warnings", "Warnings")
201
+ M("devportal.warnings", "Warnings")
195
202
  ] })]
196
203
  })
197
204
  ]
198
205
  })
199
206
  ]
200
207
  }),
201
- /* @__PURE__ */ w(n, { children: /* @__PURE__ */ w("div", {
208
+ /* @__PURE__ */ T(n, { children: /* @__PURE__ */ T("div", {
202
209
  className: "space-y-3",
203
- children: G.map((e) => /* @__PURE__ */ T("div", {
204
- className: `flex items-center gap-4 rounded-lg border p-4 ${Q(e.status)}`,
210
+ children: K.map((e) => /* @__PURE__ */ E("div", {
211
+ className: `flex items-center gap-4 rounded-lg border p-4 ${$(e.status)}`,
205
212
  children: [
206
- /* @__PURE__ */ w("div", {
213
+ /* @__PURE__ */ T("div", {
207
214
  className: "rounded-lg bg-background p-2",
208
215
  children: e.icon
209
216
  }),
210
- /* @__PURE__ */ T("div", {
217
+ /* @__PURE__ */ E("div", {
211
218
  className: "flex-1",
212
- children: [/* @__PURE__ */ w("p", {
219
+ children: [/* @__PURE__ */ T("p", {
213
220
  className: "font-medium",
214
221
  children: e.label
215
- }), /* @__PURE__ */ w("p", {
222
+ }), /* @__PURE__ */ T("p", {
216
223
  className: "text-sm text-muted-foreground",
217
224
  children: e.description
218
225
  })]
219
226
  }),
220
- Z(e.status)
227
+ Q(e.status)
221
228
  ]
222
229
  }, e.id))
223
230
  }) }),
224
- !W && /* @__PURE__ */ T(n, {
225
- title: j("devportal.notesForReviewerTitle", "Notes for Reviewer"),
226
- description: j("devportal.notesForReviewerDesc", "Optional message to the review team"),
227
- children: [/* @__PURE__ */ w("textarea", {
228
- value: I,
229
- onChange: (e) => L(e.target.value),
230
- placeholder: j("devportal.notesForReviewerPlaceholder", "Describe what your app does, any special review considerations, or testing instructions..."),
231
+ !G && /* @__PURE__ */ E(n, {
232
+ title: M("devportal.notesForReviewerTitle", "Notes for Reviewer"),
233
+ description: M("devportal.notesForReviewerDesc", "Optional message to the review team"),
234
+ children: [/* @__PURE__ */ T("textarea", {
235
+ value: L,
236
+ onChange: (e) => R(e.target.value),
237
+ placeholder: M("devportal.notesForReviewerPlaceholder", "Describe what your app does, any special review considerations, or testing instructions..."),
231
238
  rows: 4,
232
239
  maxLength: 1e3,
233
240
  className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring resize-none"
234
- }), /* @__PURE__ */ T("p", {
241
+ }), /* @__PURE__ */ E("p", {
235
242
  className: "mt-1 text-xs text-muted-foreground text-right",
236
- children: [I.length, "/1000"]
243
+ children: [L.length, "/1000"]
237
244
  })]
238
245
  }),
239
- P && /* @__PURE__ */ w(r, {
246
+ F && /* @__PURE__ */ T(r, {
240
247
  variant: "error",
241
- title: j("devportal.submissionFailedTitle", "Submission Failed"),
242
- children: P
248
+ title: M("devportal.submissionFailedTitle", "Submission Failed"),
249
+ children: F
243
250
  }),
244
- q > 0 && !W && /* @__PURE__ */ T(r, {
251
+ J > 0 && !G && /* @__PURE__ */ E(r, {
245
252
  variant: "error",
246
- title: j("devportal.cannotSubmitTitle", "Cannot Submit"),
253
+ title: M("devportal.cannotSubmitTitle", "Cannot Submit"),
247
254
  children: [
248
- j("devportal.pleaseFixItems1", "Please fix"),
255
+ M("devportal.pleaseFixItems1", "Please fix"),
249
256
  " ",
250
- q,
257
+ J,
251
258
  " ",
252
- j("devportal.pleaseFixItems2", "failed item(s) before submitting for review."),
253
- /* @__PURE__ */ w("button", {
254
- onClick: () => O?.(`${k}/apps/${D}/edit`),
259
+ M("devportal.pleaseFixItems2", "failed item(s) before submitting for review."),
260
+ /* @__PURE__ */ T("button", {
261
+ onClick: () => k?.(`${A}/apps/${O}/edit`),
255
262
  className: "mt-2 block text-sm underline hover:no-underline",
256
- children: j("devportal.editApplicationToFix", "Edit application to fix issues →")
263
+ children: M("devportal.editApplicationToFix", "Edit application to fix issues →")
257
264
  })
258
265
  ]
259
266
  }),
260
- J > 0 && q === 0 && !W && /* @__PURE__ */ T(r, {
267
+ Y > 0 && J === 0 && !G && /* @__PURE__ */ E(r, {
261
268
  variant: "warning",
262
- title: j("devportal.warningsTitle", "Warnings"),
269
+ title: M("devportal.warningsTitle", "Warnings"),
263
270
  children: [
264
- j("devportal.warningsMsg1", "You have"),
271
+ M("devportal.warningsMsg1", "You have"),
265
272
  " ",
266
- J,
273
+ Y,
267
274
  " ",
268
- j("devportal.warningsMsg2", "warning(s). While you can submit, addressing these may improve your app's chances of approval.")
275
+ M("devportal.warningsMsg2", "warning(s). While you can submit, addressing these may improve your app's chances of approval.")
269
276
  ]
270
277
  }),
271
- /* @__PURE__ */ w(n, {
272
- title: j("devportal.reviewProcessTitle", "Review Process"),
273
- children: /* @__PURE__ */ w("div", {
278
+ /* @__PURE__ */ T(n, {
279
+ title: M("devportal.reviewProcessTitle", "Review Process"),
280
+ children: /* @__PURE__ */ T("div", {
274
281
  className: "rounded-lg border bg-muted/50 p-4",
275
- children: /* @__PURE__ */ T("ul", {
282
+ children: /* @__PURE__ */ E("ul", {
276
283
  className: "space-y-2 text-sm",
277
284
  children: [
278
- /* @__PURE__ */ T("li", {
285
+ /* @__PURE__ */ E("li", {
279
286
  className: "flex items-start gap-2",
280
- children: [/* @__PURE__ */ w(p, {
287
+ children: [/* @__PURE__ */ T(m, {
281
288
  size: 16,
282
289
  className: "mt-0.5 text-primary"
283
- }), /* @__PURE__ */ w("span", { children: j("devportal.reviewProcessInfo1", "Review typically takes 3-5 business days") })]
290
+ }), /* @__PURE__ */ T("span", { children: M("devportal.reviewProcessInfo1", "Review typically takes 3-5 business days") })]
284
291
  }),
285
- /* @__PURE__ */ T("li", {
292
+ /* @__PURE__ */ E("li", {
286
293
  className: "flex items-start gap-2",
287
- children: [/* @__PURE__ */ w(p, {
294
+ children: [/* @__PURE__ */ T(m, {
288
295
  size: 16,
289
296
  className: "mt-0.5 text-primary"
290
- }), /* @__PURE__ */ w("span", { children: j("devportal.reviewProcessInfo2", "You'll receive notifications about review status changes") })]
297
+ }), /* @__PURE__ */ T("span", { children: M("devportal.reviewProcessInfo2", "You'll receive notifications about review status changes") })]
291
298
  }),
292
- /* @__PURE__ */ T("li", {
299
+ /* @__PURE__ */ E("li", {
293
300
  className: "flex items-start gap-2",
294
- children: [/* @__PURE__ */ w(p, {
301
+ children: [/* @__PURE__ */ T(m, {
295
302
  size: 16,
296
303
  className: "mt-0.5 text-primary"
297
- }), /* @__PURE__ */ w("span", { children: j("devportal.reviewProcessInfo3", "If changes are requested, you can resubmit without losing your place in the queue") })]
304
+ }), /* @__PURE__ */ T("span", { children: M("devportal.reviewProcessInfo3", "If changes are requested, you can resubmit without losing your place in the queue") })]
298
305
  }),
299
- /* @__PURE__ */ T("li", {
306
+ /* @__PURE__ */ E("li", {
300
307
  className: "flex items-start gap-2",
301
- children: [/* @__PURE__ */ w(p, {
308
+ children: [/* @__PURE__ */ T(m, {
302
309
  size: 16,
303
310
  className: "mt-0.5 text-primary"
304
- }), /* @__PURE__ */ w("span", { children: j("devportal.reviewProcessInfo4", "Once approved and published, your app will be visible in the marketplace") })]
311
+ }), /* @__PURE__ */ T("span", { children: M("devportal.reviewProcessInfo4", "Once approved and published, your app will be visible in the marketplace") })]
305
312
  })
306
313
  ]
307
314
  })
308
315
  })
309
316
  }),
310
- /* @__PURE__ */ T("div", {
317
+ /* @__PURE__ */ E("div", {
311
318
  className: "flex gap-3",
312
- children: [/* @__PURE__ */ w("button", {
313
- onClick: () => O?.(`${k}/apps/${D}`),
319
+ children: [/* @__PURE__ */ T("button", {
320
+ onClick: () => k?.(`${A}/apps/${O}`),
314
321
  className: "rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted",
315
- children: j("devportal.cancelButton", "Cancel")
316
- }), /* @__PURE__ */ w("button", {
322
+ children: M("devportal.cancelButton", "Cancel")
323
+ }), /* @__PURE__ */ T("button", {
317
324
  onClick: async () => {
318
- if (D) {
319
- N(!0), F(null);
325
+ if (O) {
326
+ P(!0), I(null);
320
327
  try {
321
- let e = await H({ variables: {
322
- id: D,
323
- notes: I.trim() || void 0
328
+ let e = await U({ variables: {
329
+ id: O,
330
+ notes: L.trim() || void 0
324
331
  } });
325
332
  if (e.error) throw e.error;
326
- O?.(`${k}/apps/${D}`);
333
+ k?.(`${A}/apps/${O}`);
327
334
  } catch (e) {
328
- F(e instanceof Error ? e.message : j("devportal.submitFailedDefault", "Failed to submit for review")), N(!1);
335
+ I(e instanceof Error ? e.message : M("devportal.submitFailedDefault", "Failed to submit for review")), P(!1);
329
336
  }
330
337
  }
331
338
  },
332
- disabled: !X || M || !R.allowed,
333
- "aria-disabled": !X || M || !R.allowed,
334
- title: R.allowed ? void 0 : j("devportal.common.noPermission", "You do not have permission to perform this action"),
339
+ disabled: !Z || N || !z.allowed,
340
+ "aria-disabled": !Z || N || !z.allowed,
341
+ title: z.allowed ? void 0 : M("devportal.common.noPermission", "You do not have permission to perform this action"),
335
342
  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 disabled:opacity-50 disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
336
- children: M ? /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w(v, {
343
+ children: N ? /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(y, {
337
344
  size: 16,
338
345
  className: "animate-spin"
339
- }), j("devportal.submittingButton", "Submitting...")] }) : /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w(y, { size: 16 }), j("devportal.submitForReviewButton", "Submit for Review")] })
346
+ }), M("devportal.submittingButton", "Submitting...")] }) : /* @__PURE__ */ E(w, { children: [/* @__PURE__ */ T(b, { size: 16 }), M("devportal.submitForReviewButton", "Submit for Review")] })
340
347
  })]
341
348
  })
342
349
  ]
@@ -344,6 +351,6 @@ var E = [
344
351
  });
345
352
  };
346
353
  //#endregion
347
- export { D as PublishPage };
354
+ export { O as PublishPage };
348
355
 
349
356
  //# sourceMappingURL=PublishPage.js.map