@burdenoff/microfe-devportal 2026.609.4 → 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 +186 -181
- 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,23 +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 o, useCreateOrganizationMutation as s } from "../../generated/global-operations.js";
|
|
5
|
+
import { useCreateApplicationMutation as ee, useCreateBillingAccountMutation as o, useCreateOrganizationMutation as s } from "../../generated/global-operations.js";
|
|
6
|
+
import "../hooks/index.js";
|
|
6
7
|
import { useState as c } from "react";
|
|
7
|
-
import { useI18n as
|
|
8
|
-
import { AppWindow as
|
|
9
|
-
import { jsx as
|
|
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
|
-
value: "",
|
|
13
|
-
label: "Select type…"
|
|
14
|
-
}, ...Object.entries(n).map(([e, t]) => ({
|
|
12
|
+
var y = Object.entries(n).map(([e, t]) => ({
|
|
15
13
|
value: e,
|
|
16
14
|
label: t
|
|
17
|
-
}))
|
|
18
|
-
{
|
|
19
|
-
value: "",
|
|
20
|
-
label: "Select category…"
|
|
21
|
-
},
|
|
15
|
+
})), b = [
|
|
22
16
|
{
|
|
23
17
|
value: "productivity",
|
|
24
18
|
label: "Productivity"
|
|
@@ -68,15 +62,15 @@ var ne = [{
|
|
|
68
62
|
label: "Other"
|
|
69
63
|
}
|
|
70
64
|
];
|
|
71
|
-
function
|
|
65
|
+
function x(e) {
|
|
72
66
|
return e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
73
67
|
}
|
|
74
|
-
function
|
|
68
|
+
function S() {
|
|
75
69
|
try {
|
|
76
70
|
localStorage.setItem("devportal_setup_dismissed", "1");
|
|
77
71
|
} catch {}
|
|
78
72
|
}
|
|
79
|
-
var
|
|
73
|
+
var C = [
|
|
80
74
|
{
|
|
81
75
|
key: "org",
|
|
82
76
|
label: "Organization"
|
|
@@ -89,251 +83,262 @@ var b = [
|
|
|
89
83
|
key: "done",
|
|
90
84
|
label: "Done"
|
|
91
85
|
}
|
|
92
|
-
],
|
|
93
|
-
let t =
|
|
94
|
-
return /* @__PURE__ */
|
|
86
|
+
], ne = ({ current: e }) => {
|
|
87
|
+
let t = C.findIndex((t) => t.key === e);
|
|
88
|
+
return /* @__PURE__ */ _("div", {
|
|
95
89
|
className: "flex items-center gap-0",
|
|
96
|
-
children:
|
|
90
|
+
children: C.map((e, n) => {
|
|
97
91
|
let r = n < t, i = n === t;
|
|
98
|
-
return /* @__PURE__ */
|
|
92
|
+
return /* @__PURE__ */ v("div", {
|
|
99
93
|
className: "flex items-center",
|
|
100
|
-
children: [/* @__PURE__ */
|
|
94
|
+
children: [/* @__PURE__ */ v("div", {
|
|
101
95
|
className: "flex flex-col items-center gap-1.5",
|
|
102
|
-
children: [/* @__PURE__ */
|
|
96
|
+
children: [/* @__PURE__ */ _("div", {
|
|
103
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(" "),
|
|
104
|
-
children: r ? /* @__PURE__ */
|
|
105
|
-
}), /* @__PURE__ */
|
|
98
|
+
children: r ? /* @__PURE__ */ _(p, { size: 14 }) : n + 1
|
|
99
|
+
}), /* @__PURE__ */ _("span", {
|
|
106
100
|
className: ["text-xs font-medium whitespace-nowrap", i ? "text-foreground" : "text-muted-foreground"].join(" "),
|
|
107
101
|
children: e.label
|
|
108
102
|
})]
|
|
109
|
-
}), 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(" ") })]
|
|
110
104
|
}, e.key);
|
|
111
105
|
})
|
|
112
106
|
});
|
|
113
|
-
},
|
|
114
|
-
let { navigate: n, basePath: p } = e(), { t:
|
|
115
|
-
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);
|
|
116
110
|
return n === e ? t : n;
|
|
117
|
-
},
|
|
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 = () => {
|
|
118
112
|
let e = {};
|
|
119
|
-
return
|
|
120
|
-
},
|
|
121
|
-
if (
|
|
122
|
-
let e = (await
|
|
123
|
-
name:
|
|
124
|
-
slug:
|
|
125
|
-
description:
|
|
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;
|
|
114
|
+
}, U = async () => {
|
|
115
|
+
if (H()) try {
|
|
116
|
+
let e = (await z({ variables: { input: {
|
|
117
|
+
name: N,
|
|
118
|
+
slug: P || void 0,
|
|
119
|
+
description: I || void 0
|
|
126
120
|
} } })).data?.createDeveloperOrganization?.id;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
+
}
|
|
131
134
|
} catch {}
|
|
132
|
-
}, [
|
|
135
|
+
}, [W, G] = c(""), [K, se] = c(""), [q, ce] = c(""), [J, le] = c(""), [Y, ue] = c(""), [X, Z] = c({}), [de, { loading: Q }] = ee(), fe = () => {
|
|
133
136
|
let e = {};
|
|
134
|
-
return
|
|
135
|
-
},
|
|
136
|
-
if (
|
|
137
|
-
let e = (await
|
|
138
|
-
name:
|
|
139
|
-
slug:
|
|
140
|
-
appType:
|
|
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;
|
|
138
|
+
}, pe = async () => {
|
|
139
|
+
if (fe()) try {
|
|
140
|
+
let e = (await de({ variables: { input: {
|
|
141
|
+
name: W,
|
|
142
|
+
slug: K || void 0,
|
|
143
|
+
appType: q,
|
|
141
144
|
category: J || void 0,
|
|
142
145
|
shortDescription: Y || void 0,
|
|
143
146
|
visibility: "PRIVATE",
|
|
144
|
-
developerOrganizationId:
|
|
147
|
+
developerOrganizationId: j || void 0
|
|
145
148
|
} } })).data?.createApplication?.id;
|
|
146
|
-
e && (
|
|
149
|
+
e && (E.emit("devportal.app.created", {
|
|
147
150
|
appId: e,
|
|
148
|
-
name:
|
|
149
|
-
appType:
|
|
150
|
-
organizationId:
|
|
151
|
-
}), ie(e),
|
|
151
|
+
name: W,
|
|
152
|
+
appType: q,
|
|
153
|
+
organizationId: j
|
|
154
|
+
}), ie(e), S(), A("done"));
|
|
152
155
|
} catch {}
|
|
153
156
|
}, $ = () => {
|
|
154
|
-
|
|
157
|
+
S(), O("/");
|
|
155
158
|
};
|
|
156
|
-
return /* @__PURE__ */
|
|
159
|
+
return /* @__PURE__ */ v("main", {
|
|
157
160
|
className: "min-h-screen bg-surface-default",
|
|
158
|
-
children: [/* @__PURE__ */
|
|
161
|
+
children: [/* @__PURE__ */ _("div", {
|
|
159
162
|
className: "border-b border-border-default bg-surface-raised",
|
|
160
|
-
children: /* @__PURE__ */
|
|
163
|
+
children: /* @__PURE__ */ _("div", {
|
|
161
164
|
className: "mx-auto max-w-2xl px-6 py-5",
|
|
162
|
-
children: /* @__PURE__ */
|
|
165
|
+
children: /* @__PURE__ */ v("div", {
|
|
163
166
|
className: "flex items-center justify-between",
|
|
164
|
-
children: [/* @__PURE__ */
|
|
167
|
+
children: [/* @__PURE__ */ v("div", {
|
|
165
168
|
className: "flex items-center gap-3",
|
|
166
|
-
children: [/* @__PURE__ */
|
|
169
|
+
children: [/* @__PURE__ */ _("div", {
|
|
167
170
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
168
|
-
children: /* @__PURE__ */ g
|
|
169
|
-
}), /* @__PURE__ */
|
|
171
|
+
children: /* @__PURE__ */ _(g, { size: 20 })
|
|
172
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
170
173
|
className: "text-xs font-medium text-muted-foreground",
|
|
171
|
-
children:
|
|
172
|
-
}), /* @__PURE__ */
|
|
174
|
+
children: D("devportal.developerPortal", "Developer Portal")
|
|
175
|
+
}), /* @__PURE__ */ _("h1", {
|
|
173
176
|
className: "text-base font-semibold text-foreground",
|
|
174
|
-
children:
|
|
177
|
+
children: D("devportal.setup.title", "Get set up")
|
|
175
178
|
})] })]
|
|
176
|
-
}),
|
|
179
|
+
}), k !== "done" && /* @__PURE__ */ _("button", {
|
|
177
180
|
type: "button",
|
|
178
181
|
onClick: $,
|
|
179
182
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
180
|
-
children:
|
|
183
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
181
184
|
})]
|
|
182
185
|
})
|
|
183
186
|
})
|
|
184
|
-
}), /* @__PURE__ */
|
|
187
|
+
}), /* @__PURE__ */ v("div", {
|
|
185
188
|
className: "mx-auto max-w-2xl px-6 py-10",
|
|
186
189
|
children: [
|
|
187
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ _("div", {
|
|
188
191
|
className: "mb-10 flex justify-center",
|
|
189
|
-
children: /* @__PURE__ */
|
|
192
|
+
children: /* @__PURE__ */ _(ne, { current: k })
|
|
190
193
|
}),
|
|
191
|
-
|
|
194
|
+
k === "org" && /* @__PURE__ */ v("div", {
|
|
192
195
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
193
196
|
children: [
|
|
194
|
-
/* @__PURE__ */
|
|
197
|
+
/* @__PURE__ */ v("div", {
|
|
195
198
|
className: "mb-6 flex items-center gap-3",
|
|
196
|
-
children: [/* @__PURE__ */
|
|
199
|
+
children: [/* @__PURE__ */ _("div", {
|
|
197
200
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
198
|
-
children: /* @__PURE__ */
|
|
199
|
-
}), /* @__PURE__ */
|
|
201
|
+
children: /* @__PURE__ */ _(f, { size: 20 })
|
|
202
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
|
|
200
203
|
className: "text-lg font-semibold text-foreground",
|
|
201
|
-
children:
|
|
202
|
-
}), /* @__PURE__ */
|
|
204
|
+
children: D("devportal.setup.orgTitle", "Set up your organization")
|
|
205
|
+
}), /* @__PURE__ */ _("p", {
|
|
203
206
|
className: "text-sm text-muted-foreground",
|
|
204
|
-
children:
|
|
207
|
+
children: D("devportal.setup.orgSubtitle", "This groups your apps and teams under one publisher identity.")
|
|
205
208
|
})] })]
|
|
206
209
|
}),
|
|
207
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ v("div", {
|
|
208
211
|
className: "space-y-5",
|
|
209
212
|
children: [
|
|
210
|
-
/* @__PURE__ */
|
|
211
|
-
label:
|
|
212
|
-
value:
|
|
213
|
+
/* @__PURE__ */ _(r, {
|
|
214
|
+
label: D("devportal.organizationName", "Organization Name"),
|
|
215
|
+
value: N,
|
|
213
216
|
onChange: (e) => {
|
|
214
|
-
|
|
217
|
+
ae(e.target.value), (!P || P === x(N)) && F(x(e.target.value)), R((e) => ({
|
|
215
218
|
...e,
|
|
216
219
|
name: void 0
|
|
217
220
|
}));
|
|
218
221
|
},
|
|
219
|
-
placeholder:
|
|
222
|
+
placeholder: D("devportal.organizationNamePlaceholder", "Acme Development"),
|
|
220
223
|
required: !0,
|
|
221
|
-
error:
|
|
224
|
+
error: L.name
|
|
222
225
|
}),
|
|
223
|
-
/* @__PURE__ */
|
|
224
|
-
label:
|
|
225
|
-
value:
|
|
226
|
+
/* @__PURE__ */ _(r, {
|
|
227
|
+
label: D("devportal.slug", "Slug"),
|
|
228
|
+
value: P,
|
|
226
229
|
onChange: (e) => {
|
|
227
|
-
|
|
230
|
+
F(e.target.value.toLowerCase()), R((e) => ({
|
|
228
231
|
...e,
|
|
229
232
|
slug: void 0
|
|
230
233
|
}));
|
|
231
234
|
},
|
|
232
235
|
placeholder: "acme-dev",
|
|
233
236
|
required: !0,
|
|
234
|
-
error:
|
|
235
|
-
hint:
|
|
237
|
+
error: L.slug,
|
|
238
|
+
hint: D("devportal.slugHint", "URL-friendly identifier — auto-generated from name")
|
|
236
239
|
}),
|
|
237
|
-
/* @__PURE__ */
|
|
238
|
-
label:
|
|
239
|
-
value:
|
|
240
|
-
onChange: (e) =>
|
|
241
|
-
placeholder:
|
|
240
|
+
/* @__PURE__ */ _(a, {
|
|
241
|
+
label: D("devportal.description", "Description"),
|
|
242
|
+
value: I,
|
|
243
|
+
onChange: (e) => oe(e.target.value),
|
|
244
|
+
placeholder: D("devportal.orgDescriptionPlaceholder", "Tell us about your organization…"),
|
|
242
245
|
rows: 2
|
|
243
246
|
})
|
|
244
247
|
]
|
|
245
248
|
}),
|
|
246
|
-
/* @__PURE__ */
|
|
249
|
+
/* @__PURE__ */ v("div", {
|
|
247
250
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
248
|
-
children: [/* @__PURE__ */
|
|
251
|
+
children: [/* @__PURE__ */ _("button", {
|
|
249
252
|
type: "button",
|
|
250
253
|
onClick: $,
|
|
251
254
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
252
|
-
children:
|
|
253
|
-
}), /* @__PURE__ */
|
|
255
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
256
|
+
}), /* @__PURE__ */ v("button", {
|
|
254
257
|
type: "button",
|
|
255
|
-
onClick: () => void
|
|
256
|
-
disabled:
|
|
258
|
+
onClick: () => void U(),
|
|
259
|
+
disabled: B,
|
|
257
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",
|
|
258
261
|
children: [
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
!
|
|
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 })
|
|
262
265
|
]
|
|
263
266
|
})]
|
|
264
267
|
})
|
|
265
268
|
]
|
|
266
269
|
}),
|
|
267
|
-
|
|
270
|
+
k === "app" && /* @__PURE__ */ v("div", {
|
|
268
271
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
269
272
|
children: [
|
|
270
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ v("div", {
|
|
271
274
|
className: "mb-6 flex items-center gap-3",
|
|
272
|
-
children: [/* @__PURE__ */
|
|
275
|
+
children: [/* @__PURE__ */ _("div", {
|
|
273
276
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",
|
|
274
|
-
children: /* @__PURE__ */
|
|
275
|
-
}), /* @__PURE__ */
|
|
277
|
+
children: /* @__PURE__ */ _(l, { size: 20 })
|
|
278
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
|
|
276
279
|
className: "text-lg font-semibold text-foreground",
|
|
277
|
-
children:
|
|
278
|
-
}), /* @__PURE__ */
|
|
280
|
+
children: D("devportal.setup.appTitle", "Create your first app")
|
|
281
|
+
}), /* @__PURE__ */ _("p", {
|
|
279
282
|
className: "text-sm text-muted-foreground",
|
|
280
|
-
children:
|
|
283
|
+
children: D("devportal.setup.appSubtitle", "Register the app you want to publish or integrate.")
|
|
281
284
|
})] })]
|
|
282
285
|
}),
|
|
283
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ v("div", {
|
|
284
287
|
className: "space-y-5",
|
|
285
288
|
children: [
|
|
286
|
-
/* @__PURE__ */
|
|
287
|
-
label:
|
|
288
|
-
value:
|
|
289
|
+
/* @__PURE__ */ _(r, {
|
|
290
|
+
label: D("devportal.applicationName", "Application Name"),
|
|
291
|
+
value: W,
|
|
289
292
|
onChange: (e) => {
|
|
290
|
-
|
|
293
|
+
G(e.target.value), (!K || K === x(W)) && se(x(e.target.value)), Z((e) => ({
|
|
291
294
|
...e,
|
|
292
295
|
name: void 0
|
|
293
296
|
}));
|
|
294
297
|
},
|
|
295
|
-
placeholder:
|
|
298
|
+
placeholder: D("devportal.applicationNamePlaceholder", "My Awesome App"),
|
|
296
299
|
required: !0,
|
|
297
300
|
error: X.name
|
|
298
301
|
}),
|
|
299
|
-
/* @__PURE__ */
|
|
302
|
+
/* @__PURE__ */ v("div", {
|
|
300
303
|
className: "grid grid-cols-2 gap-4",
|
|
301
|
-
children: [/* @__PURE__ */
|
|
302
|
-
label:
|
|
303
|
-
value:
|
|
304
|
+
children: [/* @__PURE__ */ _(i, {
|
|
305
|
+
label: D("devportal.applicationType", "Application Type"),
|
|
306
|
+
value: q,
|
|
304
307
|
onChange: (e) => {
|
|
305
|
-
|
|
308
|
+
ce(e.target.value), Z((e) => ({
|
|
306
309
|
...e,
|
|
307
310
|
appType: void 0
|
|
308
311
|
}));
|
|
309
312
|
},
|
|
310
|
-
options:
|
|
313
|
+
options: y,
|
|
314
|
+
placeholder: D("devportal.selectType", "Select type…"),
|
|
311
315
|
required: !0,
|
|
312
316
|
error: X.appType
|
|
313
|
-
}), /* @__PURE__ */
|
|
314
|
-
label:
|
|
317
|
+
}), /* @__PURE__ */ _(i, {
|
|
318
|
+
label: D("devportal.category", "Category"),
|
|
315
319
|
value: J,
|
|
316
320
|
onChange: (e) => {
|
|
317
|
-
|
|
321
|
+
le(e.target.value), Z((e) => ({
|
|
318
322
|
...e,
|
|
319
323
|
category: void 0
|
|
320
324
|
}));
|
|
321
325
|
},
|
|
322
|
-
options:
|
|
326
|
+
options: b,
|
|
327
|
+
placeholder: D("devportal.selectCategory", "Select category…"),
|
|
323
328
|
required: !0,
|
|
324
329
|
error: X.category
|
|
325
330
|
})]
|
|
326
331
|
}),
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
label:
|
|
332
|
+
/* @__PURE__ */ _(a, {
|
|
333
|
+
label: D("devportal.shortDescription", "Short Description"),
|
|
329
334
|
value: Y,
|
|
330
335
|
onChange: (e) => {
|
|
331
|
-
|
|
336
|
+
ue(e.target.value), Z((e) => ({
|
|
332
337
|
...e,
|
|
333
338
|
shortDescription: void 0
|
|
334
339
|
}));
|
|
335
340
|
},
|
|
336
|
-
placeholder:
|
|
341
|
+
placeholder: D("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
|
|
337
342
|
required: !0,
|
|
338
343
|
error: X.shortDescription,
|
|
339
344
|
rows: 2,
|
|
@@ -341,109 +346,109 @@ var b = [
|
|
|
341
346
|
})
|
|
342
347
|
]
|
|
343
348
|
}),
|
|
344
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ v("div", {
|
|
345
350
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
346
|
-
children: [/* @__PURE__ */
|
|
351
|
+
children: [/* @__PURE__ */ _("button", {
|
|
347
352
|
type: "button",
|
|
348
353
|
onClick: $,
|
|
349
354
|
className: "text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
350
|
-
children:
|
|
351
|
-
}), /* @__PURE__ */
|
|
355
|
+
children: D("devportal.setup.skipForNow", "Skip for now")
|
|
356
|
+
}), /* @__PURE__ */ v("button", {
|
|
352
357
|
type: "button",
|
|
353
|
-
onClick: () => void
|
|
358
|
+
onClick: () => void pe(),
|
|
354
359
|
disabled: Q,
|
|
355
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",
|
|
356
361
|
children: [
|
|
357
|
-
Q ? /* @__PURE__ */
|
|
358
|
-
|
|
359
|
-
!Q && /* @__PURE__ */
|
|
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 })
|
|
360
365
|
]
|
|
361
366
|
})]
|
|
362
367
|
})
|
|
363
368
|
]
|
|
364
369
|
}),
|
|
365
|
-
|
|
370
|
+
k === "done" && /* @__PURE__ */ v("div", {
|
|
366
371
|
className: "text-center",
|
|
367
372
|
children: [
|
|
368
|
-
/* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ _("div", {
|
|
369
374
|
className: "mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-primary/10 text-primary",
|
|
370
|
-
children: /* @__PURE__ */ g
|
|
375
|
+
children: /* @__PURE__ */ _(g, { size: 32 })
|
|
371
376
|
}),
|
|
372
|
-
/* @__PURE__ */
|
|
377
|
+
/* @__PURE__ */ _("h2", {
|
|
373
378
|
className: "text-2xl font-bold text-foreground",
|
|
374
|
-
children:
|
|
379
|
+
children: D("devportal.setup.doneTitle", "You're all set!")
|
|
375
380
|
}),
|
|
376
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ _("p", {
|
|
377
382
|
className: "mt-2 text-muted-foreground",
|
|
378
|
-
children:
|
|
383
|
+
children: D("devportal.setup.doneSubtitle", "Your organization and first app are ready. Here's what to do next.")
|
|
379
384
|
}),
|
|
380
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ v("div", {
|
|
381
386
|
className: "mt-8 grid gap-3 sm:grid-cols-2",
|
|
382
387
|
children: [
|
|
383
|
-
|
|
384
|
-
icon: /* @__PURE__ */
|
|
385
|
-
title:
|
|
386
|
-
description:
|
|
387
|
-
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}`),
|
|
388
393
|
primary: !0
|
|
389
394
|
}),
|
|
390
|
-
/* @__PURE__ */
|
|
391
|
-
icon: /* @__PURE__ */
|
|
392
|
-
title:
|
|
393
|
-
description:
|
|
394
|
-
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")
|
|
395
400
|
}),
|
|
396
|
-
/* @__PURE__ */
|
|
397
|
-
icon: /* @__PURE__ */
|
|
398
|
-
title:
|
|
399
|
-
description:
|
|
400
|
-
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")
|
|
401
406
|
}),
|
|
402
|
-
|
|
403
|
-
icon: /* @__PURE__ */
|
|
404
|
-
title:
|
|
405
|
-
description:
|
|
406
|
-
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`)
|
|
407
412
|
})
|
|
408
413
|
]
|
|
409
414
|
}),
|
|
410
|
-
/* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ v("button", {
|
|
411
416
|
type: "button",
|
|
412
|
-
onClick: () =>
|
|
417
|
+
onClick: () => O("/"),
|
|
413
418
|
className: "mt-8 inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",
|
|
414
|
-
children: [
|
|
419
|
+
children: [D("devportal.setup.goToDashboard", "Go to dashboard"), /* @__PURE__ */ _(u, { size: 14 })]
|
|
415
420
|
})
|
|
416
421
|
]
|
|
417
422
|
})
|
|
418
423
|
]
|
|
419
424
|
})]
|
|
420
425
|
});
|
|
421
|
-
},
|
|
426
|
+
}, T = ({ icon: e, title: t, description: n, onClick: r, primary: i }) => /* @__PURE__ */ v("button", {
|
|
422
427
|
type: "button",
|
|
423
428
|
onClick: r,
|
|
424
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(" "),
|
|
425
430
|
children: [
|
|
426
|
-
/* @__PURE__ */
|
|
431
|
+
/* @__PURE__ */ _("div", {
|
|
427
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(" "),
|
|
428
433
|
children: e
|
|
429
434
|
}),
|
|
430
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ v("div", {
|
|
431
436
|
className: "min-w-0 flex-1",
|
|
432
|
-
children: [/* @__PURE__ */
|
|
437
|
+
children: [/* @__PURE__ */ _("p", {
|
|
433
438
|
className: "font-semibold text-foreground",
|
|
434
439
|
children: t
|
|
435
|
-
}), /* @__PURE__ */
|
|
440
|
+
}), /* @__PURE__ */ _("p", {
|
|
436
441
|
className: "mt-0.5 text-sm text-muted-foreground",
|
|
437
442
|
children: n
|
|
438
443
|
})]
|
|
439
444
|
}),
|
|
440
|
-
/* @__PURE__ */
|
|
445
|
+
/* @__PURE__ */ _(m, {
|
|
441
446
|
size: 16,
|
|
442
447
|
className: "mt-0.5 flex-shrink-0 text-muted-foreground"
|
|
443
448
|
})
|
|
444
449
|
]
|
|
445
450
|
});
|
|
446
451
|
//#endregion
|
|
447
|
-
export {
|
|
452
|
+
export { w as SetupPage };
|
|
448
453
|
|
|
449
454
|
//# sourceMappingURL=SetupPage.js.map
|