@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.
Files changed (58) hide show
  1. package/dist/devportal/DevportalRoot.js +6 -1
  2. package/dist/devportal/DevportalRoot.js.map +1 -1
  3. package/dist/devportal/DevportalRoutes.js +169 -158
  4. package/dist/devportal/DevportalRoutes.js.map +1 -1
  5. package/dist/devportal/hooks/usePackageUpload.js +120 -0
  6. package/dist/devportal/hooks/usePackageUpload.js.map +1 -0
  7. package/dist/devportal/pages/AnalyticsDashboardPage.js +73 -62
  8. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  9. package/dist/devportal/pages/AppLogsPage.js +89 -82
  10. package/dist/devportal/pages/AppLogsPage.js.map +1 -1
  11. package/dist/devportal/pages/ApplicationDetailPage.js +948 -367
  12. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  13. package/dist/devportal/pages/ApplicationVersionsPage.js +56 -45
  14. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  15. package/dist/devportal/pages/CreateApiKeyPage.js +30 -32
  16. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  17. package/dist/devportal/pages/CreateApplicationPage.js +8 -3
  18. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  19. package/dist/devportal/pages/CreateOAuthClientPage.js +4 -4
  20. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  21. package/dist/devportal/pages/CreateOrganizationPage.js +233 -228
  22. package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
  23. package/dist/devportal/pages/CreateWebhookPage.js +159 -148
  24. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  25. package/dist/devportal/pages/DelegationsPage.js +1 -1
  26. package/dist/devportal/pages/DelegationsPage.js.map +1 -1
  27. package/dist/devportal/pages/EditApplicationPage.js +25 -17
  28. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  29. package/dist/devportal/pages/ListingPreviewPage.js +159 -153
  30. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  31. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  32. package/dist/devportal/pages/OAuthClientsPage.js +2 -2
  33. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  34. package/dist/devportal/pages/OrganizationDetailPage.js +158 -153
  35. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  36. package/dist/devportal/pages/OrganizationMembersPage.js +223 -212
  37. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  38. package/dist/devportal/pages/PublishPage.js +172 -165
  39. package/dist/devportal/pages/PublishPage.js.map +1 -1
  40. package/dist/devportal/pages/ResourcesPage.js.map +1 -1
  41. package/dist/devportal/pages/RevenueDashboardPage.js +405 -0
  42. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -0
  43. package/dist/devportal/pages/SetupPage.js +186 -181
  44. package/dist/devportal/pages/SetupPage.js.map +1 -1
  45. package/dist/devportal/pages/StoreSubmissionPage.js +76 -97
  46. package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
  47. package/dist/devportal/pages/WebhookDetailPage.js +172 -154
  48. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  49. package/dist/devportal/pages/WebhooksPage.js +218 -200
  50. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  51. package/dist/devportal/providers/DevportalProvider.js +16 -13
  52. package/dist/devportal/providers/DevportalProvider.js.map +1 -1
  53. package/dist/devportal/types/index.js.map +1 -1
  54. package/dist/generated/global-operations.js +310 -225
  55. package/dist/generated/global-operations.js.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/devportal/pages/RevenueRedirectPage.js +0 -14
  58. 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 l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
- import { AppWindow as u, ArrowRight as d, BookOpen as ee, Building2 as f, Check as p, ChevronRight as m, Key as te, Rocket as h } from "lucide-react";
9
- import { jsx as g, jsxs as _ } from "react/jsx-runtime";
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 ne = [{
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
- }))], re = [
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 v(e) {
65
+ function x(e) {
72
66
  return e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
73
67
  }
74
- function y() {
68
+ function S() {
75
69
  try {
76
70
  localStorage.setItem("devportal_setup_dismissed", "1");
77
71
  } catch {}
78
72
  }
79
- var b = [
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
- ], x = ({ current: e }) => {
93
- let t = b.findIndex((t) => t.key === e);
94
- return /* @__PURE__ */ g("div", {
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: b.map((e, n) => {
90
+ children: C.map((e, n) => {
97
91
  let r = n < t, i = n === t;
98
- return /* @__PURE__ */ _("div", {
92
+ return /* @__PURE__ */ v("div", {
99
93
  className: "flex items-center",
100
- children: [/* @__PURE__ */ _("div", {
94
+ children: [/* @__PURE__ */ v("div", {
101
95
  className: "flex flex-col items-center gap-1.5",
102
- children: [/* @__PURE__ */ g("div", {
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__ */ g(p, { size: 14 }) : n + 1
105
- }), /* @__PURE__ */ g("span", {
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 < b.length - 1 && /* @__PURE__ */ g("div", { className: ["mx-3 mb-5 h-px w-16 flex-shrink-0 transition-colors", n < t ? "bg-primary" : "bg-border"].join(" ") })]
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
- }, S = () => {
114
- let { navigate: n, basePath: p } = e(), { t: b } = l(), S = t(), w = (e, t) => {
115
- let n = b(e);
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
- }, T = (e) => n?.(`${p}${e}`), [E, D] = c("org"), [O, k] = c(null), [A, ie] = c(null), [j, M] = c(""), [N, P] = c(""), [F, ae] = c(""), [I, L] = c({}), [R, { loading: z }] = s(), B = () => {
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 j.trim() ? j.length < 2 && (e.name = w("devportal.orgNameTooShort", "Name must be at least 2 characters")) : e.name = w("devportal.orgNameRequired", "Organization name is required"), N.trim() ? /^[a-z0-9-]+$/.test(N) || (e.slug = w("devportal.slugInvalid", "Lowercase letters, numbers, and hyphens only")) : e.slug = w("devportal.slugRequired", "Slug is required"), L(e), Object.keys(e).length === 0;
120
- }, V = async () => {
121
- if (B()) try {
122
- let e = (await R({ variables: { input: {
123
- name: j,
124
- slug: N || void 0,
125
- description: F || void 0
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
- e && (S.emit("devportal.org.created", {
128
- organizationId: e,
129
- name: j
130
- }), k(e), D("app"));
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
- }, [H, U] = c(""), [W, G] = c(""), [K, q] = c(""), [J, oe] = c(""), [Y, se] = c(""), [X, Z] = c({}), [ce, { loading: Q }] = o(), le = () => {
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 H.trim() ? H.length < 3 && (e.name = w("devportal.nameTooShort", "Name must be at least 3 characters")) : e.name = w("devportal.appNameRequired", "Application name is required"), K || (e.appType = w("devportal.appTypeRequired", "Application type is required")), J || (e.category = w("devportal.categoryRequired", "Category is required")), Y.trim() || (e.shortDescription = w("devportal.shortDescriptionRequired", "Short description is required")), Z(e), Object.keys(e).length === 0;
135
- }, ue = async () => {
136
- if (le()) try {
137
- let e = (await ce({ variables: { input: {
138
- name: H,
139
- slug: W || void 0,
140
- appType: K,
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: O || void 0
147
+ developerOrganizationId: j || void 0
145
148
  } } })).data?.createApplication?.id;
146
- e && (S.emit("devportal.app.created", {
149
+ e && (E.emit("devportal.app.created", {
147
150
  appId: e,
148
- name: H,
149
- appType: K,
150
- organizationId: O
151
- }), ie(e), y(), D("done"));
151
+ name: W,
152
+ appType: q,
153
+ organizationId: j
154
+ }), ie(e), S(), A("done"));
152
155
  } catch {}
153
156
  }, $ = () => {
154
- y(), T("/");
157
+ S(), O("/");
155
158
  };
156
- return /* @__PURE__ */ _("main", {
159
+ return /* @__PURE__ */ v("main", {
157
160
  className: "min-h-screen bg-surface-default",
158
- children: [/* @__PURE__ */ g("div", {
161
+ children: [/* @__PURE__ */ _("div", {
159
162
  className: "border-b border-border-default bg-surface-raised",
160
- children: /* @__PURE__ */ g("div", {
163
+ children: /* @__PURE__ */ _("div", {
161
164
  className: "mx-auto max-w-2xl px-6 py-5",
162
- children: /* @__PURE__ */ _("div", {
165
+ children: /* @__PURE__ */ v("div", {
163
166
  className: "flex items-center justify-between",
164
- children: [/* @__PURE__ */ _("div", {
167
+ children: [/* @__PURE__ */ v("div", {
165
168
  className: "flex items-center gap-3",
166
- children: [/* @__PURE__ */ g("div", {
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(h, { size: 20 })
169
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
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: w("devportal.developerPortal", "Developer Portal")
172
- }), /* @__PURE__ */ g("h1", {
174
+ children: D("devportal.developerPortal", "Developer Portal")
175
+ }), /* @__PURE__ */ _("h1", {
173
176
  className: "text-base font-semibold text-foreground",
174
- children: w("devportal.setup.title", "Get set up")
177
+ children: D("devportal.setup.title", "Get set up")
175
178
  })] })]
176
- }), E !== "done" && /* @__PURE__ */ g("button", {
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: w("devportal.setup.skipForNow", "Skip for now")
183
+ children: D("devportal.setup.skipForNow", "Skip for now")
181
184
  })]
182
185
  })
183
186
  })
184
- }), /* @__PURE__ */ _("div", {
187
+ }), /* @__PURE__ */ v("div", {
185
188
  className: "mx-auto max-w-2xl px-6 py-10",
186
189
  children: [
187
- /* @__PURE__ */ g("div", {
190
+ /* @__PURE__ */ _("div", {
188
191
  className: "mb-10 flex justify-center",
189
- children: /* @__PURE__ */ g(x, { current: E })
192
+ children: /* @__PURE__ */ _(ne, { current: k })
190
193
  }),
191
- E === "org" && /* @__PURE__ */ _("div", {
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__ */ _("div", {
197
+ /* @__PURE__ */ v("div", {
195
198
  className: "mb-6 flex items-center gap-3",
196
- children: [/* @__PURE__ */ g("div", {
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__ */ g(f, { size: 20 })
199
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h2", {
201
+ children: /* @__PURE__ */ _(f, { size: 20 })
202
+ }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
200
203
  className: "text-lg font-semibold text-foreground",
201
- children: w("devportal.setup.orgTitle", "Set up your organization")
202
- }), /* @__PURE__ */ g("p", {
204
+ children: D("devportal.setup.orgTitle", "Set up your organization")
205
+ }), /* @__PURE__ */ _("p", {
203
206
  className: "text-sm text-muted-foreground",
204
- children: w("devportal.setup.orgSubtitle", "This groups your apps and teams under one publisher identity.")
207
+ children: D("devportal.setup.orgSubtitle", "This groups your apps and teams under one publisher identity.")
205
208
  })] })]
206
209
  }),
207
- /* @__PURE__ */ _("div", {
210
+ /* @__PURE__ */ v("div", {
208
211
  className: "space-y-5",
209
212
  children: [
210
- /* @__PURE__ */ g(r, {
211
- label: w("devportal.organizationName", "Organization Name"),
212
- value: j,
213
+ /* @__PURE__ */ _(r, {
214
+ label: D("devportal.organizationName", "Organization Name"),
215
+ value: N,
213
216
  onChange: (e) => {
214
- M(e.target.value), (!N || N === v(j)) && P(v(e.target.value)), L((e) => ({
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: w("devportal.organizationNamePlaceholder", "Acme Development"),
222
+ placeholder: D("devportal.organizationNamePlaceholder", "Acme Development"),
220
223
  required: !0,
221
- error: I.name
224
+ error: L.name
222
225
  }),
223
- /* @__PURE__ */ g(r, {
224
- label: w("devportal.slug", "Slug"),
225
- value: N,
226
+ /* @__PURE__ */ _(r, {
227
+ label: D("devportal.slug", "Slug"),
228
+ value: P,
226
229
  onChange: (e) => {
227
- P(e.target.value.toLowerCase()), L((e) => ({
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: I.slug,
235
- hint: w("devportal.slugHint", "URL-friendly identifier — auto-generated from name")
237
+ error: L.slug,
238
+ hint: D("devportal.slugHint", "URL-friendly identifier — auto-generated from name")
236
239
  }),
237
- /* @__PURE__ */ g(a, {
238
- label: w("devportal.description", "Description"),
239
- value: F,
240
- onChange: (e) => ae(e.target.value),
241
- placeholder: w("devportal.orgDescriptionPlaceholder", "Tell us about your organization…"),
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__ */ _("div", {
249
+ /* @__PURE__ */ v("div", {
247
250
  className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
248
- children: [/* @__PURE__ */ g("button", {
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: w("devportal.setup.skipForNow", "Skip for now")
253
- }), /* @__PURE__ */ _("button", {
255
+ children: D("devportal.setup.skipForNow", "Skip for now")
256
+ }), /* @__PURE__ */ v("button", {
254
257
  type: "button",
255
- onClick: () => void V(),
256
- disabled: z,
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
- z ? /* @__PURE__ */ g("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
260
- w("devportal.setup.createAndContinue", "Create & Continue"),
261
- !z && /* @__PURE__ */ g(m, { size: 16 })
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
- E === "app" && /* @__PURE__ */ _("div", {
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__ */ _("div", {
273
+ /* @__PURE__ */ v("div", {
271
274
  className: "mb-6 flex items-center gap-3",
272
- children: [/* @__PURE__ */ g("div", {
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__ */ g(u, { size: 20 })
275
- }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("h2", {
277
+ children: /* @__PURE__ */ _(l, { size: 20 })
278
+ }), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("h2", {
276
279
  className: "text-lg font-semibold text-foreground",
277
- children: w("devportal.setup.appTitle", "Create your first app")
278
- }), /* @__PURE__ */ g("p", {
280
+ children: D("devportal.setup.appTitle", "Create your first app")
281
+ }), /* @__PURE__ */ _("p", {
279
282
  className: "text-sm text-muted-foreground",
280
- children: w("devportal.setup.appSubtitle", "Register the app you want to publish or integrate.")
283
+ children: D("devportal.setup.appSubtitle", "Register the app you want to publish or integrate.")
281
284
  })] })]
282
285
  }),
283
- /* @__PURE__ */ _("div", {
286
+ /* @__PURE__ */ v("div", {
284
287
  className: "space-y-5",
285
288
  children: [
286
- /* @__PURE__ */ g(r, {
287
- label: w("devportal.applicationName", "Application Name"),
288
- value: H,
289
+ /* @__PURE__ */ _(r, {
290
+ label: D("devportal.applicationName", "Application Name"),
291
+ value: W,
289
292
  onChange: (e) => {
290
- U(e.target.value), (!W || W === v(H)) && G(v(e.target.value)), Z((e) => ({
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: w("devportal.applicationNamePlaceholder", "My Awesome App"),
298
+ placeholder: D("devportal.applicationNamePlaceholder", "My Awesome App"),
296
299
  required: !0,
297
300
  error: X.name
298
301
  }),
299
- /* @__PURE__ */ _("div", {
302
+ /* @__PURE__ */ v("div", {
300
303
  className: "grid grid-cols-2 gap-4",
301
- children: [/* @__PURE__ */ g(i, {
302
- label: w("devportal.applicationType", "Application Type"),
303
- value: K,
304
+ children: [/* @__PURE__ */ _(i, {
305
+ label: D("devportal.applicationType", "Application Type"),
306
+ value: q,
304
307
  onChange: (e) => {
305
- q(e.target.value), Z((e) => ({
308
+ ce(e.target.value), Z((e) => ({
306
309
  ...e,
307
310
  appType: void 0
308
311
  }));
309
312
  },
310
- options: ne,
313
+ options: y,
314
+ placeholder: D("devportal.selectType", "Select type…"),
311
315
  required: !0,
312
316
  error: X.appType
313
- }), /* @__PURE__ */ g(i, {
314
- label: w("devportal.category", "Category"),
317
+ }), /* @__PURE__ */ _(i, {
318
+ label: D("devportal.category", "Category"),
315
319
  value: J,
316
320
  onChange: (e) => {
317
- oe(e.target.value), Z((e) => ({
321
+ le(e.target.value), Z((e) => ({
318
322
  ...e,
319
323
  category: void 0
320
324
  }));
321
325
  },
322
- options: re,
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__ */ g(a, {
328
- label: w("devportal.shortDescription", "Short Description"),
332
+ /* @__PURE__ */ _(a, {
333
+ label: D("devportal.shortDescription", "Short Description"),
329
334
  value: Y,
330
335
  onChange: (e) => {
331
- se(e.target.value), Z((e) => ({
336
+ ue(e.target.value), Z((e) => ({
332
337
  ...e,
333
338
  shortDescription: void 0
334
339
  }));
335
340
  },
336
- placeholder: w("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
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__ */ _("div", {
349
+ /* @__PURE__ */ v("div", {
345
350
  className: "mt-8 flex items-center justify-between border-t border-border-default pt-6",
346
- children: [/* @__PURE__ */ g("button", {
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: w("devportal.setup.skipForNow", "Skip for now")
351
- }), /* @__PURE__ */ _("button", {
355
+ children: D("devportal.setup.skipForNow", "Skip for now")
356
+ }), /* @__PURE__ */ v("button", {
352
357
  type: "button",
353
- onClick: () => void ue(),
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__ */ g("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : null,
358
- w("devportal.setup.createApp", "Create App"),
359
- !Q && /* @__PURE__ */ g(m, { size: 16 })
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
- E === "done" && /* @__PURE__ */ _("div", {
370
+ k === "done" && /* @__PURE__ */ v("div", {
366
371
  className: "text-center",
367
372
  children: [
368
- /* @__PURE__ */ g("div", {
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(h, { size: 32 })
375
+ children: /* @__PURE__ */ _(g, { size: 32 })
371
376
  }),
372
- /* @__PURE__ */ g("h2", {
377
+ /* @__PURE__ */ _("h2", {
373
378
  className: "text-2xl font-bold text-foreground",
374
- children: w("devportal.setup.doneTitle", "You're all set!")
379
+ children: D("devportal.setup.doneTitle", "You're all set!")
375
380
  }),
376
- /* @__PURE__ */ g("p", {
381
+ /* @__PURE__ */ _("p", {
377
382
  className: "mt-2 text-muted-foreground",
378
- children: w("devportal.setup.doneSubtitle", "Your organization and first app are ready. Here's what to do next.")
383
+ children: D("devportal.setup.doneSubtitle", "Your organization and first app are ready. Here's what to do next.")
379
384
  }),
380
- /* @__PURE__ */ _("div", {
385
+ /* @__PURE__ */ v("div", {
381
386
  className: "mt-8 grid gap-3 sm:grid-cols-2",
382
387
  children: [
383
- A && /* @__PURE__ */ g(C, {
384
- icon: /* @__PURE__ */ g(u, { size: 20 }),
385
- title: w("devportal.setup.viewApp", "View your app"),
386
- description: w("devportal.setup.viewAppDesc", "Configure OAuth, webhooks, and versioning"),
387
- onClick: () => T(`/apps/${A}`),
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__ */ g(C, {
391
- icon: /* @__PURE__ */ g(te, { size: 20 }),
392
- title: w("devportal.setup.generateApiKey", "Generate API key"),
393
- description: w("devportal.setup.generateApiKeyDesc", "Create credentials to start calling APIs"),
394
- onClick: () => T("/api-keys/new")
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__ */ g(C, {
397
- icon: /* @__PURE__ */ g(ee, { size: 20 }),
398
- title: w("devportal.setup.browseDocs", "Browse docs"),
399
- description: w("devportal.setup.browseDocsDesc", "Learn about publishing, SDKs, and webhooks"),
400
- onClick: () => T("/docs")
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
- O && /* @__PURE__ */ g(C, {
403
- icon: /* @__PURE__ */ g(f, { size: 20 }),
404
- title: w("devportal.setup.inviteTeam", "Invite your team"),
405
- description: w("devportal.setup.inviteTeamDesc", "Add members to collaborate on your apps"),
406
- onClick: () => T(`/organizations/${O}/members`)
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__ */ _("button", {
415
+ /* @__PURE__ */ v("button", {
411
416
  type: "button",
412
- onClick: () => T("/"),
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: [w("devportal.setup.goToDashboard", "Go to dashboard"), /* @__PURE__ */ g(d, { size: 14 })]
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
- }, C = ({ icon: e, title: t, description: n, onClick: r, primary: i }) => /* @__PURE__ */ _("button", {
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__ */ g("div", {
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__ */ _("div", {
435
+ /* @__PURE__ */ v("div", {
431
436
  className: "min-w-0 flex-1",
432
- children: [/* @__PURE__ */ g("p", {
437
+ children: [/* @__PURE__ */ _("p", {
433
438
  className: "font-semibold text-foreground",
434
439
  children: t
435
- }), /* @__PURE__ */ g("p", {
440
+ }), /* @__PURE__ */ _("p", {
436
441
  className: "mt-0.5 text-sm text-muted-foreground",
437
442
  children: n
438
443
  })]
439
444
  }),
440
- /* @__PURE__ */ g(m, {
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 { S as SetupPage };
452
+ export { w as SetupPage };
448
453
 
449
454
  //# sourceMappingURL=SetupPage.js.map