@burdenoff/microfe-devportal 2026.1110.2 → 2026.1112.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 { useCreateApplicationMutation as o, useCreateBillingAccountMutation as te, useCreateDeveloperProfileMutation as ne, useCreateOrganizationMutation as re } from "../../generated/global-operations.js";
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 ie, DEVELOPER_LINKS as s } from "../constants/developerLinks.js";
9
- import { ELIGIBILITY_RULES as c, reviewRequirementsFor as ae } from "../utils/developerOnboarding.js";
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 oe, BookOpen as se, Box as ce, Building2 as d, Check as f, ChevronRight as p, GitFork as le, Key as ue, ListChecks as de, Puzzle as m, Rocket as h, ShieldCheck as g } from "lucide-react";
12
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
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 y(e) {
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__ */ _("div", {
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__ */ v("div", {
48
+ return /* @__PURE__ */ y("div", {
51
49
  className: "flex items-center",
52
- children: [/* @__PURE__ */ v("div", {
50
+ children: [/* @__PURE__ */ y("div", {
53
51
  className: "flex flex-col items-center gap-1.5",
54
- children: [/* @__PURE__ */ _("div", {
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__ */ _(f, { size: 14 }) : n + 1
57
- }), /* @__PURE__ */ _("span", {
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__ */ _("div", { className: ["mx-3 mb-5 h-px w-16 flex-shrink-0 transition-colors", n < t ? "bg-action-primary-bg" : "bg-border"].join(" ") })]
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: g } = i(), { t: S } = fe(), C = ee(), E = (e, t) => {
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 }] = re(), [Ee, { loading: De }] = ne(), V = Te || De, [Oe] = te(), ke = () => {
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: g?.email || void 0,
79
+ contactEmail: _?.email || void 0,
82
80
  metadata: {
83
81
  developerAgreement: {
84
- version: ie,
82
+ version: ae,
85
83
  url: s.developerAgreement,
86
84
  acceptedAt: (/* @__PURE__ */ new Date()).toISOString(),
87
- acceptedBy: g?.id ?? null
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: g?.email ?? ""
98
+ email: _?.email ?? ""
101
99
  } } }).catch(() => {});
102
100
  } catch {}
103
101
  k("app");
104
102
  }
105
103
  } catch (e) {
106
- B(b(e, E("devportal.onboarding.orgCreateFailed", "We could not create your organization. Please try again.")));
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 }] = o(), Ie = () => W === "node" ? "NODE" : W === "workflow" ? "WORKFLOW" : "API_INTEGRATION", Le = () => {
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(b(e, E("devportal.onboarding.appCreateFailed", "We could not create your app. Please try again.")));
131
+ Z(o(e, E("devportal.onboarding.appCreateFailed", "We could not create your app. Please try again.")));
134
132
  }
135
- }, ze = ae(ye), $ = () => {
133
+ }, ze = oe(ye), $ = () => {
136
134
  x(), D("/");
137
135
  };
138
- return /* @__PURE__ */ v("main", {
136
+ return /* @__PURE__ */ y("main", {
139
137
  className: "min-h-screen bg-surface-default",
140
- children: [/* @__PURE__ */ _("div", {
138
+ children: [/* @__PURE__ */ v("div", {
141
139
  className: "border-b border-border-default bg-surface-raised",
142
- children: /* @__PURE__ */ _("div", {
140
+ children: /* @__PURE__ */ v("div", {
143
141
  className: "mx-auto max-w-2xl px-6 py-5",
144
- children: /* @__PURE__ */ v("div", {
142
+ children: /* @__PURE__ */ y("div", {
145
143
  className: "flex items-center justify-between",
146
- children: [/* @__PURE__ */ v("div", {
144
+ children: [/* @__PURE__ */ y("div", {
147
145
  className: "flex items-center gap-3",
148
- children: [/* @__PURE__ */ _("div", {
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__ */ _(h, { size: 20 })
151
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
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__ */ _("h1", {
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__ */ _("button", {
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__ */ v("div", {
164
+ }), /* @__PURE__ */ y("div", {
167
165
  className: "mx-auto max-w-2xl px-6 py-10",
168
166
  children: [
169
- /* @__PURE__ */ _("div", {
167
+ /* @__PURE__ */ v("div", {
170
168
  className: "mb-10 flex justify-center",
171
- children: /* @__PURE__ */ _(he, { current: O })
169
+ children: /* @__PURE__ */ v(he, { current: O })
172
170
  }),
173
- O === "org" && /* @__PURE__ */ v("div", {
171
+ O === "org" && /* @__PURE__ */ y("div", {
174
172
  className: "mb-8 flex flex-col items-center gap-3 text-center",
175
- children: [/* @__PURE__ */ _(pe, {
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__ */ _(me, {
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__ */ v("div", {
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__ */ v("div", {
185
+ /* @__PURE__ */ y("div", {
188
186
  className: "mb-6 flex items-center gap-3",
189
- children: [/* @__PURE__ */ _("div", {
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__ */ _(d, { size: 20 })
192
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
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__ */ _("p", {
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__ */ v("div", {
198
+ /* @__PURE__ */ y("div", {
201
199
  className: "space-y-5",
202
200
  children: [
203
- /* @__PURE__ */ _(t, {
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 !== y(M) || P(y(e.target.value)), L((e) => ({
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__ */ _(t, {
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__ */ _(r, {
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__ */ _(ge, { tr: E }),
238
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ v("label", {
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__ */ _("input", {
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__ */ v("span", { children: [
249
+ }), /* @__PURE__ */ y("span", { children: [
252
250
  E("devportal.onboarding.agreementLabelPrefix", "I meet these requirements and accept the"),
253
251
  " ",
254
- /* @__PURE__ */ _("a", {
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__ */ _("a", {
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__ */ _("p", {
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__ */ _("p", {
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__ */ v("div", {
282
+ /* @__PURE__ */ y("div", {
285
283
  className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
286
- children: [/* @__PURE__ */ _("button", {
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__ */ v("button", {
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__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
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__ */ _(p, { size: 16 })
297
+ !V && /* @__PURE__ */ v(p, { size: 16 })
300
298
  ]
301
299
  })]
302
300
  })
303
301
  ]
304
302
  }),
305
- O === "app" && /* @__PURE__ */ v("div", {
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__ */ v("div", {
306
+ /* @__PURE__ */ y("div", {
309
307
  className: "mb-6 flex items-center gap-3",
310
- children: [/* @__PURE__ */ _("div", {
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__ */ _(u, { size: 20 })
313
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
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__ */ _("p", {
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__ */ v("div", {
319
+ /* @__PURE__ */ y("div", {
322
320
  className: "space-y-5",
323
321
  children: [
324
- /* @__PURE__ */ _(t, {
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 !== y(H) || Me(y(e.target.value)), Y((e) => ({
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__ */ v("div", { children: [
338
- /* @__PURE__ */ v("p", {
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__ */ _("span", {
341
+ /* @__PURE__ */ v("span", {
344
342
  className: "text-status-error-text",
345
343
  children: "*"
346
344
  })
347
345
  ]
348
346
  }),
349
- /* @__PURE__ */ v("div", {
347
+ /* @__PURE__ */ y("div", {
350
348
  className: "grid grid-cols-3 gap-3",
351
349
  children: [
352
- /* @__PURE__ */ _(w, {
353
- icon: ce,
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__ */ _(w, {
365
- icon: m,
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__ */ _(w, {
377
- icon: le,
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__ */ _("p", {
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__ */ _(n, {
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__ */ _(r, {
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__ */ _("p", {
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__ */ v("div", {
429
+ /* @__PURE__ */ y("div", {
432
430
  className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
433
- children: [/* @__PURE__ */ _("button", {
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__ */ v("button", {
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__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
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__ */ _(p, { size: 16 })
444
+ !Q && /* @__PURE__ */ v(p, { size: 16 })
447
445
  ]
448
446
  })]
449
447
  })
450
448
  ]
451
449
  }),
452
- O === "submit" && /* @__PURE__ */ v("div", {
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__ */ v("div", {
453
+ /* @__PURE__ */ y("div", {
456
454
  className: "mb-6 flex items-center gap-3",
457
- children: [/* @__PURE__ */ _("div", {
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__ */ _(de, { size: 20 })
460
- }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
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__ */ _("p", {
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__ */ _("ul", {
466
+ /* @__PURE__ */ v("ul", {
469
467
  "data-testid": "devportal-setup-review-requirements",
470
468
  className: "space-y-2",
471
- children: ze.map((e) => /* @__PURE__ */ v("li", {
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__ */ _(f, {
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__ */ v("div", {
478
+ /* @__PURE__ */ y("div", {
481
479
  className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
482
- children: [/* @__PURE__ */ _("button", {
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__ */ v("button", {
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__ */ _(p, { size: 16 })]
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__ */ v("div", {
495
+ O === "done" && /* @__PURE__ */ y("div", {
498
496
  className: "text-center",
499
497
  children: [
500
- /* @__PURE__ */ _("div", {
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__ */ _(h, { size: 32 })
500
+ children: /* @__PURE__ */ v(g, { size: 32 })
503
501
  }),
504
- /* @__PURE__ */ _("h2", {
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__ */ _("p", {
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__ */ v("div", {
510
+ /* @__PURE__ */ y("div", {
513
511
  className: "mt-8 grid gap-3 sm:grid-cols-2",
514
512
  children: [
515
- j && /* @__PURE__ */ _(T, {
516
- icon: /* @__PURE__ */ _(u, { size: 20 }),
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__ */ _(T, {
523
- icon: /* @__PURE__ */ _(ue, { size: 20 }),
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__ */ _(T, {
529
- icon: /* @__PURE__ */ _(se, { size: 20 }),
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__ */ _(T, {
535
- icon: /* @__PURE__ */ _(m, { size: 20 }),
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__ */ _(T, {
541
- icon: /* @__PURE__ */ _(d, { size: 20 }),
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__ */ v("button", {
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__ */ _(oe, { size: 14 })]
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__ */ v("section", {
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__ */ v("h3", {
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__ */ _(g, {
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__ */ _("ul", {
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__ */ _("li", { children: e(t.key, t.text) }, t.id))
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__ */ v("button", {
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__ */ _("span", {
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__ */ _(f, { size: 10 })
580
+ children: /* @__PURE__ */ v(f, { size: 10 })
583
581
  }),
584
- /* @__PURE__ */ _("div", {
582
+ /* @__PURE__ */ v("div", {
585
583
  className: "flex h-8 w-8 items-center justify-center rounded-lg bg-bg-sunken",
586
- children: /* @__PURE__ */ _(e, {
584
+ children: /* @__PURE__ */ v(e, {
587
585
  size: 18,
588
586
  className: "text-text-primary"
589
587
  })
590
588
  }),
591
- /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
589
+ /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
592
590
  className: "text-sm font-semibold text-text-primary",
593
591
  children: t
594
- }), /* @__PURE__ */ _("p", {
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__ */ v("button", {
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__ */ _("div", {
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__ */ v("div", {
606
+ /* @__PURE__ */ y("div", {
609
607
  className: "min-w-0 flex-1",
610
- children: [/* @__PURE__ */ _("p", {
608
+ children: [/* @__PURE__ */ v("p", {
611
609
  className: "font-semibold text-text-primary",
612
610
  children: t
613
- }), /* @__PURE__ */ _("p", {
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__ */ _(p, {
616
+ /* @__PURE__ */ v(p, {
619
617
  size: 16,
620
618
  className: "mt-0.5 flex-shrink-0 text-text-secondary"
621
619
  })