@burdenoff/microfe-devportal 2026.1112.1 → 2026.1113.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/components/AppCard.js +73 -70
- package/dist/devportal/components/AppCard.js.map +1 -1
- package/dist/devportal/components/ImageUploadField.js +82 -80
- package/dist/devportal/components/ImageUploadField.js.map +1 -1
- package/dist/devportal/components/StoreImage.d.ts +15 -0
- package/dist/devportal/components/StoreImage.js +30 -0
- package/dist/devportal/components/StoreImage.js.map +1 -0
- package/dist/devportal/components/index.d.ts +1 -0
- package/dist/devportal/components/index.js +17 -16
- package/dist/devportal/hooks/usePackageUpload.d.ts +46 -4
- package/dist/devportal/hooks/usePackageUpload.js +90 -36
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +205 -202
- package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +2 -2
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +201 -199
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateOrganizationPage.js +120 -114
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/CreatePhysicalItemPage.js +2 -2
- package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +84 -73
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditPhysicalItemPage.js +312 -307
- package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +175 -171
- package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientDetailPage.js +134 -115
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +118 -116
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.js +202 -199
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SetupPage.js +141 -143
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +133 -131
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/utils/errorMessage.d.ts +2 -0
- package/dist/devportal/utils/errorMessage.js +7 -0
- package/dist/devportal/utils/errorMessage.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,22 +3,20 @@ import { InputField as t, SelectField as n, TextareaField as r } from "../compon
|
|
|
3
3
|
import { useDevportal as i } from "../providers/DevportalProvider.js";
|
|
4
4
|
import { useDevportalEventBus as ee } from "../events/index.js";
|
|
5
5
|
import { cn as a } from "../utils/cn.js";
|
|
6
|
-
import {
|
|
6
|
+
import { errorMessage as o } from "../utils/errorMessage.js";
|
|
7
|
+
import { useCreateApplicationMutation as te, useCreateBillingAccountMutation as ne, useCreateDeveloperProfileMutation as re, useCreateOrganizationMutation as ie } from "../../generated/global-operations.js";
|
|
7
8
|
import "../hooks/index.js";
|
|
8
|
-
import { DEVELOPER_AGREEMENT_VERSION as
|
|
9
|
-
import { ELIGIBILITY_RULES as c, reviewRequirementsFor as
|
|
9
|
+
import { DEVELOPER_AGREEMENT_VERSION as ae, DEVELOPER_LINKS as s } from "../constants/developerLinks.js";
|
|
10
|
+
import { ELIGIBILITY_RULES as c, reviewRequirementsFor as oe } from "../utils/developerOnboarding.js";
|
|
10
11
|
import { useState as l } from "react";
|
|
11
|
-
import { AppWindow as u, ArrowRight as
|
|
12
|
-
import { jsx as
|
|
12
|
+
import { AppWindow as u, ArrowRight as se, BookOpen as ce, Box as le, Building2 as d, Check as f, ChevronRight as p, GitFork as ue, Key as de, ListChecks as m, Puzzle as h, Rocket as g, ShieldCheck as _ } from "lucide-react";
|
|
13
|
+
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
13
14
|
import { useI18n as fe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
14
15
|
import { Illustration as pe, PagePurpose as me } from "@burdenoff/fe-libs/ui";
|
|
15
16
|
// src/devportal/pages/SetupPage.tsx
|
|
16
|
-
function
|
|
17
|
+
function b(e) {
|
|
17
18
|
return e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
18
19
|
}
|
|
19
|
-
function b(e, t) {
|
|
20
|
-
return e instanceof Error && e.message ? e.message : t;
|
|
21
|
-
}
|
|
22
20
|
function x() {
|
|
23
21
|
try {
|
|
24
22
|
localStorage.setItem("devportal_setup_dismissed", "1");
|
|
@@ -43,30 +41,30 @@ var S = [
|
|
|
43
41
|
}
|
|
44
42
|
], he = ({ current: e }) => {
|
|
45
43
|
let t = S.findIndex((t) => t.key === e);
|
|
46
|
-
return /* @__PURE__ */
|
|
44
|
+
return /* @__PURE__ */ v("div", {
|
|
47
45
|
className: "flex items-center gap-0",
|
|
48
46
|
children: S.map((e, n) => {
|
|
49
47
|
let r = n < t, i = n === t;
|
|
50
|
-
return /* @__PURE__ */
|
|
48
|
+
return /* @__PURE__ */ y("div", {
|
|
51
49
|
className: "flex items-center",
|
|
52
|
-
children: [/* @__PURE__ */
|
|
50
|
+
children: [/* @__PURE__ */ y("div", {
|
|
53
51
|
className: "flex flex-col items-center gap-1.5",
|
|
54
|
-
children: [/* @__PURE__ */
|
|
52
|
+
children: [/* @__PURE__ */ v("div", {
|
|
55
53
|
className: ["flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold transition-colors", r ? "bg-action-primary-bg text-action-primary-text" : i ? "bg-action-primary-bg text-action-primary-text ring-4 ring-primary/20" : "bg-bg-sunken text-text-secondary"].join(" "),
|
|
56
|
-
children: r ? /* @__PURE__ */
|
|
57
|
-
}), /* @__PURE__ */
|
|
54
|
+
children: r ? /* @__PURE__ */ v(f, { size: 14 }) : n + 1
|
|
55
|
+
}), /* @__PURE__ */ v("span", {
|
|
58
56
|
className: ["text-xs font-medium whitespace-nowrap", i ? "text-text-primary" : "text-text-secondary"].join(" "),
|
|
59
57
|
children: e.label
|
|
60
58
|
})]
|
|
61
|
-
}), n < S.length - 1 && /* @__PURE__ */
|
|
59
|
+
}), n < S.length - 1 && /* @__PURE__ */ v("div", { className: ["mx-3 mb-5 h-px w-16 flex-shrink-0 transition-colors", n < t ? "bg-action-primary-bg" : "bg-border"].join(" ") })]
|
|
62
60
|
}, e.key);
|
|
63
61
|
})
|
|
64
62
|
});
|
|
65
63
|
}, C = () => {
|
|
66
|
-
let { navigate: a, basePath: c, currentUser:
|
|
64
|
+
let { navigate: a, basePath: c, currentUser: _ } = i(), { t: S } = fe(), C = ee(), E = (e, t) => {
|
|
67
65
|
let n = S(e);
|
|
68
66
|
return n === e ? t : n;
|
|
69
|
-
}, D = (e) => a?.(`${c}${e}`), [O, k] = l("org"), [A, _e] = l(null), [j, ve] = l(null), [ye, be] = l(null), [M, xe] = l(""), [N, P] = l(""), [F, Se] = l(""), [I, L] = l({}), [R, Ce] = l(!1), [z, B] = l(null), [we, { loading: Te }] =
|
|
67
|
+
}, D = (e) => a?.(`${c}${e}`), [O, k] = l("org"), [A, _e] = l(null), [j, ve] = l(null), [ye, be] = l(null), [M, xe] = l(""), [N, P] = l(""), [F, Se] = l(""), [I, L] = l({}), [R, Ce] = l(!1), [z, B] = l(null), [we, { loading: Te }] = ie(), [Ee, { loading: De }] = re(), V = Te || De, [Oe] = ne(), ke = () => {
|
|
70
68
|
let e = {};
|
|
71
69
|
return M.trim() ? M.length < 2 && (e.name = E("devportal.orgNameTooShort", "Name must be at least 2 characters")) : e.name = E("devportal.orgNameRequired", "Organization name is required"), N.trim() ? /^[a-z0-9-]+$/.test(N) || (e.slug = E("devportal.slugInvalid", "Lowercase letters, numbers, and hyphens only")) : e.slug = E("devportal.slugRequired", "Slug is required"), R || (e.agreement = E("devportal.onboarding.agreementRequired", "Accept the Developer Agreement to continue")), L(e), Object.keys(e).length === 0;
|
|
72
70
|
}, Ae = async () => {
|
|
@@ -78,13 +76,13 @@ var S = [
|
|
|
78
76
|
name: M,
|
|
79
77
|
slug: N || void 0,
|
|
80
78
|
description: F || void 0,
|
|
81
|
-
contactEmail:
|
|
79
|
+
contactEmail: _?.email || void 0,
|
|
82
80
|
metadata: {
|
|
83
81
|
developerAgreement: {
|
|
84
|
-
version:
|
|
82
|
+
version: ae,
|
|
85
83
|
url: s.developerAgreement,
|
|
86
84
|
acceptedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
87
|
-
acceptedBy:
|
|
85
|
+
acceptedBy: _?.id ?? null
|
|
88
86
|
},
|
|
89
87
|
registrationSource: "devportal-setup"
|
|
90
88
|
}
|
|
@@ -97,16 +95,16 @@ var S = [
|
|
|
97
95
|
try {
|
|
98
96
|
Oe({ variables: { input: {
|
|
99
97
|
name: M,
|
|
100
|
-
email:
|
|
98
|
+
email: _?.email ?? ""
|
|
101
99
|
} } }).catch(() => {});
|
|
102
100
|
} catch {}
|
|
103
101
|
k("app");
|
|
104
102
|
}
|
|
105
103
|
} catch (e) {
|
|
106
|
-
B(
|
|
104
|
+
B(o(e, E("devportal.onboarding.orgCreateFailed", "We could not create your organization. Please try again.")));
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
|
-
}, [H, je] = l(""), [U, Me] = l(""), [W, G] = l(null), [K, Ne] = l(""), [q, Pe] = l(""), [J, Y] = l({}), [X, Z] = l(null), [Fe, { loading: Q }] =
|
|
107
|
+
}, [H, je] = l(""), [U, Me] = l(""), [W, G] = l(null), [K, Ne] = l(""), [q, Pe] = l(""), [J, Y] = l({}), [X, Z] = l(null), [Fe, { loading: Q }] = te(), Ie = () => W === "node" ? "NODE" : W === "workflow" ? "WORKFLOW" : "API_INTEGRATION", Le = () => {
|
|
110
108
|
let e = {};
|
|
111
109
|
return H.trim() ? H.length < 3 && (e.name = E("devportal.nameTooShort", "Name must be at least 3 characters")) : e.name = E("devportal.appNameRequired", "Application name is required"), W || (e.builderType = E("devportal.appTypeRequired", "Application type is required")), K || (e.category = E("devportal.categoryRequired", "Category is required")), q.trim() || (e.shortDescription = E("devportal.shortDescriptionRequired", "Short description is required")), Y(e), Object.keys(e).length === 0;
|
|
112
110
|
}, Re = async () => {
|
|
@@ -130,32 +128,32 @@ var S = [
|
|
|
130
128
|
organizationId: A
|
|
131
129
|
}), ve(t), be(e), x(), k("submit"));
|
|
132
130
|
} catch (e) {
|
|
133
|
-
Z(
|
|
131
|
+
Z(o(e, E("devportal.onboarding.appCreateFailed", "We could not create your app. Please try again.")));
|
|
134
132
|
}
|
|
135
|
-
}, ze =
|
|
133
|
+
}, ze = oe(ye), $ = () => {
|
|
136
134
|
x(), D("/");
|
|
137
135
|
};
|
|
138
|
-
return /* @__PURE__ */
|
|
136
|
+
return /* @__PURE__ */ y("main", {
|
|
139
137
|
className: "min-h-screen bg-surface-default",
|
|
140
|
-
children: [/* @__PURE__ */
|
|
138
|
+
children: [/* @__PURE__ */ v("div", {
|
|
141
139
|
className: "border-b border-border-default bg-surface-raised",
|
|
142
|
-
children: /* @__PURE__ */
|
|
140
|
+
children: /* @__PURE__ */ v("div", {
|
|
143
141
|
className: "mx-auto max-w-2xl px-6 py-5",
|
|
144
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ y("div", {
|
|
145
143
|
className: "flex items-center justify-between",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
144
|
+
children: [/* @__PURE__ */ y("div", {
|
|
147
145
|
className: "flex items-center gap-3",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
146
|
+
children: [/* @__PURE__ */ v("div", {
|
|
149
147
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary",
|
|
150
|
-
children: /* @__PURE__ */
|
|
151
|
-
}), /* @__PURE__ */
|
|
148
|
+
children: /* @__PURE__ */ v(g, { size: 20 })
|
|
149
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
|
|
152
150
|
className: "text-xs font-medium text-text-secondary",
|
|
153
151
|
children: E("devportal.developerPortal", "Developer Portal")
|
|
154
|
-
}), /* @__PURE__ */
|
|
152
|
+
}), /* @__PURE__ */ v("h1", {
|
|
155
153
|
className: "text-base font-semibold text-text-primary",
|
|
156
154
|
children: E("devportal.setup.title", "Get set up")
|
|
157
155
|
})] })]
|
|
158
|
-
}), O !== "done" && /* @__PURE__ */
|
|
156
|
+
}), O !== "done" && /* @__PURE__ */ v("button", {
|
|
159
157
|
type: "button",
|
|
160
158
|
onClick: $,
|
|
161
159
|
className: "text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
@@ -163,48 +161,48 @@ var S = [
|
|
|
163
161
|
})]
|
|
164
162
|
})
|
|
165
163
|
})
|
|
166
|
-
}), /* @__PURE__ */
|
|
164
|
+
}), /* @__PURE__ */ y("div", {
|
|
167
165
|
className: "mx-auto max-w-2xl px-6 py-10",
|
|
168
166
|
children: [
|
|
169
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ v("div", {
|
|
170
168
|
className: "mb-10 flex justify-center",
|
|
171
|
-
children: /* @__PURE__ */
|
|
169
|
+
children: /* @__PURE__ */ v(he, { current: O })
|
|
172
170
|
}),
|
|
173
|
-
O === "org" && /* @__PURE__ */
|
|
171
|
+
O === "org" && /* @__PURE__ */ y("div", {
|
|
174
172
|
className: "mb-8 flex flex-col items-center gap-3 text-center",
|
|
175
|
-
children: [/* @__PURE__ */
|
|
173
|
+
children: [/* @__PURE__ */ v(pe, {
|
|
176
174
|
name: "onboarding",
|
|
177
175
|
alt: E("devportal.setup.illustrationAlt", "Getting started with the developer portal"),
|
|
178
176
|
size: "md"
|
|
179
|
-
}), /* @__PURE__ */
|
|
177
|
+
}), /* @__PURE__ */ v(me, {
|
|
180
178
|
className: "justify-center",
|
|
181
179
|
children: E("devportal.setup.purposeWithReview", "Three quick steps to start building: create the organization that owns your apps, register your first app, then submit it for review. Your developer profile is created with your organization. You can change everything later.")
|
|
182
180
|
})]
|
|
183
181
|
}),
|
|
184
|
-
O === "org" && /* @__PURE__ */
|
|
182
|
+
O === "org" && /* @__PURE__ */ y("div", {
|
|
185
183
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
186
184
|
children: [
|
|
187
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ y("div", {
|
|
188
186
|
className: "mb-6 flex items-center gap-3",
|
|
189
|
-
children: [/* @__PURE__ */
|
|
187
|
+
children: [/* @__PURE__ */ v("div", {
|
|
190
188
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary",
|
|
191
|
-
children: /* @__PURE__ */
|
|
192
|
-
}), /* @__PURE__ */
|
|
189
|
+
children: /* @__PURE__ */ v(d, { size: 20 })
|
|
190
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h2", {
|
|
193
191
|
className: "text-lg font-semibold text-text-primary",
|
|
194
192
|
children: E("devportal.setup.orgTitle", "Set up your organization")
|
|
195
|
-
}), /* @__PURE__ */
|
|
193
|
+
}), /* @__PURE__ */ v("p", {
|
|
196
194
|
className: "text-sm text-text-secondary",
|
|
197
195
|
children: E("devportal.setup.orgSubtitle", "This groups your apps and teams under one publisher identity.")
|
|
198
196
|
})] })]
|
|
199
197
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ y("div", {
|
|
201
199
|
className: "space-y-5",
|
|
202
200
|
children: [
|
|
203
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ v(t, {
|
|
204
202
|
label: E("devportal.organizationName", "Organization Name"),
|
|
205
203
|
value: M,
|
|
206
204
|
onChange: (e) => {
|
|
207
|
-
xe(e.target.value), N && N !==
|
|
205
|
+
xe(e.target.value), N && N !== b(M) || P(b(e.target.value)), L((e) => ({
|
|
208
206
|
...e,
|
|
209
207
|
name: void 0
|
|
210
208
|
}));
|
|
@@ -213,7 +211,7 @@ var S = [
|
|
|
213
211
|
required: !0,
|
|
214
212
|
error: I.name
|
|
215
213
|
}),
|
|
216
|
-
/* @__PURE__ */
|
|
214
|
+
/* @__PURE__ */ v(t, {
|
|
217
215
|
label: E("devportal.slug", "Slug"),
|
|
218
216
|
value: N,
|
|
219
217
|
onChange: (e) => {
|
|
@@ -227,17 +225,17 @@ var S = [
|
|
|
227
225
|
error: I.slug,
|
|
228
226
|
hint: E("devportal.slugHint", "URL-friendly identifier — auto-generated from name")
|
|
229
227
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ v(r, {
|
|
231
229
|
label: E("devportal.description", "Description"),
|
|
232
230
|
value: F,
|
|
233
231
|
onChange: (e) => Se(e.target.value),
|
|
234
232
|
placeholder: E("devportal.orgDescriptionPlaceholder", "Tell us about your organization…"),
|
|
235
233
|
rows: 2
|
|
236
234
|
}),
|
|
237
|
-
/* @__PURE__ */
|
|
238
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ v(ge, { tr: E }),
|
|
236
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("label", {
|
|
239
237
|
className: "flex items-start gap-3 text-sm text-text-primary",
|
|
240
|
-
children: [/* @__PURE__ */
|
|
238
|
+
children: [/* @__PURE__ */ v("input", {
|
|
241
239
|
type: "checkbox",
|
|
242
240
|
"data-testid": "devportal-setup-accept-agreement",
|
|
243
241
|
checked: R,
|
|
@@ -248,10 +246,10 @@ var S = [
|
|
|
248
246
|
}));
|
|
249
247
|
},
|
|
250
248
|
className: "mt-0.5 h-4 w-4 shrink-0 rounded border-border-default accent-primary"
|
|
251
|
-
}), /* @__PURE__ */
|
|
249
|
+
}), /* @__PURE__ */ y("span", { children: [
|
|
252
250
|
E("devportal.onboarding.agreementLabelPrefix", "I meet these requirements and accept the"),
|
|
253
251
|
" ",
|
|
254
|
-
/* @__PURE__ */
|
|
252
|
+
/* @__PURE__ */ v("a", {
|
|
255
253
|
href: s.developerAgreement,
|
|
256
254
|
target: "_blank",
|
|
257
255
|
rel: "noopener noreferrer",
|
|
@@ -261,7 +259,7 @@ var S = [
|
|
|
261
259
|
" ",
|
|
262
260
|
E("devportal.onboarding.and", "and the"),
|
|
263
261
|
" ",
|
|
264
|
-
/* @__PURE__ */
|
|
262
|
+
/* @__PURE__ */ v("a", {
|
|
265
263
|
href: s.acceptableUsePolicy,
|
|
266
264
|
target: "_blank",
|
|
267
265
|
rel: "noopener noreferrer",
|
|
@@ -270,62 +268,62 @@ var S = [
|
|
|
270
268
|
}),
|
|
271
269
|
"."
|
|
272
270
|
] })]
|
|
273
|
-
}), I.agreement && /* @__PURE__ */
|
|
271
|
+
}), I.agreement && /* @__PURE__ */ v("p", {
|
|
274
272
|
className: "mt-1.5 text-xs text-status-error-text",
|
|
275
273
|
children: I.agreement
|
|
276
274
|
})] }),
|
|
277
|
-
z && /* @__PURE__ */
|
|
275
|
+
z && /* @__PURE__ */ v("p", {
|
|
278
276
|
role: "alert",
|
|
279
277
|
className: "rounded-md bg-status-error-bg px-3 py-2 text-sm text-status-error-text",
|
|
280
278
|
children: z
|
|
281
279
|
})
|
|
282
280
|
]
|
|
283
281
|
}),
|
|
284
|
-
/* @__PURE__ */
|
|
282
|
+
/* @__PURE__ */ y("div", {
|
|
285
283
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
286
|
-
children: [/* @__PURE__ */
|
|
284
|
+
children: [/* @__PURE__ */ v("button", {
|
|
287
285
|
type: "button",
|
|
288
286
|
onClick: $,
|
|
289
287
|
className: "text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
290
288
|
children: E("devportal.setup.skipForNow", "Skip for now")
|
|
291
|
-
}), /* @__PURE__ */
|
|
289
|
+
}), /* @__PURE__ */ y("button", {
|
|
292
290
|
type: "button",
|
|
293
291
|
onClick: () => void Ae(),
|
|
294
292
|
disabled: V,
|
|
295
293
|
className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-60 transition-colors",
|
|
296
294
|
children: [
|
|
297
|
-
V ? /* @__PURE__ */
|
|
295
|
+
V ? /* @__PURE__ */ v("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
|
|
298
296
|
E("devportal.setup.createAndContinue", "Create & Continue"),
|
|
299
|
-
!V && /* @__PURE__ */
|
|
297
|
+
!V && /* @__PURE__ */ v(p, { size: 16 })
|
|
300
298
|
]
|
|
301
299
|
})]
|
|
302
300
|
})
|
|
303
301
|
]
|
|
304
302
|
}),
|
|
305
|
-
O === "app" && /* @__PURE__ */
|
|
303
|
+
O === "app" && /* @__PURE__ */ y("div", {
|
|
306
304
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
307
305
|
children: [
|
|
308
|
-
/* @__PURE__ */
|
|
306
|
+
/* @__PURE__ */ y("div", {
|
|
309
307
|
className: "mb-6 flex items-center gap-3",
|
|
310
|
-
children: [/* @__PURE__ */
|
|
308
|
+
children: [/* @__PURE__ */ v("div", {
|
|
311
309
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary",
|
|
312
|
-
children: /* @__PURE__ */
|
|
313
|
-
}), /* @__PURE__ */
|
|
310
|
+
children: /* @__PURE__ */ v(u, { size: 20 })
|
|
311
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h2", {
|
|
314
312
|
className: "text-lg font-semibold text-text-primary",
|
|
315
313
|
children: E("devportal.setup.appTitle", "Create your first app")
|
|
316
|
-
}), /* @__PURE__ */
|
|
314
|
+
}), /* @__PURE__ */ v("p", {
|
|
317
315
|
className: "text-sm text-text-secondary",
|
|
318
316
|
children: E("devportal.setup.appSubtitle", "Register the app you want to publish or integrate.")
|
|
319
317
|
})] })]
|
|
320
318
|
}),
|
|
321
|
-
/* @__PURE__ */
|
|
319
|
+
/* @__PURE__ */ y("div", {
|
|
322
320
|
className: "space-y-5",
|
|
323
321
|
children: [
|
|
324
|
-
/* @__PURE__ */
|
|
322
|
+
/* @__PURE__ */ v(t, {
|
|
325
323
|
label: E("devportal.applicationName", "Application Name"),
|
|
326
324
|
value: H,
|
|
327
325
|
onChange: (e) => {
|
|
328
|
-
je(e.target.value), U && U !==
|
|
326
|
+
je(e.target.value), U && U !== b(H) || Me(b(e.target.value)), Y((e) => ({
|
|
329
327
|
...e,
|
|
330
328
|
name: void 0
|
|
331
329
|
}));
|
|
@@ -334,23 +332,23 @@ var S = [
|
|
|
334
332
|
required: !0,
|
|
335
333
|
error: J.name
|
|
336
334
|
}),
|
|
337
|
-
/* @__PURE__ */
|
|
338
|
-
/* @__PURE__ */
|
|
335
|
+
/* @__PURE__ */ y("div", { children: [
|
|
336
|
+
/* @__PURE__ */ y("p", {
|
|
339
337
|
className: "mb-2 text-sm font-medium text-text-primary",
|
|
340
338
|
children: [
|
|
341
339
|
E("devportal.applicationType", "Application Type"),
|
|
342
340
|
" ",
|
|
343
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ v("span", {
|
|
344
342
|
className: "text-status-error-text",
|
|
345
343
|
children: "*"
|
|
346
344
|
})
|
|
347
345
|
]
|
|
348
346
|
}),
|
|
349
|
-
/* @__PURE__ */
|
|
347
|
+
/* @__PURE__ */ y("div", {
|
|
350
348
|
className: "grid grid-cols-3 gap-3",
|
|
351
349
|
children: [
|
|
352
|
-
/* @__PURE__ */
|
|
353
|
-
icon:
|
|
350
|
+
/* @__PURE__ */ v(w, {
|
|
351
|
+
icon: le,
|
|
354
352
|
title: "App",
|
|
355
353
|
description: "OAuth integration for the platform",
|
|
356
354
|
selected: W === "app",
|
|
@@ -361,8 +359,8 @@ var S = [
|
|
|
361
359
|
}));
|
|
362
360
|
}
|
|
363
361
|
}),
|
|
364
|
-
/* @__PURE__ */
|
|
365
|
-
icon:
|
|
362
|
+
/* @__PURE__ */ v(w, {
|
|
363
|
+
icon: h,
|
|
366
364
|
title: "Node",
|
|
367
365
|
description: "Custom FluidGrids workflow node",
|
|
368
366
|
selected: W === "node",
|
|
@@ -373,8 +371,8 @@ var S = [
|
|
|
373
371
|
}));
|
|
374
372
|
}
|
|
375
373
|
}),
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
icon:
|
|
374
|
+
/* @__PURE__ */ v(w, {
|
|
375
|
+
icon: ue,
|
|
378
376
|
title: "Workflow",
|
|
379
377
|
description: "Reusable automation template",
|
|
380
378
|
selected: W === "workflow",
|
|
@@ -387,12 +385,12 @@ var S = [
|
|
|
387
385
|
})
|
|
388
386
|
]
|
|
389
387
|
}),
|
|
390
|
-
J.builderType && /* @__PURE__ */
|
|
388
|
+
J.builderType && /* @__PURE__ */ v("p", {
|
|
391
389
|
className: "mt-1.5 text-xs text-status-error-text",
|
|
392
390
|
children: J.builderType
|
|
393
391
|
})
|
|
394
392
|
] }),
|
|
395
|
-
/* @__PURE__ */
|
|
393
|
+
/* @__PURE__ */ v(n, {
|
|
396
394
|
label: E("devportal.category", "Category"),
|
|
397
395
|
value: K,
|
|
398
396
|
onChange: (e) => {
|
|
@@ -406,7 +404,7 @@ var S = [
|
|
|
406
404
|
required: !0,
|
|
407
405
|
error: J.category
|
|
408
406
|
}),
|
|
409
|
-
/* @__PURE__ */
|
|
407
|
+
/* @__PURE__ */ v(r, {
|
|
410
408
|
label: E("devportal.shortDescription", "Short Description"),
|
|
411
409
|
value: q,
|
|
412
410
|
onChange: (e) => {
|
|
@@ -421,201 +419,201 @@ var S = [
|
|
|
421
419
|
rows: 2,
|
|
422
420
|
hint: `${q.length}/200`
|
|
423
421
|
}),
|
|
424
|
-
X && /* @__PURE__ */
|
|
422
|
+
X && /* @__PURE__ */ v("p", {
|
|
425
423
|
role: "alert",
|
|
426
424
|
className: "rounded-md bg-status-error-bg px-3 py-2 text-sm text-status-error-text",
|
|
427
425
|
children: X
|
|
428
426
|
})
|
|
429
427
|
]
|
|
430
428
|
}),
|
|
431
|
-
/* @__PURE__ */
|
|
429
|
+
/* @__PURE__ */ y("div", {
|
|
432
430
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
433
|
-
children: [/* @__PURE__ */
|
|
431
|
+
children: [/* @__PURE__ */ v("button", {
|
|
434
432
|
type: "button",
|
|
435
433
|
onClick: $,
|
|
436
434
|
className: "text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
437
435
|
children: E("devportal.setup.skipForNow", "Skip for now")
|
|
438
|
-
}), /* @__PURE__ */
|
|
436
|
+
}), /* @__PURE__ */ y("button", {
|
|
439
437
|
type: "button",
|
|
440
438
|
onClick: () => void Re(),
|
|
441
439
|
disabled: Q,
|
|
442
440
|
className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-60 transition-colors",
|
|
443
441
|
children: [
|
|
444
|
-
Q ? /* @__PURE__ */
|
|
442
|
+
Q ? /* @__PURE__ */ v("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
|
|
445
443
|
E("devportal.setup.createApp", "Create App"),
|
|
446
|
-
!Q && /* @__PURE__ */
|
|
444
|
+
!Q && /* @__PURE__ */ v(p, { size: 16 })
|
|
447
445
|
]
|
|
448
446
|
})]
|
|
449
447
|
})
|
|
450
448
|
]
|
|
451
449
|
}),
|
|
452
|
-
O === "submit" && /* @__PURE__ */
|
|
450
|
+
O === "submit" && /* @__PURE__ */ y("div", {
|
|
453
451
|
className: "rounded-xl border border-border-default bg-surface-raised p-8 shadow-sm",
|
|
454
452
|
children: [
|
|
455
|
-
/* @__PURE__ */
|
|
453
|
+
/* @__PURE__ */ y("div", {
|
|
456
454
|
className: "mb-6 flex items-center gap-3",
|
|
457
|
-
children: [/* @__PURE__ */
|
|
455
|
+
children: [/* @__PURE__ */ v("div", {
|
|
458
456
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary",
|
|
459
|
-
children: /* @__PURE__ */
|
|
460
|
-
}), /* @__PURE__ */
|
|
457
|
+
children: /* @__PURE__ */ v(m, { size: 20 })
|
|
458
|
+
}), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h2", {
|
|
461
459
|
className: "text-lg font-semibold text-text-primary",
|
|
462
460
|
children: E("devportal.onboarding.readyTitle", "Get it ready for review")
|
|
463
|
-
}), /* @__PURE__ */
|
|
461
|
+
}), /* @__PURE__ */ v("p", {
|
|
464
462
|
className: "text-sm text-text-secondary",
|
|
465
463
|
children: E("devportal.onboarding.readySubtitle", "Reviewers check every app before it is listed. Your app page walks you through what they need, then you submit it from there. It stays private until it is approved and you publish it.")
|
|
466
464
|
})] })]
|
|
467
465
|
}),
|
|
468
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ v("ul", {
|
|
469
467
|
"data-testid": "devportal-setup-review-requirements",
|
|
470
468
|
className: "space-y-2",
|
|
471
|
-
children: ze.map((e) => /* @__PURE__ */
|
|
469
|
+
children: ze.map((e) => /* @__PURE__ */ y("li", {
|
|
472
470
|
className: "flex items-start gap-3 rounded-md bg-bg-sunken px-4 py-3 text-sm text-text-primary",
|
|
473
|
-
children: [/* @__PURE__ */
|
|
471
|
+
children: [/* @__PURE__ */ v(f, {
|
|
474
472
|
size: 16,
|
|
475
473
|
className: "mt-0.5 shrink-0 text-text-secondary",
|
|
476
474
|
"aria-hidden": "true"
|
|
477
475
|
}), E(e.key, e.text)]
|
|
478
476
|
}, e.id))
|
|
479
477
|
}),
|
|
480
|
-
/* @__PURE__ */
|
|
478
|
+
/* @__PURE__ */ y("div", {
|
|
481
479
|
className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
|
|
482
|
-
children: [/* @__PURE__ */
|
|
480
|
+
children: [/* @__PURE__ */ v("button", {
|
|
483
481
|
type: "button",
|
|
484
482
|
onClick: () => k("done"),
|
|
485
483
|
className: "text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
486
484
|
children: E("devportal.onboarding.submitLater", "Do this later")
|
|
487
|
-
}), /* @__PURE__ */
|
|
485
|
+
}), /* @__PURE__ */ y("button", {
|
|
488
486
|
type: "button",
|
|
489
487
|
"data-testid": "devportal-setup-finish-app",
|
|
490
488
|
onClick: () => j && D(`/apps/${j}`),
|
|
491
489
|
className: "inline-flex items-center gap-2 rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
|
|
492
|
-
children: [E("devportal.onboarding.finishApp", "Finish and submit"), /* @__PURE__ */
|
|
490
|
+
children: [E("devportal.onboarding.finishApp", "Finish and submit"), /* @__PURE__ */ v(p, { size: 16 })]
|
|
493
491
|
})]
|
|
494
492
|
})
|
|
495
493
|
]
|
|
496
494
|
}),
|
|
497
|
-
O === "done" && /* @__PURE__ */
|
|
495
|
+
O === "done" && /* @__PURE__ */ y("div", {
|
|
498
496
|
className: "text-center",
|
|
499
497
|
children: [
|
|
500
|
-
/* @__PURE__ */
|
|
498
|
+
/* @__PURE__ */ v("div", {
|
|
501
499
|
className: "mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-action-primary-bg/10 text-primary",
|
|
502
|
-
children: /* @__PURE__ */
|
|
500
|
+
children: /* @__PURE__ */ v(g, { size: 32 })
|
|
503
501
|
}),
|
|
504
|
-
/* @__PURE__ */
|
|
502
|
+
/* @__PURE__ */ v("h2", {
|
|
505
503
|
className: "text-2xl font-bold text-text-primary",
|
|
506
504
|
children: E("devportal.setup.doneTitle", "You're all set!")
|
|
507
505
|
}),
|
|
508
|
-
/* @__PURE__ */
|
|
506
|
+
/* @__PURE__ */ v("p", {
|
|
509
507
|
className: "mt-2 text-text-secondary",
|
|
510
508
|
children: E("devportal.setup.doneSubtitle", "Your organization and first app are ready. Here's what to do next.")
|
|
511
509
|
}),
|
|
512
|
-
/* @__PURE__ */
|
|
510
|
+
/* @__PURE__ */ y("div", {
|
|
513
511
|
className: "mt-8 grid gap-3 sm:grid-cols-2",
|
|
514
512
|
children: [
|
|
515
|
-
j && /* @__PURE__ */
|
|
516
|
-
icon: /* @__PURE__ */
|
|
513
|
+
j && /* @__PURE__ */ v(T, {
|
|
514
|
+
icon: /* @__PURE__ */ v(u, { size: 20 }),
|
|
517
515
|
title: E("devportal.setup.viewApp", "View your app"),
|
|
518
516
|
description: E("devportal.setup.viewAppDesc", "Configure OAuth, webhooks, and versioning"),
|
|
519
517
|
onClick: () => D(`/apps/${j}`),
|
|
520
518
|
primary: !0
|
|
521
519
|
}),
|
|
522
|
-
/* @__PURE__ */
|
|
523
|
-
icon: /* @__PURE__ */
|
|
520
|
+
/* @__PURE__ */ v(T, {
|
|
521
|
+
icon: /* @__PURE__ */ v(de, { size: 20 }),
|
|
524
522
|
title: E("devportal.setup.generateApiKey", "Generate API key"),
|
|
525
523
|
description: E("devportal.setup.generateApiKeyDesc", "Create credentials to start calling APIs"),
|
|
526
524
|
onClick: () => D("/api-keys/new")
|
|
527
525
|
}),
|
|
528
|
-
/* @__PURE__ */
|
|
529
|
-
icon: /* @__PURE__ */
|
|
526
|
+
/* @__PURE__ */ v(T, {
|
|
527
|
+
icon: /* @__PURE__ */ v(ce, { size: 20 }),
|
|
530
528
|
title: E("devportal.setup.browseDocs", "Browse docs"),
|
|
531
529
|
description: E("devportal.setup.browseDocsDesc", "Learn about publishing, SDKs, and webhooks"),
|
|
532
530
|
onClick: () => D("/docs")
|
|
533
531
|
}),
|
|
534
|
-
/* @__PURE__ */
|
|
535
|
-
icon: /* @__PURE__ */
|
|
532
|
+
/* @__PURE__ */ v(T, {
|
|
533
|
+
icon: /* @__PURE__ */ v(h, { size: 20 }),
|
|
536
534
|
title: E("devportal.onboarding.publishConnector", "Publish a connector"),
|
|
537
535
|
description: E("devportal.onboarding.publishConnectorDesc", "List an API-key integration in the Workspaces integrations catalog"),
|
|
538
536
|
onClick: () => window.open(s.publishConnector, "_blank", "noopener,noreferrer")
|
|
539
537
|
}),
|
|
540
|
-
A && /* @__PURE__ */
|
|
541
|
-
icon: /* @__PURE__ */
|
|
538
|
+
A && /* @__PURE__ */ v(T, {
|
|
539
|
+
icon: /* @__PURE__ */ v(d, { size: 20 }),
|
|
542
540
|
title: E("devportal.setup.inviteTeam", "Invite your team"),
|
|
543
541
|
description: E("devportal.setup.inviteTeamDesc", "Add members to collaborate on your apps"),
|
|
544
542
|
onClick: () => D(`/organizations/${A}/members`)
|
|
545
543
|
})
|
|
546
544
|
]
|
|
547
545
|
}),
|
|
548
|
-
/* @__PURE__ */
|
|
546
|
+
/* @__PURE__ */ y("button", {
|
|
549
547
|
type: "button",
|
|
550
548
|
onClick: () => D("/"),
|
|
551
549
|
className: "mt-8 inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
552
|
-
children: [E("devportal.setup.goToDashboard", "Go to dashboard"), /* @__PURE__ */
|
|
550
|
+
children: [E("devportal.setup.goToDashboard", "Go to dashboard"), /* @__PURE__ */ v(se, { size: 14 })]
|
|
553
551
|
})
|
|
554
552
|
]
|
|
555
553
|
})
|
|
556
554
|
]
|
|
557
555
|
})]
|
|
558
556
|
});
|
|
559
|
-
}, ge = ({ tr: e }) => /* @__PURE__ */
|
|
557
|
+
}, ge = ({ tr: e }) => /* @__PURE__ */ y("section", {
|
|
560
558
|
"aria-labelledby": "devportal-setup-eligibility-title",
|
|
561
559
|
"data-testid": "devportal-setup-eligibility",
|
|
562
560
|
className: "rounded-lg border border-border-subtle bg-bg-sunken p-4",
|
|
563
|
-
children: [/* @__PURE__ */
|
|
561
|
+
children: [/* @__PURE__ */ y("h3", {
|
|
564
562
|
id: "devportal-setup-eligibility-title",
|
|
565
563
|
className: "flex items-center gap-2 text-sm font-semibold text-text-primary",
|
|
566
|
-
children: [/* @__PURE__ */ _
|
|
564
|
+
children: [/* @__PURE__ */ v(_, {
|
|
567
565
|
size: 16,
|
|
568
566
|
className: "text-primary",
|
|
569
567
|
"aria-hidden": "true"
|
|
570
568
|
}), e("devportal.onboarding.eligibilityTitle", "Who can register")]
|
|
571
|
-
}), /* @__PURE__ */
|
|
569
|
+
}), /* @__PURE__ */ v("ul", {
|
|
572
570
|
className: "mt-2 list-disc space-y-1 pl-5 text-sm text-text-secondary",
|
|
573
|
-
children: c.map((t) => /* @__PURE__ */
|
|
571
|
+
children: c.map((t) => /* @__PURE__ */ v("li", { children: e(t.key, t.text) }, t.id))
|
|
574
572
|
})]
|
|
575
|
-
}), w = ({ icon: e, title: t, description: n, selected: r, onClick: i }) => /* @__PURE__ */
|
|
573
|
+
}), w = ({ icon: e, title: t, description: n, selected: r, onClick: i }) => /* @__PURE__ */ y("button", {
|
|
576
574
|
type: "button",
|
|
577
575
|
onClick: i,
|
|
578
576
|
className: a("relative flex flex-col gap-2 rounded-xl border-2 p-4 text-left transition-all hover:border-primary/50 hover:shadow-sm", r ? "border-primary bg-action-primary-bg/5 shadow-sm" : "border-border-subtle bg-bg-surface"),
|
|
579
577
|
children: [
|
|
580
|
-
r && /* @__PURE__ */
|
|
578
|
+
r && /* @__PURE__ */ v("span", {
|
|
581
579
|
className: "absolute top-3 right-3 flex h-4 w-4 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text",
|
|
582
|
-
children: /* @__PURE__ */
|
|
580
|
+
children: /* @__PURE__ */ v(f, { size: 10 })
|
|
583
581
|
}),
|
|
584
|
-
/* @__PURE__ */
|
|
582
|
+
/* @__PURE__ */ v("div", {
|
|
585
583
|
className: "flex h-8 w-8 items-center justify-center rounded-lg bg-bg-sunken",
|
|
586
|
-
children: /* @__PURE__ */
|
|
584
|
+
children: /* @__PURE__ */ v(e, {
|
|
587
585
|
size: 18,
|
|
588
586
|
className: "text-text-primary"
|
|
589
587
|
})
|
|
590
588
|
}),
|
|
591
|
-
/* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
|
|
592
590
|
className: "text-sm font-semibold text-text-primary",
|
|
593
591
|
children: t
|
|
594
|
-
}), /* @__PURE__ */
|
|
592
|
+
}), /* @__PURE__ */ v("p", {
|
|
595
593
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
596
594
|
children: n
|
|
597
595
|
})] })
|
|
598
596
|
]
|
|
599
|
-
}), T = ({ icon: e, title: t, description: n, onClick: r, primary: i }) => /* @__PURE__ */
|
|
597
|
+
}), T = ({ icon: e, title: t, description: n, onClick: r, primary: i }) => /* @__PURE__ */ y("button", {
|
|
600
598
|
type: "button",
|
|
601
599
|
onClick: r,
|
|
602
600
|
className: ["flex items-start gap-4 rounded-xl border p-5 text-left transition-colors", i ? "border-primary bg-action-primary-bg/5 hover:bg-action-primary-bg/10" : "border-border-default bg-surface-raised hover:bg-surface-hover"].join(" "),
|
|
603
601
|
children: [
|
|
604
|
-
/* @__PURE__ */
|
|
602
|
+
/* @__PURE__ */ v("div", {
|
|
605
603
|
className: ["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg", i ? "bg-action-primary-bg/20 text-primary" : "bg-bg-sunken text-text-secondary"].join(" "),
|
|
606
604
|
children: e
|
|
607
605
|
}),
|
|
608
|
-
/* @__PURE__ */
|
|
606
|
+
/* @__PURE__ */ y("div", {
|
|
609
607
|
className: "min-w-0 flex-1",
|
|
610
|
-
children: [/* @__PURE__ */
|
|
608
|
+
children: [/* @__PURE__ */ v("p", {
|
|
611
609
|
className: "font-semibold text-text-primary",
|
|
612
610
|
children: t
|
|
613
|
-
}), /* @__PURE__ */
|
|
611
|
+
}), /* @__PURE__ */ v("p", {
|
|
614
612
|
className: "mt-0.5 text-sm text-text-secondary",
|
|
615
613
|
children: n
|
|
616
614
|
})]
|
|
617
615
|
}),
|
|
618
|
-
/* @__PURE__ */
|
|
616
|
+
/* @__PURE__ */ v(p, {
|
|
619
617
|
size: 16,
|
|
620
618
|
className: "mt-0.5 flex-shrink-0 text-text-secondary"
|
|
621
619
|
})
|