@burdenoff/microfe-devportal 2026.828.1 → 2026.830.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.
- package/dist/devportal/AdminDevportalRoot.d.ts.map +1 -1
- package/dist/devportal/AdminDevportalRoot.js +16 -19
- package/dist/devportal/AdminDevportalRoot.js.map +1 -1
- package/dist/devportal/DevportalRoot.d.ts.map +1 -1
- package/dist/devportal/DevportalRoot.js +36 -39
- package/dist/devportal/DevportalRoot.js.map +1 -1
- package/dist/devportal/components/AppCard.js +41 -41
- package/dist/devportal/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/devportal/components/ConfirmDialog.js +19 -22
- package/dist/devportal/components/ConfirmDialog.js.map +1 -1
- package/dist/devportal/components/DataTable.d.ts.map +1 -1
- package/dist/devportal/components/DataTable.js +31 -34
- package/dist/devportal/components/DataTable.js.map +1 -1
- package/dist/devportal/components/FeatureFlaggedRoute.js +8 -8
- package/dist/devportal/components/FormField.d.ts.map +1 -1
- package/dist/devportal/components/FormField.js +26 -32
- package/dist/devportal/components/FormField.js.map +1 -1
- package/dist/devportal/components/GrantDelegationModal.js +64 -64
- package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
- package/dist/devportal/components/LoadingState.d.ts.map +1 -1
- package/dist/devportal/components/LoadingState.js +5 -8
- package/dist/devportal/components/LoadingState.js.map +1 -1
- package/dist/devportal/components/PageLayout.d.ts.map +1 -1
- package/dist/devportal/components/PageLayout.js +10 -13
- package/dist/devportal/components/PageLayout.js.map +1 -1
- package/dist/devportal/components/PermissionGuard.d.ts.map +1 -1
- package/dist/devportal/components/PermissionGuard.js +11 -14
- package/dist/devportal/components/PermissionGuard.js.map +1 -1
- package/dist/devportal/components/SecretDisplay.d.ts.map +1 -1
- package/dist/devportal/components/SecretDisplay.js +24 -30
- package/dist/devportal/components/SecretDisplay.js.map +1 -1
- package/dist/devportal/components/SectionNav.d.ts.map +1 -1
- package/dist/devportal/components/SectionNav.js +24 -27
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/components/StatusBadge.d.ts.map +1 -1
- package/dist/devportal/components/StatusBadge.js +24 -33
- package/dist/devportal/components/StatusBadge.js.map +1 -1
- package/dist/devportal/index.d.ts +1 -0
- package/dist/devportal/index.d.ts.map +1 -1
- package/dist/devportal/index.js +1 -0
- package/dist/devportal/pages/AdminReviewPage.js +172 -172
- package/dist/devportal/pages/AnalyticsDashboardPage.js +43 -43
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/ApiKeysPage.js +119 -119
- package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +45 -45
- package/dist/devportal/pages/ApplicationDetailPage.js +607 -607
- package/dist/devportal/pages/ApplicationVersionsPage.js +13 -13
- package/dist/devportal/pages/ApplicationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +104 -101
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +45 -45
- package/dist/devportal/pages/CreateApplicationPage.js +38 -38
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +52 -52
- package/dist/devportal/pages/CreateOrganizationPage.js +26 -26
- package/dist/devportal/pages/CreateWebhookPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +48 -48
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/DashboardPage.js +66 -72
- package/dist/devportal/pages/DashboardPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +174 -174
- package/dist/devportal/pages/DocumentationPage.js +93 -93
- package/dist/devportal/pages/EditApplicationPage.js +14 -14
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +76 -76
- package/dist/devportal/pages/OAuthClientDetailPage.js +75 -75
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientsPage.js +64 -64
- package/dist/devportal/pages/OrganizationDetailPage.js +189 -189
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +10 -10
- package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +163 -154
- package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.js +104 -104
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/PublisherProfilePage.js +55 -55
- package/dist/devportal/pages/ResourcesPage.js +60 -60
- package/dist/devportal/pages/RevenueDashboardPage.js +60 -60
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +83 -83
- package/dist/devportal/pages/SellerItemsPage.js +163 -163
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +63 -63
- package/dist/devportal/pages/SettingsPage.js +21 -21
- package/dist/devportal/pages/SetupPage.js +183 -183
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +5 -5
- package/dist/devportal/pages/WebhookDetailPage.js +123 -123
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +118 -118
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/utils/i18n.d.ts +9 -2
- package/dist/devportal/utils/i18n.d.ts.map +1 -1
- package/dist/devportal/utils/i18n.js +13 -10
- package/dist/devportal/utils/i18n.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/translations/en.d.ts +1251 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/translations/en.js +1235 -0
- package/dist/translations/en.js.map +1 -0
- package/package.json +1 -1
|
@@ -11,10 +11,10 @@ import { InputField as g, TextareaField as _ } from "../components/FormField.js"
|
|
|
11
11
|
import { useDevportalPermission as v } from "../hooks/usePermission.js";
|
|
12
12
|
import { DEVPORTAL_PERMISSIONS as y } from "../constants/permissions.js";
|
|
13
13
|
import { useEffect as b, useState as x } from "react";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
14
|
+
import { AlertCircle as S, AppWindow as C, ArrowRight as w, BarChart3 as T, Building2 as E, CheckCircle as D, DollarSign as O, ExternalLink as k, Loader2 as A, Plus as j, Settings as M, Shield as N, TrendingUp as P, Users as F } from "lucide-react";
|
|
15
|
+
import { useParams as ee } from "react-router";
|
|
16
|
+
import { Fragment as I, jsx as L, jsxs as R } from "react/jsx-runtime";
|
|
17
|
+
import { useI18n as z } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
18
18
|
import { EmphasisPanel as B, NextSteps as te } from "@burdenoff/fe-libs/ui";
|
|
19
19
|
import { graphqlFetch as V } from "@burdenoff/fe-libs/shared/graphql";
|
|
20
20
|
//#region src/devportal/pages/OrganizationDetailPage.tsx
|
|
@@ -115,19 +115,19 @@ var Y = {
|
|
|
115
115
|
ADMIN: 2,
|
|
116
116
|
OWNER: 3
|
|
117
117
|
}, X = () => {
|
|
118
|
-
let { navigate: n, basePath: a, setActiveOrgId: o, currentUser: s } = e(), { orgId: l } =
|
|
118
|
+
let { navigate: n, basePath: a, setActiveOrgId: o, currentUser: s } = e(), { orgId: l } = ee(), { t: u } = z(), d = (e, t) => {
|
|
119
119
|
let n = u(e);
|
|
120
120
|
return n === e ? t : n;
|
|
121
121
|
}, [f, p] = x("overview"), m = [
|
|
122
122
|
{
|
|
123
123
|
id: "overview",
|
|
124
124
|
label: d("devportal.overview", "Overview"),
|
|
125
|
-
icon:
|
|
125
|
+
icon: E
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
id: "apps",
|
|
129
129
|
label: d("devportal.applications", "Applications"),
|
|
130
|
-
icon:
|
|
130
|
+
icon: C
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
id: "members",
|
|
@@ -142,14 +142,14 @@ var Y = {
|
|
|
142
142
|
], { data: h, previousData: g, loading: _, error: v } = i({
|
|
143
143
|
variables: { id: l },
|
|
144
144
|
skip: !l
|
|
145
|
-
}), y = h ?? g, { data:
|
|
145
|
+
}), y = h ?? g, { data: w } = r({
|
|
146
146
|
variables: {
|
|
147
147
|
limit: 50,
|
|
148
148
|
organizationId: l
|
|
149
149
|
},
|
|
150
150
|
skip: !l,
|
|
151
151
|
fetchPolicy: "cache-and-network"
|
|
152
|
-
}),
|
|
152
|
+
}), T = (y?.developerOrganization?.members ?? []).map(G), D = (s ? T.find((e) => e.userId === s.id) : void 0)?.role, k = D !== void 0 && Y[D] >= Y.DEVELOPER, j = D !== void 0 && Y[D] >= Y.ADMIN, N = j, P = j, I = m.filter((e) => e.id !== "settings" || j), B = (e) => {
|
|
153
153
|
n?.(`${a}${e}`);
|
|
154
154
|
};
|
|
155
155
|
if (b(() => {
|
|
@@ -161,32 +161,32 @@ var Y = {
|
|
|
161
161
|
if (!l || !e) return;
|
|
162
162
|
let t = window.__breadcrumbRegistry;
|
|
163
163
|
return t?.register(l, e), () => t?.unregister(l);
|
|
164
|
-
}, [l, h?.developerOrganization?.name]), _ && !y) return /* @__PURE__ */
|
|
164
|
+
}, [l, h?.developerOrganization?.name]), _ && !y) return /* @__PURE__ */ L(c, {
|
|
165
165
|
title: d("devportal.loadingDots", "Loading..."),
|
|
166
166
|
backLink: `${a}/organizations`,
|
|
167
167
|
backLabel: d("devportal.backToOrganizations", "Back to Organizations"),
|
|
168
|
-
children: /* @__PURE__ */
|
|
168
|
+
children: /* @__PURE__ */ L("div", {
|
|
169
169
|
className: "flex items-center justify-center py-12",
|
|
170
|
-
children: /* @__PURE__ */
|
|
170
|
+
children: /* @__PURE__ */ L(A, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
171
171
|
})
|
|
172
172
|
});
|
|
173
|
-
if (v || !y?.developerOrganization) return /* @__PURE__ */
|
|
173
|
+
if (v || !y?.developerOrganization) return /* @__PURE__ */ L(c, {
|
|
174
174
|
title: d("devportal.organizationNotFound", "Organization Not Found"),
|
|
175
175
|
backLink: `${a}/organizations`,
|
|
176
176
|
backLabel: d("devportal.backToOrganizations", "Back to Organizations"),
|
|
177
|
-
children: /* @__PURE__ */
|
|
177
|
+
children: /* @__PURE__ */ R("div", {
|
|
178
178
|
className: "flex flex-col items-center justify-center py-12 gap-4",
|
|
179
179
|
children: [
|
|
180
|
-
/* @__PURE__ */
|
|
181
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ L(S, { className: "h-12 w-12 text-status-error-text" }),
|
|
181
|
+
/* @__PURE__ */ L("h2", {
|
|
182
182
|
className: "text-lg font-semibold",
|
|
183
183
|
children: d("devportal.organizationNotFoundLower", "Organization not found")
|
|
184
184
|
}),
|
|
185
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ L("p", {
|
|
186
186
|
className: "text-text-secondary",
|
|
187
187
|
children: v?.message || d("devportal.organizationNotFoundDescription", "The organization you're looking for doesn't exist or you don't have access to it.")
|
|
188
188
|
}),
|
|
189
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ L("button", {
|
|
190
190
|
onClick: () => B("/organizations"),
|
|
191
191
|
className: "mt-4 inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
192
192
|
children: d("devportal.backToOrganizations", "Back to Organizations")
|
|
@@ -194,43 +194,43 @@ var Y = {
|
|
|
194
194
|
]
|
|
195
195
|
})
|
|
196
196
|
});
|
|
197
|
-
let V = W(y.developerOrganization), H =
|
|
198
|
-
return /* @__PURE__ */
|
|
197
|
+
let V = W(y.developerOrganization), H = T, U = w?.applications?.edges?.map((e) => e.node) ?? [];
|
|
198
|
+
return /* @__PURE__ */ R(c, {
|
|
199
199
|
title: V.name,
|
|
200
200
|
description: V.description,
|
|
201
201
|
purpose: d("devportal.orgDetailPurpose", "This is the home for one organization — the apps it owns, the people who can work on them, and its store and billing settings. Invite teammates, add apps, and verify the org so your published listings look trustworthy."),
|
|
202
202
|
backLink: `${a}/organizations`,
|
|
203
203
|
backLabel: d("devportal.backToOrganizations", "Back to Organizations"),
|
|
204
|
-
actions: /* @__PURE__ */
|
|
204
|
+
actions: /* @__PURE__ */ L("div", {
|
|
205
205
|
className: "flex items-center gap-2",
|
|
206
|
-
children: N ? /* @__PURE__ */
|
|
206
|
+
children: N ? /* @__PURE__ */ R("button", {
|
|
207
207
|
onClick: () => n?.(`/billing/earnings?developerOrgId=${encodeURIComponent(V.id)}&developerOrgName=${encodeURIComponent(V.name)}`),
|
|
208
208
|
className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors",
|
|
209
|
-
children: [/* @__PURE__ */
|
|
209
|
+
children: [/* @__PURE__ */ L(O, { size: 16 }), d("devportal.revenue", "Revenue")]
|
|
210
210
|
}) : null
|
|
211
211
|
}),
|
|
212
212
|
children: [
|
|
213
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ L("div", {
|
|
214
214
|
className: "border-b",
|
|
215
|
-
children: /* @__PURE__ */
|
|
215
|
+
children: /* @__PURE__ */ L("nav", {
|
|
216
216
|
className: "-mb-px flex gap-4 overflow-x-auto",
|
|
217
217
|
role: "tablist",
|
|
218
218
|
"aria-label": d("devportal.organizationSections", "Organization sections"),
|
|
219
|
-
children:
|
|
219
|
+
children: I.map((e) => {
|
|
220
220
|
let n = e.icon;
|
|
221
|
-
return /* @__PURE__ */
|
|
221
|
+
return /* @__PURE__ */ R("button", {
|
|
222
222
|
id: `organization-tab-${e.id}`,
|
|
223
223
|
role: "tab",
|
|
224
224
|
"aria-selected": f === e.id,
|
|
225
225
|
"aria-controls": `organization-panel-${e.id}`,
|
|
226
226
|
onClick: () => p(e.id),
|
|
227
227
|
className: t("flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors", f === e.id ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary hover:border-muted-foreground"),
|
|
228
|
-
children: [/* @__PURE__ */
|
|
228
|
+
children: [/* @__PURE__ */ L(n, { size: 16 }), e.label]
|
|
229
229
|
}, e.id);
|
|
230
230
|
})
|
|
231
231
|
})
|
|
232
232
|
}),
|
|
233
|
-
/* @__PURE__ */
|
|
233
|
+
/* @__PURE__ */ L(te, {
|
|
234
234
|
className: "mt-6",
|
|
235
235
|
storageKey: `devportal-org-${V.id}`,
|
|
236
236
|
steps: [
|
|
@@ -238,34 +238,34 @@ var Y = {
|
|
|
238
238
|
id: "invite-members",
|
|
239
239
|
label: d("devportal.inviteMembers", "Invite members"),
|
|
240
240
|
description: d("devportal.orgStepInvite", "Add teammates so they can build alongside you"),
|
|
241
|
-
icon: /* @__PURE__ */
|
|
241
|
+
icon: /* @__PURE__ */ L(F, { size: 16 }),
|
|
242
242
|
onClick: () => p("members")
|
|
243
243
|
}] : [],
|
|
244
244
|
...k ? [{
|
|
245
245
|
id: "create-app",
|
|
246
246
|
label: d("devportal.createApp", "Create App"),
|
|
247
247
|
description: d("devportal.orgStepCreateApp", "Build a new application under this organization"),
|
|
248
|
-
icon: /* @__PURE__ */
|
|
248
|
+
icon: /* @__PURE__ */ L(C, { size: 16 }),
|
|
249
249
|
onClick: () => B("/apps/new")
|
|
250
250
|
}] : [],
|
|
251
251
|
...j ? [{
|
|
252
252
|
id: "settings",
|
|
253
253
|
label: d("devportal.orgStepVerify", "Complete organization profile"),
|
|
254
254
|
description: d("devportal.orgStepVerifyDesc", "Add a logo and details, then request verification"),
|
|
255
|
-
icon: /* @__PURE__ */
|
|
255
|
+
icon: /* @__PURE__ */ L(M, { size: 16 }),
|
|
256
256
|
onClick: () => p("settings"),
|
|
257
257
|
done: !!V.isVerified
|
|
258
258
|
}] : []
|
|
259
259
|
]
|
|
260
260
|
}),
|
|
261
|
-
/* @__PURE__ */
|
|
261
|
+
/* @__PURE__ */ R("div", {
|
|
262
262
|
className: "mt-6",
|
|
263
263
|
id: `organization-panel-${f}`,
|
|
264
264
|
role: "tabpanel",
|
|
265
265
|
"aria-labelledby": `organization-tab-${f}`,
|
|
266
266
|
tabIndex: 0,
|
|
267
267
|
children: [
|
|
268
|
-
f === "overview" && /* @__PURE__ */
|
|
268
|
+
f === "overview" && /* @__PURE__ */ L(Z, {
|
|
269
269
|
org: V,
|
|
270
270
|
apps: U,
|
|
271
271
|
members: H,
|
|
@@ -274,90 +274,90 @@ var Y = {
|
|
|
274
274
|
onNavigate: B,
|
|
275
275
|
onShowApps: () => p("apps")
|
|
276
276
|
}),
|
|
277
|
-
f === "apps" && /* @__PURE__ */
|
|
277
|
+
f === "apps" && /* @__PURE__ */ L(Q, {
|
|
278
278
|
apps: U,
|
|
279
279
|
onNavigate: B,
|
|
280
280
|
canCreateApps: k
|
|
281
281
|
}),
|
|
282
|
-
f === "members" && /* @__PURE__ */
|
|
282
|
+
f === "members" && /* @__PURE__ */ L($, {
|
|
283
283
|
members: H,
|
|
284
284
|
onNavigate: B,
|
|
285
285
|
orgId: V.id,
|
|
286
286
|
canInviteMembers: P
|
|
287
287
|
}),
|
|
288
|
-
f === "settings" && j && /* @__PURE__ */
|
|
288
|
+
f === "settings" && j && /* @__PURE__ */ L(ne, { org: V })
|
|
289
289
|
]
|
|
290
290
|
})
|
|
291
291
|
]
|
|
292
292
|
});
|
|
293
293
|
}, Z = ({ org: e, apps: t, members: r, canCreateApps: i, canViewRevenue: a, onNavigate: o, onShowApps: s }) => {
|
|
294
|
-
let { t: c } =
|
|
294
|
+
let { t: c } = z(), m = (e, t) => {
|
|
295
295
|
let n = c(e);
|
|
296
296
|
return n === e ? t : n;
|
|
297
297
|
};
|
|
298
|
-
return /* @__PURE__ */
|
|
298
|
+
return /* @__PURE__ */ R("div", {
|
|
299
299
|
className: "grid gap-6 lg:grid-cols-3",
|
|
300
|
-
children: [/* @__PURE__ */
|
|
300
|
+
children: [/* @__PURE__ */ R("div", {
|
|
301
301
|
className: "lg:col-span-2 space-y-6",
|
|
302
|
-
children: [/* @__PURE__ */
|
|
302
|
+
children: [/* @__PURE__ */ L(B, { children: /* @__PURE__ */ R(p, {
|
|
303
303
|
columns: a ? 4 : 3,
|
|
304
304
|
children: [
|
|
305
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ L(f, {
|
|
306
306
|
title: m("devportal.publishedApps", "Published Apps"),
|
|
307
307
|
value: `${e.publishedApps}/${e.totalApps}`,
|
|
308
|
-
icon: /* @__PURE__ */
|
|
308
|
+
icon: /* @__PURE__ */ L(C, { size: 20 })
|
|
309
309
|
}),
|
|
310
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ L(f, {
|
|
311
311
|
title: m("devportal.totalInstalls", "Total Installs"),
|
|
312
312
|
value: e.totalInstalls.toLocaleString(),
|
|
313
|
-
icon: /* @__PURE__ */
|
|
313
|
+
icon: /* @__PURE__ */ L(P, { size: 20 })
|
|
314
314
|
}),
|
|
315
|
-
a ? /* @__PURE__ */
|
|
315
|
+
a ? /* @__PURE__ */ L(f, {
|
|
316
316
|
title: m("devportal.totalRevenue", "Total Revenue"),
|
|
317
317
|
value: `$${e.totalRevenue.toLocaleString()}`,
|
|
318
|
-
icon: /* @__PURE__ */
|
|
318
|
+
icon: /* @__PURE__ */ L(O, { size: 20 })
|
|
319
319
|
}) : null,
|
|
320
|
-
/* @__PURE__ */
|
|
320
|
+
/* @__PURE__ */ L(f, {
|
|
321
321
|
title: m("devportal.avgRating", "Avg Rating"),
|
|
322
322
|
value: e.averageRating ? `${e.averageRating.toFixed(1)} ★` : m("devportal.notAvailable", "N/A"),
|
|
323
|
-
icon: /* @__PURE__ */
|
|
323
|
+
icon: /* @__PURE__ */ L(T, { size: 20 })
|
|
324
324
|
})
|
|
325
325
|
]
|
|
326
|
-
}) }), /* @__PURE__ */
|
|
326
|
+
}) }), /* @__PURE__ */ L(l, {
|
|
327
327
|
title: m("devportal.recentApplications", "Recent Applications"),
|
|
328
|
-
actions: /* @__PURE__ */
|
|
328
|
+
actions: /* @__PURE__ */ R("button", {
|
|
329
329
|
onClick: s,
|
|
330
330
|
className: "text-sm text-primary hover:underline flex items-center gap-1",
|
|
331
331
|
children: [
|
|
332
332
|
m("devportal.viewAll", "View all"),
|
|
333
333
|
" ",
|
|
334
|
-
/* @__PURE__ */
|
|
334
|
+
/* @__PURE__ */ L(w, { size: 14 })
|
|
335
335
|
]
|
|
336
336
|
}),
|
|
337
|
-
children: t.length > 0 ? /* @__PURE__ */
|
|
337
|
+
children: t.length > 0 ? /* @__PURE__ */ L("div", {
|
|
338
338
|
className: "space-y-2",
|
|
339
|
-
children: t.slice(0, 3).map((e) => /* @__PURE__ */
|
|
339
|
+
children: t.slice(0, 3).map((e) => /* @__PURE__ */ L(d, {
|
|
340
340
|
app: e,
|
|
341
341
|
onClick: () => o(`/apps/${e.id}`)
|
|
342
342
|
}, e.id))
|
|
343
|
-
}) : /* @__PURE__ */
|
|
343
|
+
}) : /* @__PURE__ */ L(n, {
|
|
344
344
|
illustration: "empty-data",
|
|
345
|
-
icon: /* @__PURE__ */
|
|
345
|
+
icon: /* @__PURE__ */ L(C, { size: 24 }),
|
|
346
346
|
title: m("devportal.noApplications", "No applications"),
|
|
347
347
|
description: m("devportal.createYourFirstApplication", "Create your first application"),
|
|
348
|
-
action: i ? /* @__PURE__ */
|
|
348
|
+
action: i ? /* @__PURE__ */ R("button", {
|
|
349
349
|
onClick: () => o("/apps/new"),
|
|
350
350
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
351
|
-
children: [/* @__PURE__ */
|
|
351
|
+
children: [/* @__PURE__ */ L(j, { size: 16 }), m("devportal.createApp", "Create App")]
|
|
352
352
|
}) : void 0
|
|
353
353
|
})
|
|
354
354
|
})]
|
|
355
|
-
}), /* @__PURE__ */
|
|
355
|
+
}), /* @__PURE__ */ R("div", {
|
|
356
356
|
className: "space-y-6",
|
|
357
357
|
children: [
|
|
358
|
-
a ? /* @__PURE__ */
|
|
358
|
+
a ? /* @__PURE__ */ L(l, {
|
|
359
359
|
title: m("devportal.revenueSummary", "Revenue Summary"),
|
|
360
|
-
children: /* @__PURE__ */
|
|
360
|
+
children: /* @__PURE__ */ L(h, { items: [
|
|
361
361
|
{
|
|
362
362
|
label: m("devportal.totalRevenue", "Total Revenue"),
|
|
363
363
|
value: `$${e.totalRevenue.toLocaleString()}`
|
|
@@ -380,31 +380,31 @@ var Y = {
|
|
|
380
380
|
}
|
|
381
381
|
] })
|
|
382
382
|
}) : null,
|
|
383
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ L(l, {
|
|
384
384
|
title: m("devportal.teamMembers", "Team Members"),
|
|
385
|
-
actions: /* @__PURE__ */
|
|
385
|
+
actions: /* @__PURE__ */ L("button", {
|
|
386
386
|
onClick: () => o(`/organizations/${e.id}/members`),
|
|
387
387
|
className: "text-sm text-primary hover:underline",
|
|
388
388
|
children: m("devportal.manage", "Manage")
|
|
389
389
|
}),
|
|
390
|
-
children: /* @__PURE__ */
|
|
390
|
+
children: /* @__PURE__ */ R("div", {
|
|
391
391
|
className: "space-y-2",
|
|
392
|
-
children: [r.slice(0, 3).map((e) => /* @__PURE__ */
|
|
392
|
+
children: [r.slice(0, 3).map((e) => /* @__PURE__ */ L("div", {
|
|
393
393
|
className: "flex items-center justify-between py-2",
|
|
394
|
-
children: /* @__PURE__ */
|
|
394
|
+
children: /* @__PURE__ */ R("div", {
|
|
395
395
|
className: "flex items-center gap-3",
|
|
396
|
-
children: [/* @__PURE__ */
|
|
396
|
+
children: [/* @__PURE__ */ L("div", {
|
|
397
397
|
className: "h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary",
|
|
398
398
|
children: e.email?.charAt(0).toUpperCase() || "U"
|
|
399
|
-
}), /* @__PURE__ */
|
|
399
|
+
}), /* @__PURE__ */ R("div", { children: [/* @__PURE__ */ L("p", {
|
|
400
400
|
className: "text-sm font-medium",
|
|
401
401
|
children: e.email
|
|
402
|
-
}), /* @__PURE__ */
|
|
402
|
+
}), /* @__PURE__ */ L("p", {
|
|
403
403
|
className: "text-xs text-text-secondary",
|
|
404
404
|
children: u[e.role]
|
|
405
405
|
})] })]
|
|
406
406
|
})
|
|
407
|
-
}, e.id)), r.length > 3 && /* @__PURE__ */
|
|
407
|
+
}, e.id)), r.length > 3 && /* @__PURE__ */ R("p", {
|
|
408
408
|
className: "text-xs text-text-secondary",
|
|
409
409
|
children: [
|
|
410
410
|
"+",
|
|
@@ -415,20 +415,20 @@ var Y = {
|
|
|
415
415
|
})]
|
|
416
416
|
})
|
|
417
417
|
}),
|
|
418
|
-
/* @__PURE__ */
|
|
418
|
+
/* @__PURE__ */ L(l, {
|
|
419
419
|
title: m("devportal.links", "Links"),
|
|
420
|
-
children: /* @__PURE__ */
|
|
420
|
+
children: /* @__PURE__ */ R("div", {
|
|
421
421
|
className: "space-y-2",
|
|
422
|
-
children: [e.websiteUrl && /* @__PURE__ */
|
|
422
|
+
children: [e.websiteUrl && /* @__PURE__ */ R("a", {
|
|
423
423
|
href: e.websiteUrl,
|
|
424
424
|
target: "_blank",
|
|
425
425
|
rel: "noopener noreferrer",
|
|
426
426
|
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
427
|
-
children: [/* @__PURE__ */
|
|
428
|
-
}), e.contactEmail && /* @__PURE__ */
|
|
427
|
+
children: [/* @__PURE__ */ L(k, { size: 14 }), m("devportal.website", "Website")]
|
|
428
|
+
}), e.contactEmail && /* @__PURE__ */ R("a", {
|
|
429
429
|
href: `mailto:${e.contactEmail}`,
|
|
430
430
|
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
431
|
-
children: [/* @__PURE__ */
|
|
431
|
+
children: [/* @__PURE__ */ L(k, { size: 14 }), e.contactEmail]
|
|
432
432
|
})]
|
|
433
433
|
})
|
|
434
434
|
})
|
|
@@ -436,78 +436,78 @@ var Y = {
|
|
|
436
436
|
})]
|
|
437
437
|
});
|
|
438
438
|
}, Q = ({ apps: e, onNavigate: t, canCreateApps: r }) => {
|
|
439
|
-
let { t: i } =
|
|
439
|
+
let { t: i } = z(), a = (e, t) => {
|
|
440
440
|
let n = i(e);
|
|
441
441
|
return n === e ? t : n;
|
|
442
442
|
};
|
|
443
|
-
return /* @__PURE__ */
|
|
443
|
+
return /* @__PURE__ */ R("div", {
|
|
444
444
|
className: "space-y-6",
|
|
445
|
-
children: [/* @__PURE__ */
|
|
445
|
+
children: [/* @__PURE__ */ R("div", {
|
|
446
446
|
className: "flex items-center justify-between",
|
|
447
|
-
children: [/* @__PURE__ */
|
|
447
|
+
children: [/* @__PURE__ */ R("p", {
|
|
448
448
|
className: "text-sm text-text-secondary",
|
|
449
449
|
children: [
|
|
450
450
|
e.length,
|
|
451
451
|
" ",
|
|
452
452
|
e.length === 1 ? a("devportal.application", "application") : a("devportal.applications", "applications")
|
|
453
453
|
]
|
|
454
|
-
}), r ? /* @__PURE__ */
|
|
454
|
+
}), r ? /* @__PURE__ */ R("button", {
|
|
455
455
|
onClick: () => t("/apps/new"),
|
|
456
456
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
|
|
457
|
-
children: [/* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ L(j, { size: 16 }), a("devportal.createApp", "Create App")]
|
|
458
458
|
}) : null]
|
|
459
|
-
}), e.length > 0 ? /* @__PURE__ */
|
|
459
|
+
}), e.length > 0 ? /* @__PURE__ */ L("div", {
|
|
460
460
|
className: "space-y-2",
|
|
461
|
-
children: e.map((e) => /* @__PURE__ */
|
|
461
|
+
children: e.map((e) => /* @__PURE__ */ L(d, {
|
|
462
462
|
app: e,
|
|
463
463
|
onClick: () => t(`/apps/${e.id}`)
|
|
464
464
|
}, e.id))
|
|
465
|
-
}) : /* @__PURE__ */
|
|
465
|
+
}) : /* @__PURE__ */ L(n, {
|
|
466
466
|
illustration: "empty-data",
|
|
467
|
-
icon: /* @__PURE__ */
|
|
467
|
+
icon: /* @__PURE__ */ L(C, { size: 32 }),
|
|
468
468
|
title: a("devportal.noApplications", "No applications"),
|
|
469
469
|
description: a("devportal.createFirstAppForOrg", "Create your first application for this organization"),
|
|
470
|
-
action: r ? /* @__PURE__ */
|
|
470
|
+
action: r ? /* @__PURE__ */ R("button", {
|
|
471
471
|
onClick: () => t("/apps/new"),
|
|
472
472
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
473
|
-
children: [/* @__PURE__ */
|
|
473
|
+
children: [/* @__PURE__ */ L(j, { size: 16 }), a("devportal.createApp", "Create App")]
|
|
474
474
|
}) : void 0
|
|
475
475
|
})]
|
|
476
476
|
});
|
|
477
477
|
}, $ = ({ members: e, onNavigate: n, orgId: r, canInviteMembers: i }) => {
|
|
478
|
-
let { t: a } =
|
|
478
|
+
let { t: a } = z(), o = (e, t) => {
|
|
479
479
|
let n = a(e);
|
|
480
480
|
return n === e ? t : n;
|
|
481
481
|
};
|
|
482
|
-
return /* @__PURE__ */
|
|
482
|
+
return /* @__PURE__ */ R("div", {
|
|
483
483
|
className: "space-y-6",
|
|
484
|
-
children: [/* @__PURE__ */
|
|
484
|
+
children: [/* @__PURE__ */ R("div", {
|
|
485
485
|
className: "flex items-center justify-between",
|
|
486
|
-
children: [/* @__PURE__ */
|
|
486
|
+
children: [/* @__PURE__ */ R("p", {
|
|
487
487
|
className: "text-sm text-text-secondary",
|
|
488
488
|
children: [
|
|
489
489
|
e.length,
|
|
490
490
|
" ",
|
|
491
491
|
e.length === 1 ? o("devportal.memberLower", "member") : o("devportal.membersLower", "members")
|
|
492
492
|
]
|
|
493
|
-
}), i ? /* @__PURE__ */
|
|
493
|
+
}), i ? /* @__PURE__ */ R("button", {
|
|
494
494
|
onClick: () => n(`/organizations/${r}/members`),
|
|
495
495
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
|
|
496
|
-
children: [/* @__PURE__ */
|
|
496
|
+
children: [/* @__PURE__ */ L(j, { size: 16 }), o("devportal.inviteMember", "Invite Member")]
|
|
497
497
|
}) : null]
|
|
498
|
-
}), /* @__PURE__ */
|
|
498
|
+
}), /* @__PURE__ */ L(m, {
|
|
499
499
|
data: e,
|
|
500
500
|
keyField: "id",
|
|
501
501
|
columns: [
|
|
502
502
|
{
|
|
503
503
|
key: "email",
|
|
504
504
|
header: o("devportal.memberColumn", "Member"),
|
|
505
|
-
render: (e) => /* @__PURE__ */
|
|
505
|
+
render: (e) => /* @__PURE__ */ R("div", {
|
|
506
506
|
className: "flex items-center gap-3",
|
|
507
|
-
children: [/* @__PURE__ */
|
|
507
|
+
children: [/* @__PURE__ */ L("div", {
|
|
508
508
|
className: "h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary",
|
|
509
509
|
children: e.email?.charAt(0).toUpperCase() || "U"
|
|
510
|
-
}), /* @__PURE__ */
|
|
510
|
+
}), /* @__PURE__ */ L("span", {
|
|
511
511
|
className: "font-medium",
|
|
512
512
|
children: e.email
|
|
513
513
|
})]
|
|
@@ -516,7 +516,7 @@ var Y = {
|
|
|
516
516
|
{
|
|
517
517
|
key: "role",
|
|
518
518
|
header: o("devportal.roleColumn", "Role"),
|
|
519
|
-
render: (e) => /* @__PURE__ */
|
|
519
|
+
render: (e) => /* @__PURE__ */ L("span", {
|
|
520
520
|
className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium", e.role === "OWNER" ? "bg-accent-purple-subtle text-accent-purple" : e.role === "ADMIN" ? "bg-status-info-bg-subtle text-status-info-text" : e.role === "DEVELOPER" ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-primary"),
|
|
521
521
|
children: u[e.role]
|
|
522
522
|
})
|
|
@@ -530,7 +530,7 @@ var Y = {
|
|
|
530
530
|
})]
|
|
531
531
|
});
|
|
532
532
|
}, ne = ({ org: e }) => {
|
|
533
|
-
let { t } =
|
|
533
|
+
let { t } = z(), { allowed: n } = v(y.ORG_UPDATE), r = (e, n) => {
|
|
534
534
|
let r = t(e);
|
|
535
535
|
return r === e ? n : r;
|
|
536
536
|
}, [i, c] = x({
|
|
@@ -547,7 +547,7 @@ var Y = {
|
|
|
547
547
|
}), [f, p] = x({
|
|
548
548
|
taxId: e.taxId ?? "",
|
|
549
549
|
taxCountry: e.taxCountry ?? ""
|
|
550
|
-
}), [m,
|
|
550
|
+
}), [m, S] = x(null), [C, w] = x(null), [T, E] = x("manual"), [O, k] = x(!1), [j, P] = x(""), [F, ee] = x(""), [B, te] = x(""), [W, G] = x(null), [Y, X] = x(!1), Z = W ?? {
|
|
551
551
|
verificationMethod: e.verificationMethod,
|
|
552
552
|
verificationRequestedAt: e.verificationRequestedAt,
|
|
553
553
|
verificationStatus: e.verificationStatus,
|
|
@@ -556,7 +556,7 @@ var Y = {
|
|
|
556
556
|
}, Q = [];
|
|
557
557
|
i.contactEmail.trim() ? J(i.contactEmail) || Q.push(r("devportal.contactEmailInvalid", "Contact email must be valid")) : Q.push(r("devportal.contactEmailRequired", "Contact email is required")), i.supportEmail.trim() && !J(i.supportEmail) && Q.push(r("devportal.supportEmailInvalid", "Support email must be valid")), i.websiteUrl.trim() ? q(i.websiteUrl) || Q.push(r("devportal.websiteInvalid", "Website URL must be valid")) : Q.push(r("devportal.websiteRequired", "Website URL is required")), u.legalEntityName.trim() || Q.push(r("devportal.legalEntityNameRequired", "Legal entity name is required")), u.legalEntityType.trim() || Q.push(r("devportal.legalEntityTypeRequired", "Entity type is required")), f.taxId.trim() || Q.push(r("devportal.taxIdRequired", "Tax ID is required")), f.taxCountry.trim() ? /^[A-Za-z]{2}$/.test(f.taxCountry.trim()) || Q.push(r("devportal.taxCountryInvalid", "Tax country must be a 2-letter code")) : Q.push(r("devportal.taxCountryRequired", "Tax country is required"));
|
|
558
558
|
let $ = [];
|
|
559
|
-
|
|
559
|
+
T === "domain" && !K(B.trim()) && $.push(r("devportal.verification.errors.domainRequired", "Enter a valid domain like burdenoff.com")), T === "document" && !q(F.trim()) && $.push(r("devportal.verification.errors.evidenceUrlRequired", "Enter a valid evidence URL starting with http:// or https://")), T === "manual" && !j.trim() && $.push(r("devportal.verification.errors.notesRequired", "Add notes so the reviewer knows what to verify"));
|
|
560
560
|
let ne = Q.length === 0 && $.length === 0 && !Y && n, [re, { loading: ie }] = s({ refetchQueries: ["GetOrganization"] }), [ae, { loading: oe }] = a({ refetchQueries: ["GetOrganization"] }), [se, { loading: ce }] = o({ refetchQueries: ["GetOrganization"] });
|
|
561
561
|
b(() => {
|
|
562
562
|
c({
|
|
@@ -582,7 +582,7 @@ var Y = {
|
|
|
582
582
|
}).then((e) => G(e.data?.developerOrganization ?? null)).catch(() => G(null));
|
|
583
583
|
}, [e.id, O]);
|
|
584
584
|
let le = async () => {
|
|
585
|
-
|
|
585
|
+
w(null), S(null);
|
|
586
586
|
try {
|
|
587
587
|
await re({ variables: {
|
|
588
588
|
id: e.id,
|
|
@@ -595,12 +595,12 @@ var Y = {
|
|
|
595
595
|
logoUrl: i.logoUrl.trim() || null,
|
|
596
596
|
bannerUrl: i.bannerUrl.trim() || null
|
|
597
597
|
}
|
|
598
|
-
} }),
|
|
598
|
+
} }), S(r("devportal.organizationUpdated", "Organization details updated"));
|
|
599
599
|
} catch (e) {
|
|
600
|
-
|
|
600
|
+
w(e instanceof Error ? e.message : r("devportal.failedToUpdateOrganization", "Failed to update organization"));
|
|
601
601
|
}
|
|
602
602
|
}, ue = async () => {
|
|
603
|
-
|
|
603
|
+
w(null), S(null);
|
|
604
604
|
try {
|
|
605
605
|
await ae({ variables: {
|
|
606
606
|
id: e.id,
|
|
@@ -608,12 +608,12 @@ var Y = {
|
|
|
608
608
|
legalEntityName: u.legalEntityName.trim() || null,
|
|
609
609
|
legalEntityType: u.legalEntityType.trim() || null
|
|
610
610
|
}
|
|
611
|
-
} }),
|
|
611
|
+
} }), S(r("devportal.legalInfoUpdated", "Legal information updated"));
|
|
612
612
|
} catch (e) {
|
|
613
|
-
|
|
613
|
+
w(e instanceof Error ? e.message : r("devportal.failedToUpdateLegalInfo", "Failed to update legal information"));
|
|
614
614
|
}
|
|
615
615
|
}, de = async () => {
|
|
616
|
-
|
|
616
|
+
w(null), S(null);
|
|
617
617
|
try {
|
|
618
618
|
await se({ variables: {
|
|
619
619
|
id: e.id,
|
|
@@ -621,30 +621,30 @@ var Y = {
|
|
|
621
621
|
taxId: f.taxId.trim() || null,
|
|
622
622
|
taxCountry: f.taxCountry.trim() || null
|
|
623
623
|
}
|
|
624
|
-
} }),
|
|
624
|
+
} }), S(r("devportal.taxInfoUpdated", "Tax information updated"));
|
|
625
625
|
} catch (e) {
|
|
626
|
-
|
|
626
|
+
w(e instanceof Error ? e.message : r("devportal.failedToUpdateTaxInfo", "Failed to update tax information"));
|
|
627
627
|
}
|
|
628
628
|
};
|
|
629
|
-
return /* @__PURE__ */
|
|
629
|
+
return /* @__PURE__ */ R("div", {
|
|
630
630
|
className: "space-y-6 max-w-2xl",
|
|
631
631
|
children: [
|
|
632
|
-
|
|
632
|
+
C && /* @__PURE__ */ L("div", {
|
|
633
633
|
className: "rounded-md border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text",
|
|
634
|
-
children:
|
|
634
|
+
children: C
|
|
635
635
|
}),
|
|
636
|
-
m && /* @__PURE__ */
|
|
636
|
+
m && /* @__PURE__ */ L("div", {
|
|
637
637
|
className: "rounded-md border border-status-success-bg bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text",
|
|
638
638
|
children: m
|
|
639
639
|
}),
|
|
640
|
-
/* @__PURE__ */
|
|
640
|
+
/* @__PURE__ */ L(l, {
|
|
641
641
|
title: r("devportal.organizationDetails", "Organization Details"),
|
|
642
|
-
children: /* @__PURE__ */
|
|
642
|
+
children: /* @__PURE__ */ R("div", {
|
|
643
643
|
className: "space-y-4",
|
|
644
644
|
children: [
|
|
645
|
-
/* @__PURE__ */
|
|
645
|
+
/* @__PURE__ */ R("div", {
|
|
646
646
|
className: "grid gap-4 sm:grid-cols-2",
|
|
647
|
-
children: [/* @__PURE__ */
|
|
647
|
+
children: [/* @__PURE__ */ L(g, {
|
|
648
648
|
label: r("devportal.organizationName", "Organization Name"),
|
|
649
649
|
value: i.name,
|
|
650
650
|
onChange: (e) => c((t) => ({
|
|
@@ -653,14 +653,14 @@ var Y = {
|
|
|
653
653
|
})),
|
|
654
654
|
disabled: !n,
|
|
655
655
|
required: !0
|
|
656
|
-
}), /* @__PURE__ */
|
|
656
|
+
}), /* @__PURE__ */ L(g, {
|
|
657
657
|
label: r("devportal.slug", "Slug"),
|
|
658
658
|
value: e.slug,
|
|
659
659
|
disabled: !0,
|
|
660
660
|
hint: r("devportal.slugReadOnly", "Slug cannot be changed here")
|
|
661
661
|
})]
|
|
662
662
|
}),
|
|
663
|
-
/* @__PURE__ */
|
|
663
|
+
/* @__PURE__ */ L(_, {
|
|
664
664
|
label: r("devportal.description", "Description"),
|
|
665
665
|
value: i.description,
|
|
666
666
|
onChange: (e) => c((t) => ({
|
|
@@ -670,10 +670,10 @@ var Y = {
|
|
|
670
670
|
disabled: !n,
|
|
671
671
|
rows: 4
|
|
672
672
|
}),
|
|
673
|
-
/* @__PURE__ */
|
|
673
|
+
/* @__PURE__ */ R("div", {
|
|
674
674
|
className: "grid gap-4 sm:grid-cols-2",
|
|
675
675
|
children: [
|
|
676
|
-
/* @__PURE__ */
|
|
676
|
+
/* @__PURE__ */ L(g, {
|
|
677
677
|
label: r("devportal.website", "Website"),
|
|
678
678
|
type: "url",
|
|
679
679
|
value: i.websiteUrl,
|
|
@@ -683,7 +683,7 @@ var Y = {
|
|
|
683
683
|
})),
|
|
684
684
|
disabled: !n
|
|
685
685
|
}),
|
|
686
|
-
/* @__PURE__ */
|
|
686
|
+
/* @__PURE__ */ L(g, {
|
|
687
687
|
label: r("devportal.contactEmail", "Contact Email"),
|
|
688
688
|
type: "email",
|
|
689
689
|
value: i.contactEmail,
|
|
@@ -693,7 +693,7 @@ var Y = {
|
|
|
693
693
|
})),
|
|
694
694
|
disabled: !n
|
|
695
695
|
}),
|
|
696
|
-
/* @__PURE__ */
|
|
696
|
+
/* @__PURE__ */ L(g, {
|
|
697
697
|
label: r("devportal.supportEmail", "Support Email"),
|
|
698
698
|
type: "email",
|
|
699
699
|
value: i.supportEmail,
|
|
@@ -703,7 +703,7 @@ var Y = {
|
|
|
703
703
|
})),
|
|
704
704
|
disabled: !n
|
|
705
705
|
}),
|
|
706
|
-
/* @__PURE__ */
|
|
706
|
+
/* @__PURE__ */ L(g, {
|
|
707
707
|
label: r("devportal.logoUrl", "Logo URL"),
|
|
708
708
|
type: "url",
|
|
709
709
|
value: i.logoUrl,
|
|
@@ -715,7 +715,7 @@ var Y = {
|
|
|
715
715
|
})
|
|
716
716
|
]
|
|
717
717
|
}),
|
|
718
|
-
/* @__PURE__ */
|
|
718
|
+
/* @__PURE__ */ L(g, {
|
|
719
719
|
label: r("devportal.bannerUrl", "Banner URL"),
|
|
720
720
|
type: "url",
|
|
721
721
|
value: i.bannerUrl,
|
|
@@ -725,10 +725,10 @@ var Y = {
|
|
|
725
725
|
})),
|
|
726
726
|
disabled: !n
|
|
727
727
|
}),
|
|
728
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ L(h, { items: [
|
|
729
729
|
{
|
|
730
730
|
label: r("devportal.organizationId", "Organization ID"),
|
|
731
|
-
value: /* @__PURE__ */
|
|
731
|
+
value: /* @__PURE__ */ L("code", {
|
|
732
732
|
className: "text-xs",
|
|
733
733
|
children: e.id
|
|
734
734
|
})
|
|
@@ -750,31 +750,31 @@ var Y = {
|
|
|
750
750
|
value: `${(e.platformFeeRate * 100).toFixed(0)}%`
|
|
751
751
|
}
|
|
752
752
|
] }),
|
|
753
|
-
/* @__PURE__ */
|
|
753
|
+
/* @__PURE__ */ L("div", {
|
|
754
754
|
className: "flex justify-end",
|
|
755
|
-
children: /* @__PURE__ */
|
|
755
|
+
children: /* @__PURE__ */ R("button", {
|
|
756
756
|
type: "button",
|
|
757
757
|
disabled: !n || ie,
|
|
758
758
|
onClick: () => void le(),
|
|
759
759
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
760
|
-
children: [ie ? /* @__PURE__ */
|
|
760
|
+
children: [ie ? /* @__PURE__ */ L(A, {
|
|
761
761
|
size: 14,
|
|
762
762
|
className: "animate-spin"
|
|
763
|
-
}) : /* @__PURE__ */
|
|
763
|
+
}) : /* @__PURE__ */ L(M, { size: 14 }), r("devportal.saveChanges", "Save Changes")]
|
|
764
764
|
})
|
|
765
765
|
})
|
|
766
766
|
]
|
|
767
767
|
})
|
|
768
768
|
}),
|
|
769
|
-
/* @__PURE__ */
|
|
769
|
+
/* @__PURE__ */ L(l, {
|
|
770
770
|
title: r("devportal.legalInformation", "Legal Information"),
|
|
771
|
-
children: /* @__PURE__ */
|
|
771
|
+
children: /* @__PURE__ */ R("div", {
|
|
772
772
|
className: "space-y-4",
|
|
773
773
|
children: [
|
|
774
|
-
/* @__PURE__ */
|
|
774
|
+
/* @__PURE__ */ R("div", {
|
|
775
775
|
className: "grid gap-4 sm:grid-cols-2",
|
|
776
776
|
children: [
|
|
777
|
-
/* @__PURE__ */
|
|
777
|
+
/* @__PURE__ */ L(g, {
|
|
778
778
|
label: r("devportal.legalEntityName", "Legal Entity Name"),
|
|
779
779
|
value: u.legalEntityName,
|
|
780
780
|
onChange: (e) => d((t) => ({
|
|
@@ -783,7 +783,7 @@ var Y = {
|
|
|
783
783
|
})),
|
|
784
784
|
disabled: !n
|
|
785
785
|
}),
|
|
786
|
-
/* @__PURE__ */
|
|
786
|
+
/* @__PURE__ */ L(g, {
|
|
787
787
|
label: r("devportal.entityType", "Entity Type"),
|
|
788
788
|
value: u.legalEntityType,
|
|
789
789
|
onChange: (e) => d((t) => ({
|
|
@@ -792,7 +792,7 @@ var Y = {
|
|
|
792
792
|
})),
|
|
793
793
|
disabled: !n
|
|
794
794
|
}),
|
|
795
|
-
/* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ L(g, {
|
|
796
796
|
label: r("devportal.taxId", "Tax ID"),
|
|
797
797
|
value: f.taxId,
|
|
798
798
|
onChange: (e) => p((t) => ({
|
|
@@ -801,7 +801,7 @@ var Y = {
|
|
|
801
801
|
})),
|
|
802
802
|
disabled: !n
|
|
803
803
|
}),
|
|
804
|
-
/* @__PURE__ */
|
|
804
|
+
/* @__PURE__ */ L(g, {
|
|
805
805
|
label: r("devportal.taxCountry", "Tax Country"),
|
|
806
806
|
value: f.taxCountry,
|
|
807
807
|
onChange: (e) => p((t) => ({
|
|
@@ -812,37 +812,37 @@ var Y = {
|
|
|
812
812
|
})
|
|
813
813
|
]
|
|
814
814
|
}),
|
|
815
|
-
/* @__PURE__ */
|
|
815
|
+
/* @__PURE__ */ L(h, { items: [{
|
|
816
816
|
label: r("devportal.taxForm", "Tax Form"),
|
|
817
817
|
value: e.taxFormType || r("devportal.notSubmitted", "Not submitted")
|
|
818
818
|
}, {
|
|
819
819
|
label: r("devportal.taxFormStatus", "Tax Form Status"),
|
|
820
|
-
value: e.taxFormType ? e.taxFormVerified ? /* @__PURE__ */
|
|
820
|
+
value: e.taxFormType ? e.taxFormVerified ? /* @__PURE__ */ R("span", {
|
|
821
821
|
className: "text-status-success-text flex items-center gap-1",
|
|
822
822
|
children: [
|
|
823
|
-
/* @__PURE__ */
|
|
823
|
+
/* @__PURE__ */ L(D, { size: 14 }),
|
|
824
824
|
" ",
|
|
825
825
|
r("devportal.verified", "Verified")
|
|
826
826
|
]
|
|
827
827
|
}) : r("devportal.pendingVerification", "Pending verification") : r("devportal.notSubmitted", "Not submitted")
|
|
828
828
|
}] }),
|
|
829
|
-
/* @__PURE__ */
|
|
829
|
+
/* @__PURE__ */ R("div", {
|
|
830
830
|
className: "flex justify-end gap-2",
|
|
831
|
-
children: [/* @__PURE__ */
|
|
831
|
+
children: [/* @__PURE__ */ R("button", {
|
|
832
832
|
type: "button",
|
|
833
833
|
disabled: !n || oe,
|
|
834
834
|
onClick: () => void ue(),
|
|
835
835
|
className: "inline-flex items-center gap-2 rounded-md border border-border-seam px-4 py-2 text-sm font-medium hover:bg-bg-sunken disabled:opacity-50",
|
|
836
|
-
children: [oe ? /* @__PURE__ */
|
|
836
|
+
children: [oe ? /* @__PURE__ */ L(A, {
|
|
837
837
|
size: 14,
|
|
838
838
|
className: "animate-spin"
|
|
839
839
|
}) : null, r("devportal.saveLegalInfo", "Save Legal Info")]
|
|
840
|
-
}), /* @__PURE__ */
|
|
840
|
+
}), /* @__PURE__ */ R("button", {
|
|
841
841
|
type: "button",
|
|
842
842
|
disabled: !n || ce,
|
|
843
843
|
onClick: () => void de(),
|
|
844
844
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
845
|
-
children: [ce ? /* @__PURE__ */
|
|
845
|
+
children: [ce ? /* @__PURE__ */ L(A, {
|
|
846
846
|
size: 14,
|
|
847
847
|
className: "animate-spin"
|
|
848
848
|
}) : null, r("devportal.saveTaxInfo", "Save Tax Info")]
|
|
@@ -851,14 +851,14 @@ var Y = {
|
|
|
851
851
|
]
|
|
852
852
|
})
|
|
853
853
|
}),
|
|
854
|
-
/* @__PURE__ */
|
|
854
|
+
/* @__PURE__ */ R(l, {
|
|
855
855
|
title: r("devportal.verificationStatus", "Verification Status"),
|
|
856
|
-
children: [/* @__PURE__ */
|
|
856
|
+
children: [/* @__PURE__ */ L(h, { items: [{
|
|
857
857
|
label: r("devportal.verifiedLabel", "Verified"),
|
|
858
|
-
value: Z.verificationStatus === "VERIFIED" ? /* @__PURE__ */
|
|
858
|
+
value: Z.verificationStatus === "VERIFIED" ? /* @__PURE__ */ R("span", {
|
|
859
859
|
className: "text-status-success-text flex items-center gap-1",
|
|
860
860
|
children: [
|
|
861
|
-
/* @__PURE__ */
|
|
861
|
+
/* @__PURE__ */ L(D, { size: 14 }),
|
|
862
862
|
" ",
|
|
863
863
|
r("devportal.verifiedVia", "Verified via"),
|
|
864
864
|
" ",
|
|
@@ -867,27 +867,27 @@ var Y = {
|
|
|
867
867
|
}) : Z.verificationStatus === "PENDING" ? r("devportal.pendingVerification", "Pending verification") : Z.verificationStatus === "REJECTED" ? r("devportal.verificationRejected", "Rejected") : r("devportal.notVerified", "Not verified")
|
|
868
868
|
}, {
|
|
869
869
|
label: r("devportal.certifiedLabel", "Certified"),
|
|
870
|
-
value: e.isCertified ? /* @__PURE__ */
|
|
870
|
+
value: e.isCertified ? /* @__PURE__ */ R("span", {
|
|
871
871
|
className: "text-accent-blue flex items-center gap-1",
|
|
872
872
|
children: [
|
|
873
|
-
/* @__PURE__ */
|
|
873
|
+
/* @__PURE__ */ L(N, { size: 14 }),
|
|
874
874
|
" ",
|
|
875
875
|
r("devportal.certifiedUntil", "Certified until"),
|
|
876
876
|
" ",
|
|
877
877
|
e.certificationExpiry ? new Date(e.certificationExpiry).toLocaleDateString() : "N/A"
|
|
878
878
|
]
|
|
879
879
|
}) : r("devportal.notCertified", "Not certified")
|
|
880
|
-
}] }), Z.verificationStatus !== "VERIFIED" && /* @__PURE__ */
|
|
880
|
+
}] }), Z.verificationStatus !== "VERIFIED" && /* @__PURE__ */ L("div", {
|
|
881
881
|
className: "mt-4 rounded-md border border-border-subtle p-4 space-y-3",
|
|
882
|
-
children: O ? /* @__PURE__ */
|
|
882
|
+
children: O ? /* @__PURE__ */ R("p", {
|
|
883
883
|
className: "text-sm text-status-success-text flex items-center gap-2",
|
|
884
|
-
children: [/* @__PURE__ */
|
|
885
|
-
}) : /* @__PURE__ */
|
|
886
|
-
/* @__PURE__ */
|
|
884
|
+
children: [/* @__PURE__ */ L(D, { size: 14 }), r("devportal.verificationRequested", "Verification request submitted. Our team will review and contact you.")]
|
|
885
|
+
}) : /* @__PURE__ */ R(I, { children: [
|
|
886
|
+
/* @__PURE__ */ L("p", {
|
|
887
887
|
className: "text-sm text-text-secondary",
|
|
888
888
|
children: r("devportal.requestVerificationHint", "Get your organization verified to build trust with users. Choose a verification method:")
|
|
889
889
|
}),
|
|
890
|
-
Z.verificationStatus === "PENDING" && /* @__PURE__ */
|
|
890
|
+
Z.verificationStatus === "PENDING" && /* @__PURE__ */ R("div", {
|
|
891
891
|
className: "rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary",
|
|
892
892
|
children: [
|
|
893
893
|
r("devportal.pendingVerification", "Pending verification"),
|
|
@@ -895,69 +895,69 @@ var Y = {
|
|
|
895
895
|
Z.verificationRequestNotes ? ` · ${Z.verificationRequestNotes}` : ""
|
|
896
896
|
]
|
|
897
897
|
}),
|
|
898
|
-
Z.verificationStatus === "REJECTED" && Z.verificationRejectedReason && /* @__PURE__ */
|
|
898
|
+
Z.verificationStatus === "REJECTED" && Z.verificationRejectedReason && /* @__PURE__ */ L("div", {
|
|
899
899
|
className: "rounded-md border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text",
|
|
900
900
|
children: Z.verificationRejectedReason
|
|
901
901
|
}),
|
|
902
|
-
Q.length > 0 && /* @__PURE__ */
|
|
902
|
+
Q.length > 0 && /* @__PURE__ */ R("div", {
|
|
903
903
|
className: "rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary",
|
|
904
|
-
children: [/* @__PURE__ */
|
|
904
|
+
children: [/* @__PURE__ */ L("div", {
|
|
905
905
|
className: "font-medium text-text-primary",
|
|
906
906
|
children: r("devportal.completeBeforeVerification", "Complete these details before submitting for review")
|
|
907
|
-
}), /* @__PURE__ */
|
|
907
|
+
}), /* @__PURE__ */ L("ul", {
|
|
908
908
|
className: "mt-2 list-disc pl-5 space-y-1",
|
|
909
|
-
children: Q.map((e) => /* @__PURE__ */
|
|
909
|
+
children: Q.map((e) => /* @__PURE__ */ L("li", { children: e }, e))
|
|
910
910
|
})]
|
|
911
911
|
}),
|
|
912
|
-
Z.verificationStatus !== "PENDING" && /* @__PURE__ */
|
|
913
|
-
/* @__PURE__ */
|
|
912
|
+
Z.verificationStatus !== "PENDING" && /* @__PURE__ */ R(I, { children: [
|
|
913
|
+
/* @__PURE__ */ L("div", {
|
|
914
914
|
className: "flex gap-2 flex-wrap",
|
|
915
915
|
children: [
|
|
916
916
|
"domain",
|
|
917
917
|
"document",
|
|
918
918
|
"manual"
|
|
919
|
-
].map((e) => /* @__PURE__ */
|
|
919
|
+
].map((e) => /* @__PURE__ */ L("button", {
|
|
920
920
|
type: "button",
|
|
921
|
-
onClick: () =>
|
|
922
|
-
className: `rounded-md border px-3 py-1 text-xs font-medium transition-colors ${
|
|
921
|
+
onClick: () => E(e),
|
|
922
|
+
className: `rounded-md border px-3 py-1 text-xs font-medium transition-colors ${T === e ? "bg-action-primary-bg text-action-primary-text border-primary" : "border-border-subtle hover:bg-bg-sunken"}`,
|
|
923
923
|
children: e === "domain" ? r("devportal.domainVerification", "Domain") : e === "document" ? r("devportal.documentVerification", "Document") : r("devportal.manualVerification", "Manual review")
|
|
924
924
|
}, e))
|
|
925
925
|
}),
|
|
926
|
-
|
|
926
|
+
T === "domain" ? /* @__PURE__ */ L(g, {
|
|
927
927
|
label: r("devportal.domainVerification", "Domain"),
|
|
928
928
|
value: B,
|
|
929
929
|
onChange: (e) => te(e.target.value),
|
|
930
930
|
placeholder: "example.com"
|
|
931
|
-
}) :
|
|
931
|
+
}) : T === "document" ? /* @__PURE__ */ L(g, {
|
|
932
932
|
label: r("devportal.evidenceUrl", "Evidence URL"),
|
|
933
933
|
value: F,
|
|
934
|
-
onChange: (e) =>
|
|
934
|
+
onChange: (e) => ee(e.target.value),
|
|
935
935
|
placeholder: "https://..."
|
|
936
936
|
}) : null,
|
|
937
|
-
/* @__PURE__ */
|
|
937
|
+
/* @__PURE__ */ L(_, {
|
|
938
938
|
label: r("devportal.notes", "Notes"),
|
|
939
939
|
value: j,
|
|
940
940
|
onChange: (e) => P(e.target.value),
|
|
941
941
|
placeholder: "What should reviewers validate?"
|
|
942
942
|
}),
|
|
943
|
-
/* @__PURE__ */
|
|
943
|
+
/* @__PURE__ */ R("button", {
|
|
944
944
|
type: "button",
|
|
945
945
|
disabled: !ne,
|
|
946
946
|
onClick: () => void (async () => {
|
|
947
947
|
let t = B.trim(), n = F.trim(), a = j.trim();
|
|
948
|
-
if (
|
|
949
|
-
|
|
948
|
+
if (T === "domain" && !K(t)) {
|
|
949
|
+
w(r("devportal.verification.errors.domainRequired", "Enter a valid domain like burdenoff.com"));
|
|
950
950
|
return;
|
|
951
951
|
}
|
|
952
|
-
if (
|
|
953
|
-
|
|
952
|
+
if (T === "document" && !q(n)) {
|
|
953
|
+
w(r("devportal.verification.errors.evidenceUrlRequired", "Enter a valid evidence URL starting with http:// or https://"));
|
|
954
954
|
return;
|
|
955
955
|
}
|
|
956
|
-
if (
|
|
957
|
-
|
|
956
|
+
if (T === "manual" && !a) {
|
|
957
|
+
w(r("devportal.verification.errors.notesRequired", "Add notes so the reviewer knows what to verify"));
|
|
958
958
|
return;
|
|
959
959
|
}
|
|
960
|
-
|
|
960
|
+
w(null), S(null), X(!0);
|
|
961
961
|
try {
|
|
962
962
|
await re({ variables: {
|
|
963
963
|
id: e.id,
|
|
@@ -988,29 +988,29 @@ var Y = {
|
|
|
988
988
|
query: U,
|
|
989
989
|
variables: {
|
|
990
990
|
id: e.id,
|
|
991
|
-
method:
|
|
991
|
+
method: T,
|
|
992
992
|
notes: a || null,
|
|
993
|
-
evidenceUrl:
|
|
994
|
-
domain:
|
|
993
|
+
evidenceUrl: T === "domain" ? null : n || null,
|
|
994
|
+
domain: T === "domain" && t || null
|
|
995
995
|
}
|
|
996
996
|
});
|
|
997
997
|
if (o.errors?.length) throw Error(o.errors[0]?.message || "Verification request failed");
|
|
998
|
-
k(!0),
|
|
998
|
+
k(!0), S(r("devportal.verificationRequested", "Verification request submitted. Our team will review and contact you.")), G((await V({
|
|
999
999
|
gateway: "global",
|
|
1000
1000
|
query: H,
|
|
1001
1001
|
variables: { id: e.id }
|
|
1002
1002
|
})).data?.developerOrganization ?? null);
|
|
1003
1003
|
} catch (e) {
|
|
1004
|
-
|
|
1004
|
+
w(e instanceof Error ? e.message : r("devportal.verificationRequestFailed", "Verification request failed"));
|
|
1005
1005
|
} finally {
|
|
1006
1006
|
X(!1);
|
|
1007
1007
|
}
|
|
1008
1008
|
})(),
|
|
1009
1009
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
1010
|
-
children: [Y ? /* @__PURE__ */
|
|
1010
|
+
children: [Y ? /* @__PURE__ */ L(A, {
|
|
1011
1011
|
size: 14,
|
|
1012
1012
|
className: "animate-spin"
|
|
1013
|
-
}) : /* @__PURE__ */
|
|
1013
|
+
}) : /* @__PURE__ */ L(N, { size: 14 }), r("devportal.requestVerification", "Request Verification")]
|
|
1014
1014
|
})
|
|
1015
1015
|
] })
|
|
1016
1016
|
] })
|