@burdenoff/microfe-devportal 2026.609.3 → 2026.611.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.
- package/dist/devportal/DevportalRoot.js +6 -1
- package/dist/devportal/DevportalRoot.js.map +1 -1
- package/dist/devportal/DevportalRoutes.js +169 -158
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/hooks/usePackageUpload.js +120 -0
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -0
- package/dist/devportal/pages/AnalyticsDashboardPage.js +73 -62
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +89 -82
- package/dist/devportal/pages/AppLogsPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +948 -367
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +56 -45
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +30 -32
- package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +8 -3
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +4 -4
- package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
- package/dist/devportal/pages/CreateOrganizationPage.js +233 -228
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +159 -148
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +1 -1
- package/dist/devportal/pages/DelegationsPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +25 -17
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +159 -153
- package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientsPage.js +2 -2
- package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.js +158 -153
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +223 -212
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.js +172 -165
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/ResourcesPage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.js +405 -0
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -0
- package/dist/devportal/pages/SetupPage.js +170 -217
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +76 -97
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/pages/WebhookDetailPage.js +172 -154
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +218 -200
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/providers/DevportalProvider.js +16 -13
- package/dist/devportal/providers/DevportalProvider.js.map +1 -1
- package/dist/devportal/types/index.js.map +1 -1
- package/dist/generated/global-operations.js +310 -225
- package/dist/generated/global-operations.js.map +1 -1
- package/package.json +1 -1
- package/dist/devportal/pages/RevenueRedirectPage.js +0 -14
- package/dist/devportal/pages/RevenueRedirectPage.js.map +0 -1
|
@@ -2,45 +2,17 @@ import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
|
2
2
|
import { useDevportalEventBus as t } from "../events/index.js";
|
|
3
3
|
import { APP_TYPE_LABELS as n } from "../utils/constants.js";
|
|
4
4
|
import { InputField as r, SelectField as i, TextareaField as a } from "../components/FormField.js";
|
|
5
|
-
import { useCreateApplicationMutation as ee, useCreateOrganizationMutation as
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { useCreateApplicationMutation as ee, useCreateBillingAccountMutation as o, useCreateOrganizationMutation as s } from "../../generated/global-operations.js";
|
|
6
|
+
import "../hooks/index.js";
|
|
7
|
+
import { useState as c } from "react";
|
|
8
|
+
import { useI18n as te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
9
|
+
import { AppWindow as l, ArrowRight as u, BookOpen as d, Building2 as f, Check as p, ChevronRight as m, Key as h, Rocket as g } from "lucide-react";
|
|
10
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
10
11
|
//#region src/devportal/pages/SetupPage.tsx
|
|
11
|
-
var
|
|
12
|
-
{
|
|
13
|
-
value: "FREE",
|
|
14
|
-
label: "Free",
|
|
15
|
-
price: "Free",
|
|
16
|
-
apps: "1 app",
|
|
17
|
-
calls: "100K calls/mo"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
value: "DEVELOPER",
|
|
21
|
-
label: "Developer",
|
|
22
|
-
price: "$29/mo",
|
|
23
|
-
apps: "3 apps",
|
|
24
|
-
calls: "1M calls/mo"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
value: "PROFESSIONAL",
|
|
28
|
-
label: "Professional",
|
|
29
|
-
price: "$99/mo",
|
|
30
|
-
apps: "10 apps",
|
|
31
|
-
calls: "10M calls/mo"
|
|
32
|
-
}
|
|
33
|
-
], _ = [{
|
|
34
|
-
value: "",
|
|
35
|
-
label: "Select type…"
|
|
36
|
-
}, ...Object.entries(n).map(([e, t]) => ({
|
|
12
|
+
var y = Object.entries(n).map(([e, t]) => ({
|
|
37
13
|
value: e,
|
|
38
14
|
label: t
|
|
39
|
-
}))
|
|
40
|
-
{
|
|
41
|
-
value: "",
|
|
42
|
-
label: "Select category…"
|
|
43
|
-
},
|
|
15
|
+
})), b = [
|
|
44
16
|
{
|
|
45
17
|
value: "productivity",
|
|
46
18
|
label: "Productivity"
|
|
@@ -90,15 +62,15 @@ var g = [
|
|
|
90
62
|
label: "Other"
|
|
91
63
|
}
|
|
92
64
|
];
|
|
93
|
-
function
|
|
65
|
+
function x(e) {
|
|
94
66
|
return e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
95
67
|
}
|
|
96
|
-
function
|
|
68
|
+
function S() {
|
|
97
69
|
try {
|
|
98
70
|
localStorage.setItem("devportal_setup_dismissed", "1");
|
|
99
71
|
} catch {}
|
|
100
72
|
}
|
|
101
|
-
var
|
|
73
|
+
var C = [
|
|
102
74
|
{
|
|
103
75
|
key: "org",
|
|
104
76
|
label: "Organization"
|
|
@@ -111,50 +83,58 @@ var x = [
|
|
|
111
83
|
key: "done",
|
|
112
84
|
label: "Done"
|
|
113
85
|
}
|
|
114
|
-
],
|
|
115
|
-
let t =
|
|
116
|
-
return /* @__PURE__ */
|
|
86
|
+
], ne = ({ current: e }) => {
|
|
87
|
+
let t = C.findIndex((t) => t.key === e);
|
|
88
|
+
return /* @__PURE__ */ _("div", {
|
|
117
89
|
className: "flex items-center gap-0",
|
|
118
|
-
children:
|
|
90
|
+
children: C.map((e, n) => {
|
|
119
91
|
let r = n < t, i = n === t;
|
|
120
|
-
return /* @__PURE__ */
|
|
92
|
+
return /* @__PURE__ */ v("div", {
|
|
121
93
|
className: "flex items-center",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
94
|
+
children: [/* @__PURE__ */ v("div", {
|
|
123
95
|
className: "flex flex-col items-center gap-1.5",
|
|
124
|
-
children: [/* @__PURE__ */
|
|
96
|
+
children: [/* @__PURE__ */ _("div", {
|
|
125
97
|
className: ["flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold transition-colors", r ? "bg-primary text-primary-foreground" : i ? "bg-primary text-primary-foreground ring-4 ring-primary/20" : "bg-muted text-muted-foreground"].join(" "),
|
|
126
|
-
children: r ? /* @__PURE__ */
|
|
127
|
-
}), /* @__PURE__ */
|
|
98
|
+
children: r ? /* @__PURE__ */ _(p, { size: 14 }) : n + 1
|
|
99
|
+
}), /* @__PURE__ */ _("span", {
|
|
128
100
|
className: ["text-xs font-medium whitespace-nowrap", i ? "text-foreground" : "text-muted-foreground"].join(" "),
|
|
129
101
|
children: e.label
|
|
130
102
|
})]
|
|
131
|
-
}), n <
|
|
103
|
+
}), n < C.length - 1 && /* @__PURE__ */ _("div", { className: ["mx-3 mb-5 h-px w-16 flex-shrink-0 transition-colors", n < t ? "bg-primary" : "bg-border"].join(" ") })]
|
|
132
104
|
}, e.key);
|
|
133
105
|
})
|
|
134
106
|
});
|
|
135
|
-
},
|
|
136
|
-
let { navigate: n, basePath:
|
|
137
|
-
let n =
|
|
107
|
+
}, w = () => {
|
|
108
|
+
let { navigate: n, basePath: p, currentUser: C } = e(), { t: w } = te(), E = t(), D = (e, t) => {
|
|
109
|
+
let n = w(e);
|
|
138
110
|
return n === e ? t : n;
|
|
139
|
-
},
|
|
111
|
+
}, O = (e) => n?.(`${p}${e}`), [k, A] = c("org"), [j, re] = c(null), [M, ie] = c(null), [N, ae] = c(""), [P, F] = c(""), [I, oe] = c(""), [L, R] = c({}), [z, { loading: B }] = s(), [V] = o(), H = () => {
|
|
140
112
|
let e = {};
|
|
141
|
-
return
|
|
113
|
+
return N.trim() ? N.length < 2 && (e.name = D("devportal.orgNameTooShort", "Name must be at least 2 characters")) : e.name = D("devportal.orgNameRequired", "Organization name is required"), P.trim() ? /^[a-z0-9-]+$/.test(P) || (e.slug = D("devportal.slugInvalid", "Lowercase letters, numbers, and hyphens only")) : e.slug = D("devportal.slugRequired", "Slug is required"), R(e), Object.keys(e).length === 0;
|
|
142
114
|
}, U = async () => {
|
|
143
115
|
if (H()) try {
|
|
144
|
-
let e = (await
|
|
145
|
-
name:
|
|
146
|
-
slug:
|
|
147
|
-
description:
|
|
148
|
-
metadata: I === "FREE" ? void 0 : { tier: I }
|
|
116
|
+
let e = (await z({ variables: { input: {
|
|
117
|
+
name: N,
|
|
118
|
+
slug: P || void 0,
|
|
119
|
+
description: I || void 0
|
|
149
120
|
} } })).data?.createDeveloperOrganization?.id;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
121
|
+
if (e) {
|
|
122
|
+
E.emit("devportal.org.created", {
|
|
123
|
+
organizationId: e,
|
|
124
|
+
name: N
|
|
125
|
+
}), re(e);
|
|
126
|
+
try {
|
|
127
|
+
V({ variables: { input: {
|
|
128
|
+
name: N,
|
|
129
|
+
email: C?.email ?? ""
|
|
130
|
+
} } }).catch(() => {});
|
|
131
|
+
} catch {}
|
|
132
|
+
A("app");
|
|
133
|
+
}
|
|
154
134
|
} catch {}
|
|
155
|
-
}, [W, G] =
|
|
135
|
+
}, [W, G] = c(""), [K, se] = c(""), [q, ce] = c(""), [J, le] = c(""), [Y, ue] = c(""), [X, Z] = c({}), [de, { loading: Q }] = ee(), fe = () => {
|
|
156
136
|
let e = {};
|
|
157
|
-
return W.trim() ? W.length < 3 && (e.name =
|
|
137
|
+
return W.trim() ? W.length < 3 && (e.name = D("devportal.nameTooShort", "Name must be at least 3 characters")) : e.name = D("devportal.appNameRequired", "Application name is required"), q || (e.appType = D("devportal.appTypeRequired", "Application type is required")), J || (e.category = D("devportal.categoryRequired", "Category is required")), Y.trim() || (e.shortDescription = D("devportal.shortDescriptionRequired", "Short description is required")), Z(e), Object.keys(e).length === 0;
|
|
158
138
|
}, pe = async () => {
|
|
159
139
|
if (fe()) try {
|
|
160
140
|
let e = (await de({ variables: { input: {
|
|
@@ -164,194 +144,165 @@ var x = [
|
|
|
164
144
|
category: J || void 0,
|
|
165
145
|
shortDescription: Y || void 0,
|
|
166
146
|
visibility: "PRIVATE",
|
|
167
|
-
developerOrganizationId:
|
|
147
|
+
developerOrganizationId: j || void 0
|
|
168
148
|
} } })).data?.createApplication?.id;
|
|
169
|
-
e && (
|
|
149
|
+
e && (E.emit("devportal.app.created", {
|
|
170
150
|
appId: e,
|
|
171
151
|
name: W,
|
|
172
152
|
appType: q,
|
|
173
|
-
organizationId:
|
|
174
|
-
}),
|
|
153
|
+
organizationId: j
|
|
154
|
+
}), ie(e), S(), A("done"));
|
|
175
155
|
} catch {}
|
|
176
156
|
}, $ = () => {
|
|
177
|
-
|
|
157
|
+
S(), O("/");
|
|
178
158
|
};
|
|
179
|
-
return /* @__PURE__ */
|
|
159
|
+
return /* @__PURE__ */ v("main", {
|
|
180
160
|
className: "min-h-screen bg-surface-default",
|
|
181
|
-
children: [/* @__PURE__ */
|
|
161
|
+
children: [/* @__PURE__ */ _("div", {
|
|
182
162
|
className: "border-b border-border-default bg-surface-raised",
|
|
183
|
-
children: /* @__PURE__ */
|
|
163
|
+
children: /* @__PURE__ */ _("div", {
|
|
184
164
|
className: "mx-auto max-w-2xl px-6 py-5",
|
|
185
|
-
children: /* @__PURE__ */
|
|
165
|
+
children: /* @__PURE__ */ v("div", {
|
|
186
166
|
className: "flex items-center justify-between",
|
|
187
|
-
children: [/* @__PURE__ */
|
|
167
|
+
children: [/* @__PURE__ */ v("div", {
|
|
188
168
|
className: "flex items-center gap-3",
|
|
189
|
-
children: [/* @__PURE__ */
|
|
169
|
+
children: [/* @__PURE__ */ _("div", {
|
|
190
170
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
191
|
-
children: /* @__PURE__ */
|
|
192
|
-
}), /* @__PURE__ */
|
|
171
|
+
children: /* @__PURE__ */ _(g, { size: 20 })
|
|
172
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
193
173
|
className: "text-xs font-medium text-muted-foreground",
|
|
194
|
-
children:
|
|
195
|
-
}), /* @__PURE__ */
|
|
174
|
+
children: D("devportal.developerPortal", "Developer Portal")
|
|
175
|
+
}), /* @__PURE__ */ _("h1", {
|
|
196
176
|
className: "text-base font-semibold text-foreground",
|
|
197
|
-
children:
|
|
177
|
+
children: D("devportal.setup.title", "Get set up")
|
|
198
178
|
})] })]
|
|
199
|
-
}),
|
|
179
|
+
}), k !== "done" && /* @__PURE__ */ _("button", {
|
|
200
180
|
type: "button",
|
|
201
181
|
onClick: $,
|
|
202
182
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
203
|
-
children:
|
|
183
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
204
184
|
})]
|
|
205
185
|
})
|
|
206
186
|
})
|
|
207
|
-
}), /* @__PURE__ */
|
|
187
|
+
}), /* @__PURE__ */ v("div", {
|
|
208
188
|
className: "mx-auto max-w-2xl px-6 py-10",
|
|
209
189
|
children: [
|
|
210
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ _("div", {
|
|
211
191
|
className: "mb-10 flex justify-center",
|
|
212
|
-
children: /* @__PURE__ */
|
|
192
|
+
children: /* @__PURE__ */ _(ne, { current: k })
|
|
213
193
|
}),
|
|
214
|
-
|
|
194
|
+
k === "org" && /* @__PURE__ */ v("div", {
|
|
215
195
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
216
196
|
children: [
|
|
217
|
-
/* @__PURE__ */
|
|
197
|
+
/* @__PURE__ */ v("div", {
|
|
218
198
|
className: "mb-6 flex items-center gap-3",
|
|
219
|
-
children: [/* @__PURE__ */
|
|
199
|
+
children: [/* @__PURE__ */ _("div", {
|
|
220
200
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
221
|
-
children: /* @__PURE__ */
|
|
222
|
-
}), /* @__PURE__ */
|
|
201
|
+
children: /* @__PURE__ */ _(f, { size: 20 })
|
|
202
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
|
|
223
203
|
className: "text-lg font-semibold text-foreground",
|
|
224
|
-
children:
|
|
225
|
-
}), /* @__PURE__ */
|
|
204
|
+
children: D("devportal.setup.orgTitle", "Set up your organization")
|
|
205
|
+
}), /* @__PURE__ */ _("p", {
|
|
226
206
|
className: "text-sm text-muted-foreground",
|
|
227
|
-
children:
|
|
207
|
+
children: D("devportal.setup.orgSubtitle", "This groups your apps and teams under one publisher identity.")
|
|
228
208
|
})] })]
|
|
229
209
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ v("div", {
|
|
231
211
|
className: "space-y-5",
|
|
232
212
|
children: [
|
|
233
|
-
/* @__PURE__ */
|
|
234
|
-
label:
|
|
235
|
-
value:
|
|
213
|
+
/* @__PURE__ */ _(r, {
|
|
214
|
+
label: D("devportal.organizationName", "Organization Name"),
|
|
215
|
+
value: N,
|
|
236
216
|
onChange: (e) => {
|
|
237
|
-
|
|
217
|
+
ae(e.target.value), (!P || P === x(N)) && F(x(e.target.value)), R((e) => ({
|
|
238
218
|
...e,
|
|
239
219
|
name: void 0
|
|
240
220
|
}));
|
|
241
221
|
},
|
|
242
|
-
placeholder:
|
|
222
|
+
placeholder: D("devportal.organizationNamePlaceholder", "Acme Development"),
|
|
243
223
|
required: !0,
|
|
244
|
-
error:
|
|
224
|
+
error: L.name
|
|
245
225
|
}),
|
|
246
|
-
/* @__PURE__ */
|
|
247
|
-
label:
|
|
248
|
-
value:
|
|
226
|
+
/* @__PURE__ */ _(r, {
|
|
227
|
+
label: D("devportal.slug", "Slug"),
|
|
228
|
+
value: P,
|
|
249
229
|
onChange: (e) => {
|
|
250
|
-
|
|
230
|
+
F(e.target.value.toLowerCase()), R((e) => ({
|
|
251
231
|
...e,
|
|
252
232
|
slug: void 0
|
|
253
233
|
}));
|
|
254
234
|
},
|
|
255
235
|
placeholder: "acme-dev",
|
|
256
236
|
required: !0,
|
|
257
|
-
error:
|
|
258
|
-
hint:
|
|
237
|
+
error: L.slug,
|
|
238
|
+
hint: D("devportal.slugHint", "URL-friendly identifier — auto-generated from name")
|
|
259
239
|
}),
|
|
260
|
-
/* @__PURE__ */
|
|
261
|
-
label:
|
|
262
|
-
value:
|
|
240
|
+
/* @__PURE__ */ _(a, {
|
|
241
|
+
label: D("devportal.description", "Description"),
|
|
242
|
+
value: I,
|
|
263
243
|
onChange: (e) => oe(e.target.value),
|
|
264
|
-
placeholder:
|
|
244
|
+
placeholder: D("devportal.orgDescriptionPlaceholder", "Tell us about your organization…"),
|
|
265
245
|
rows: 2
|
|
266
|
-
})
|
|
267
|
-
/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
268
|
-
className: "mb-2 text-sm font-medium text-foreground",
|
|
269
|
-
children: w("devportal.selectPlan", "Select Plan")
|
|
270
|
-
}), /* @__PURE__ */ m("div", {
|
|
271
|
-
className: "grid grid-cols-3 gap-3",
|
|
272
|
-
children: g.map((e) => /* @__PURE__ */ h("button", {
|
|
273
|
-
type: "button",
|
|
274
|
-
onClick: () => L(e.value),
|
|
275
|
-
className: ["rounded-lg border p-3 text-left text-sm transition-colors", I === e.value ? "border-primary bg-primary/5 ring-2 ring-primary" : "border-border-default hover:border-muted-foreground/50"].join(" "),
|
|
276
|
-
children: [
|
|
277
|
-
/* @__PURE__ */ m("p", {
|
|
278
|
-
className: "font-semibold text-foreground",
|
|
279
|
-
children: e.label
|
|
280
|
-
}),
|
|
281
|
-
/* @__PURE__ */ m("p", {
|
|
282
|
-
className: "mt-0.5 text-xs text-primary",
|
|
283
|
-
children: e.price
|
|
284
|
-
}),
|
|
285
|
-
/* @__PURE__ */ m("p", {
|
|
286
|
-
className: "mt-1.5 text-xs text-muted-foreground",
|
|
287
|
-
children: e.apps
|
|
288
|
-
}),
|
|
289
|
-
/* @__PURE__ */ m("p", {
|
|
290
|
-
className: "text-xs text-muted-foreground",
|
|
291
|
-
children: e.calls
|
|
292
|
-
})
|
|
293
|
-
]
|
|
294
|
-
}, e.value))
|
|
295
|
-
})] })
|
|
246
|
+
})
|
|
296
247
|
]
|
|
297
248
|
}),
|
|
298
|
-
/* @__PURE__ */
|
|
249
|
+
/* @__PURE__ */ v("div", {
|
|
299
250
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
300
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ _("button", {
|
|
301
252
|
type: "button",
|
|
302
253
|
onClick: $,
|
|
303
254
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
304
|
-
children:
|
|
305
|
-
}), /* @__PURE__ */
|
|
255
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
256
|
+
}), /* @__PURE__ */ v("button", {
|
|
306
257
|
type: "button",
|
|
307
258
|
onClick: () => void U(),
|
|
308
|
-
disabled:
|
|
259
|
+
disabled: B,
|
|
309
260
|
className: "inline-flex items-center gap-2 rounded-lg bg-primary px-5 py-2.5 text-sm font-semibold text-primary-foreground hover:bg-primary/90 disabled:opacity-60 transition-colors",
|
|
310
261
|
children: [
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
!
|
|
262
|
+
B ? /* @__PURE__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
|
|
263
|
+
D("devportal.setup.createAndContinue", "Create & Continue"),
|
|
264
|
+
!B && /* @__PURE__ */ _(m, { size: 16 })
|
|
314
265
|
]
|
|
315
266
|
})]
|
|
316
267
|
})
|
|
317
268
|
]
|
|
318
269
|
}),
|
|
319
|
-
|
|
270
|
+
k === "app" && /* @__PURE__ */ v("div", {
|
|
320
271
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
321
272
|
children: [
|
|
322
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ v("div", {
|
|
323
274
|
className: "mb-6 flex items-center gap-3",
|
|
324
|
-
children: [/* @__PURE__ */
|
|
275
|
+
children: [/* @__PURE__ */ _("div", {
|
|
325
276
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
326
|
-
children: /* @__PURE__ */
|
|
327
|
-
}), /* @__PURE__ */
|
|
277
|
+
children: /* @__PURE__ */ _(l, { size: 20 })
|
|
278
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
|
|
328
279
|
className: "text-lg font-semibold text-foreground",
|
|
329
|
-
children:
|
|
330
|
-
}), /* @__PURE__ */
|
|
280
|
+
children: D("devportal.setup.appTitle", "Create your first app")
|
|
281
|
+
}), /* @__PURE__ */ _("p", {
|
|
331
282
|
className: "text-sm text-muted-foreground",
|
|
332
|
-
children:
|
|
283
|
+
children: D("devportal.setup.appSubtitle", "Register the app you want to publish or integrate.")
|
|
333
284
|
})] })]
|
|
334
285
|
}),
|
|
335
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ v("div", {
|
|
336
287
|
className: "space-y-5",
|
|
337
288
|
children: [
|
|
338
|
-
/* @__PURE__ */
|
|
339
|
-
label:
|
|
289
|
+
/* @__PURE__ */ _(r, {
|
|
290
|
+
label: D("devportal.applicationName", "Application Name"),
|
|
340
291
|
value: W,
|
|
341
292
|
onChange: (e) => {
|
|
342
|
-
G(e.target.value), (!K || K ===
|
|
293
|
+
G(e.target.value), (!K || K === x(W)) && se(x(e.target.value)), Z((e) => ({
|
|
343
294
|
...e,
|
|
344
295
|
name: void 0
|
|
345
296
|
}));
|
|
346
297
|
},
|
|
347
|
-
placeholder:
|
|
298
|
+
placeholder: D("devportal.applicationNamePlaceholder", "My Awesome App"),
|
|
348
299
|
required: !0,
|
|
349
300
|
error: X.name
|
|
350
301
|
}),
|
|
351
|
-
/* @__PURE__ */
|
|
302
|
+
/* @__PURE__ */ v("div", {
|
|
352
303
|
className: "grid grid-cols-2 gap-4",
|
|
353
|
-
children: [/* @__PURE__ */
|
|
354
|
-
label:
|
|
304
|
+
children: [/* @__PURE__ */ _(i, {
|
|
305
|
+
label: D("devportal.applicationType", "Application Type"),
|
|
355
306
|
value: q,
|
|
356
307
|
onChange: (e) => {
|
|
357
308
|
ce(e.target.value), Z((e) => ({
|
|
@@ -359,11 +310,12 @@ var x = [
|
|
|
359
310
|
appType: void 0
|
|
360
311
|
}));
|
|
361
312
|
},
|
|
362
|
-
options:
|
|
313
|
+
options: y,
|
|
314
|
+
placeholder: D("devportal.selectType", "Select type…"),
|
|
363
315
|
required: !0,
|
|
364
316
|
error: X.appType
|
|
365
|
-
}), /* @__PURE__ */
|
|
366
|
-
label:
|
|
317
|
+
}), /* @__PURE__ */ _(i, {
|
|
318
|
+
label: D("devportal.category", "Category"),
|
|
367
319
|
value: J,
|
|
368
320
|
onChange: (e) => {
|
|
369
321
|
le(e.target.value), Z((e) => ({
|
|
@@ -371,13 +323,14 @@ var x = [
|
|
|
371
323
|
category: void 0
|
|
372
324
|
}));
|
|
373
325
|
},
|
|
374
|
-
options:
|
|
326
|
+
options: b,
|
|
327
|
+
placeholder: D("devportal.selectCategory", "Select category…"),
|
|
375
328
|
required: !0,
|
|
376
329
|
error: X.category
|
|
377
330
|
})]
|
|
378
331
|
}),
|
|
379
|
-
/* @__PURE__ */
|
|
380
|
-
label:
|
|
332
|
+
/* @__PURE__ */ _(a, {
|
|
333
|
+
label: D("devportal.shortDescription", "Short Description"),
|
|
381
334
|
value: Y,
|
|
382
335
|
onChange: (e) => {
|
|
383
336
|
ue(e.target.value), Z((e) => ({
|
|
@@ -385,7 +338,7 @@ var x = [
|
|
|
385
338
|
shortDescription: void 0
|
|
386
339
|
}));
|
|
387
340
|
},
|
|
388
|
-
placeholder:
|
|
341
|
+
placeholder: D("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
|
|
389
342
|
required: !0,
|
|
390
343
|
error: X.shortDescription,
|
|
391
344
|
rows: 2,
|
|
@@ -393,109 +346,109 @@ var x = [
|
|
|
393
346
|
})
|
|
394
347
|
]
|
|
395
348
|
}),
|
|
396
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ v("div", {
|
|
397
350
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
398
|
-
children: [/* @__PURE__ */
|
|
351
|
+
children: [/* @__PURE__ */ _("button", {
|
|
399
352
|
type: "button",
|
|
400
353
|
onClick: $,
|
|
401
354
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
402
|
-
children:
|
|
403
|
-
}), /* @__PURE__ */
|
|
355
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
356
|
+
}), /* @__PURE__ */ v("button", {
|
|
404
357
|
type: "button",
|
|
405
358
|
onClick: () => void pe(),
|
|
406
359
|
disabled: Q,
|
|
407
360
|
className: "inline-flex items-center gap-2 rounded-lg bg-primary px-5 py-2.5 text-sm font-semibold text-primary-foreground hover:bg-primary/90 disabled:opacity-60 transition-colors",
|
|
408
361
|
children: [
|
|
409
|
-
Q ? /* @__PURE__ */
|
|
410
|
-
|
|
411
|
-
!Q && /* @__PURE__ */ m
|
|
362
|
+
Q ? /* @__PURE__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
|
|
363
|
+
D("devportal.setup.createApp", "Create App"),
|
|
364
|
+
!Q && /* @__PURE__ */ _(m, { size: 16 })
|
|
412
365
|
]
|
|
413
366
|
})]
|
|
414
367
|
})
|
|
415
368
|
]
|
|
416
369
|
}),
|
|
417
|
-
|
|
370
|
+
k === "done" && /* @__PURE__ */ v("div", {
|
|
418
371
|
className: "text-center",
|
|
419
372
|
children: [
|
|
420
|
-
/* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ _("div", {
|
|
421
374
|
className: "mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-primary/10 text-primary",
|
|
422
|
-
children: /* @__PURE__ */
|
|
375
|
+
children: /* @__PURE__ */ _(g, { size: 32 })
|
|
423
376
|
}),
|
|
424
|
-
/* @__PURE__ */
|
|
377
|
+
/* @__PURE__ */ _("h2", {
|
|
425
378
|
className: "text-2xl font-bold text-foreground",
|
|
426
|
-
children:
|
|
379
|
+
children: D("devportal.setup.doneTitle", "You're all set!")
|
|
427
380
|
}),
|
|
428
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ _("p", {
|
|
429
382
|
className: "mt-2 text-muted-foreground",
|
|
430
|
-
children:
|
|
383
|
+
children: D("devportal.setup.doneSubtitle", "Your organization and first app are ready. Here's what to do next.")
|
|
431
384
|
}),
|
|
432
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ v("div", {
|
|
433
386
|
className: "mt-8 grid gap-3 sm:grid-cols-2",
|
|
434
387
|
children: [
|
|
435
|
-
|
|
436
|
-
icon: /* @__PURE__ */
|
|
437
|
-
title:
|
|
438
|
-
description:
|
|
439
|
-
onClick: () =>
|
|
388
|
+
M && /* @__PURE__ */ _(T, {
|
|
389
|
+
icon: /* @__PURE__ */ _(l, { size: 20 }),
|
|
390
|
+
title: D("devportal.setup.viewApp", "View your app"),
|
|
391
|
+
description: D("devportal.setup.viewAppDesc", "Configure OAuth, webhooks, and versioning"),
|
|
392
|
+
onClick: () => O(`/apps/${M}`),
|
|
440
393
|
primary: !0
|
|
441
394
|
}),
|
|
442
|
-
/* @__PURE__ */
|
|
443
|
-
icon: /* @__PURE__ */
|
|
444
|
-
title:
|
|
445
|
-
description:
|
|
446
|
-
onClick: () =>
|
|
395
|
+
/* @__PURE__ */ _(T, {
|
|
396
|
+
icon: /* @__PURE__ */ _(h, { size: 20 }),
|
|
397
|
+
title: D("devportal.setup.generateApiKey", "Generate API key"),
|
|
398
|
+
description: D("devportal.setup.generateApiKeyDesc", "Create credentials to start calling APIs"),
|
|
399
|
+
onClick: () => O("/api-keys/new")
|
|
447
400
|
}),
|
|
448
|
-
/* @__PURE__ */
|
|
449
|
-
icon: /* @__PURE__ */
|
|
450
|
-
title:
|
|
451
|
-
description:
|
|
452
|
-
onClick: () =>
|
|
401
|
+
/* @__PURE__ */ _(T, {
|
|
402
|
+
icon: /* @__PURE__ */ _(d, { size: 20 }),
|
|
403
|
+
title: D("devportal.setup.browseDocs", "Browse docs"),
|
|
404
|
+
description: D("devportal.setup.browseDocsDesc", "Learn about publishing, SDKs, and webhooks"),
|
|
405
|
+
onClick: () => O("/docs")
|
|
453
406
|
}),
|
|
454
|
-
|
|
455
|
-
icon: /* @__PURE__ */
|
|
456
|
-
title:
|
|
457
|
-
description:
|
|
458
|
-
onClick: () =>
|
|
407
|
+
j && /* @__PURE__ */ _(T, {
|
|
408
|
+
icon: /* @__PURE__ */ _(f, { size: 20 }),
|
|
409
|
+
title: D("devportal.setup.inviteTeam", "Invite your team"),
|
|
410
|
+
description: D("devportal.setup.inviteTeamDesc", "Add members to collaborate on your apps"),
|
|
411
|
+
onClick: () => O(`/organizations/${j}/members`)
|
|
459
412
|
})
|
|
460
413
|
]
|
|
461
414
|
}),
|
|
462
|
-
/* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ v("button", {
|
|
463
416
|
type: "button",
|
|
464
|
-
onClick: () =>
|
|
417
|
+
onClick: () => O("/"),
|
|
465
418
|
className: "mt-8 inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
466
|
-
children: [
|
|
419
|
+
children: [D("devportal.setup.goToDashboard", "Go to dashboard"), /* @__PURE__ */ _(u, { size: 14 })]
|
|
467
420
|
})
|
|
468
421
|
]
|
|
469
422
|
})
|
|
470
423
|
]
|
|
471
424
|
})]
|
|
472
425
|
});
|
|
473
|
-
},
|
|
426
|
+
}, T = ({ icon: e, title: t, description: n, onClick: r, primary: i }) => /* @__PURE__ */ v("button", {
|
|
474
427
|
type: "button",
|
|
475
428
|
onClick: r,
|
|
476
429
|
className: ["flex items-start gap-4 rounded-xl border p-5 text-left transition-colors", i ? "border-primary bg-primary/5 hover:bg-primary/10" : "border-border-default bg-surface-raised hover:bg-surface-hover"].join(" "),
|
|
477
430
|
children: [
|
|
478
|
-
/* @__PURE__ */
|
|
431
|
+
/* @__PURE__ */ _("div", {
|
|
479
432
|
className: ["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg", i ? "bg-primary/20 text-primary" : "bg-muted text-muted-foreground"].join(" "),
|
|
480
433
|
children: e
|
|
481
434
|
}),
|
|
482
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ v("div", {
|
|
483
436
|
className: "min-w-0 flex-1",
|
|
484
|
-
children: [/* @__PURE__ */
|
|
437
|
+
children: [/* @__PURE__ */ _("p", {
|
|
485
438
|
className: "font-semibold text-foreground",
|
|
486
439
|
children: t
|
|
487
|
-
}), /* @__PURE__ */
|
|
440
|
+
}), /* @__PURE__ */ _("p", {
|
|
488
441
|
className: "mt-0.5 text-sm text-muted-foreground",
|
|
489
442
|
children: n
|
|
490
443
|
})]
|
|
491
444
|
}),
|
|
492
|
-
/* @__PURE__ */ m
|
|
445
|
+
/* @__PURE__ */ _(m, {
|
|
493
446
|
size: 16,
|
|
494
447
|
className: "mt-0.5 flex-shrink-0 text-muted-foreground"
|
|
495
448
|
})
|
|
496
449
|
]
|
|
497
450
|
});
|
|
498
451
|
//#endregion
|
|
499
|
-
export {
|
|
452
|
+
export { w as SetupPage };
|
|
500
453
|
|
|
501
454
|
//# sourceMappingURL=SetupPage.js.map
|