@burdenoff/microfe-devportal 2026.611.1 → 2026.614.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 (51) hide show
  1. package/dist/devportal/components/SectionNav.js +105 -41
  2. package/dist/devportal/components/SectionNav.js.map +1 -1
  3. package/dist/devportal/hooks/useGraphQL.js +1 -1
  4. package/dist/devportal/pages/AdminReviewPage.js +36 -36
  5. package/dist/devportal/pages/AnalyticsDashboardPage.js +150 -150
  6. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  7. package/dist/devportal/pages/ApiKeysPage.js +184 -172
  8. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  9. package/dist/devportal/pages/AppLogsPage.js +9 -9
  10. package/dist/devportal/pages/ApplicationDetailPage.js +414 -414
  11. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  12. package/dist/devportal/pages/ApplicationVersionsPage.js +44 -44
  13. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  14. package/dist/devportal/pages/ApplicationsPage.js +118 -118
  15. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  16. package/dist/devportal/pages/CreateApiKeyPage.js +20 -20
  17. package/dist/devportal/pages/CreateApplicationPage.js +32 -32
  18. package/dist/devportal/pages/CreateOAuthClientPage.js +20 -20
  19. package/dist/devportal/pages/CreateOrganizationPage.js +109 -422
  20. package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
  21. package/dist/devportal/pages/CreateWebhookPage.js +25 -25
  22. package/dist/devportal/pages/DashboardPage.js +160 -145
  23. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  24. package/dist/devportal/pages/DelegationsPage.js +22 -22
  25. package/dist/devportal/pages/EditApplicationPage.js +283 -283
  26. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  27. package/dist/devportal/pages/ListingPreviewPage.js +9 -9
  28. package/dist/devportal/pages/OAuthClientDetailPage.js +17 -17
  29. package/dist/devportal/pages/OAuthClientsPage.js +16 -16
  30. package/dist/devportal/pages/OrganizationDetailPage.js +78 -78
  31. package/dist/devportal/pages/OrganizationMembersPage.js +260 -260
  32. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  33. package/dist/devportal/pages/OrganizationsPage.js +18 -18
  34. package/dist/devportal/pages/PublishPage.js +16 -16
  35. package/dist/devportal/pages/PublisherProfilePage.js +156 -146
  36. package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
  37. package/dist/devportal/pages/RevenueDashboardPage.js +528 -322
  38. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  39. package/dist/devportal/pages/SettingsPage.js +17 -17
  40. package/dist/devportal/pages/SetupPage.js +99 -99
  41. package/dist/devportal/pages/SetupPage.js.map +1 -1
  42. package/dist/devportal/pages/WebhookDetailPage.js +143 -143
  43. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  44. package/dist/devportal/pages/WebhooksPage.js +140 -140
  45. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  46. package/dist/devportal/providers/DevportalProvider.js +46 -33
  47. package/dist/devportal/providers/DevportalProvider.js.map +1 -1
  48. package/dist/devportal/types/index.js.map +1 -1
  49. package/dist/generated/global-operations.js +99 -59
  50. package/dist/generated/global-operations.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import { useDevportal as e } from "../providers/DevportalProvider.js";
2
2
  import { useDevportalEventBus as t } from "../events/index.js";
3
- import { PageLayout as n, PageSection as r } from "../components/PageLayout.js";
4
- import { InputField as i, SelectField as a, TextareaField as o } from "../components/FormField.js";
5
- import { useCreateBillingAccountMutation as s, useCreateOrganizationMutation as c } from "../../generated/global-operations.js";
3
+ import { useCreateBillingAccountMutation as n, useCreateOrganizationMutation as r, useLinkDevOrgBillingAccountMutation as i } from "../../generated/global-operations.js";
4
+ import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
5
+ import { InputField as s, TextareaField as c } from "../components/FormField.js";
6
6
  import { PermissionGuard as l } from "../components/PermissionGuard.js";
7
7
  import "../components/index.js";
8
8
  import { DEVPORTAL_PERMISSIONS as u } from "../constants/permissions.js";
@@ -12,452 +12,136 @@ import { useI18n as f } from "@burdenoff/fe-libs/shared/providers/shell/I18nProv
12
12
  import { Building2 as p, Info as m, X as h } from "lucide-react";
13
13
  import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
14
14
  //#region src/devportal/pages/CreateOrganizationPage.tsx
15
- var y = [
16
- {
17
- value: "FREE",
18
- label: "Free - Personal projects and testing"
19
- },
20
- {
21
- value: "DEVELOPER",
22
- label: "Developer - Small teams, 3 apps, 1M API calls/month"
23
- },
24
- {
25
- value: "PROFESSIONAL",
26
- label: "Professional - Growing teams, 10 apps, 10M API calls/month"
27
- },
28
- {
29
- value: "ENTERPRISE",
30
- label: "Enterprise - Large organizations, unlimited apps"
31
- }
32
- ], b = [
33
- {
34
- value: "individual",
35
- label: "Individual / Sole Proprietor"
36
- },
37
- {
38
- value: "llc",
39
- label: "Limited Liability Company (LLC)"
40
- },
41
- {
42
- value: "corporation",
43
- label: "Corporation"
44
- },
45
- {
46
- value: "partnership",
47
- label: "Partnership"
48
- },
49
- {
50
- value: "nonprofit",
51
- label: "Non-Profit Organization"
52
- },
53
- {
54
- value: "other",
55
- label: "Other"
56
- }
57
- ], x = [
58
- {
59
- value: "US",
60
- label: "United States"
61
- },
62
- {
63
- value: "GB",
64
- label: "United Kingdom"
65
- },
66
- {
67
- value: "CA",
68
- label: "Canada"
69
- },
70
- {
71
- value: "AU",
72
- label: "Australia"
73
- },
74
- {
75
- value: "DE",
76
- label: "Germany"
77
- },
78
- {
79
- value: "FR",
80
- label: "France"
81
- },
82
- {
83
- value: "IN",
84
- label: "India"
85
- },
86
- {
87
- value: "JP",
88
- label: "Japan"
89
- },
90
- {
91
- value: "SG",
92
- label: "Singapore"
93
- },
94
- {
95
- value: "NL",
96
- label: "Netherlands"
97
- }
98
- ], S = () => {
99
- let { navigate: S, basePath: C, currentUser: w } = e(), { t: T } = f(), E = (e, t) => {
100
- let n = T(e);
15
+ var y = () => {
16
+ let { navigate: y, basePath: b, currentUser: x } = e(), { t: S } = f(), C = (e, t) => {
17
+ let n = S(e);
101
18
  return n === e ? t : n;
102
- }, [D, O] = d({}), [k, A] = d("basic"), [j, { loading: M }] = c(), [N] = s(), P = t(), [F, I] = d({
19
+ }, [w, T] = d({}), [E, { loading: D }] = r(), [O] = n(), [k] = i(), A = t(), [j, M] = d({
103
20
  name: "",
104
21
  slug: "",
105
22
  description: "",
106
- tier: "FREE",
107
23
  websiteUrl: "",
108
24
  contactEmail: "",
109
- supportEmail: "",
110
- legalEntityName: "",
111
- legalEntityType: "",
112
- taxId: "",
113
- taxCountry: "",
114
- streetAddress: "",
115
- city: "",
116
- state: "",
117
- postalCode: "",
118
- country: ""
119
- }), L = (e) => {
120
- S?.(`${C}${e}`);
121
- }, R = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), z = (e) => {
25
+ supportEmail: ""
26
+ }), N = (e) => {
27
+ y?.(`${b}${e}`);
28
+ }, P = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), F = (e) => {
122
29
  let t = e.target.value;
123
- I((e) => ({
30
+ M((e) => ({
124
31
  ...e,
125
32
  name: t,
126
- slug: e.slug || R(t)
127
- })), D.name && O((e) => ({
33
+ slug: e.slug || P(t)
34
+ })), w.name && T((e) => ({
128
35
  ...e,
129
36
  name: void 0
130
37
  }));
131
- }, B = (e, t) => {
132
- I((n) => ({
38
+ }, I = (e, t) => {
39
+ M((n) => ({
133
40
  ...n,
134
41
  [e]: t
135
- })), D[e] && O((t) => ({
42
+ })), w[e] && T((t) => ({
136
43
  ...t,
137
44
  [e]: void 0
138
45
  }));
139
- }, V = () => {
46
+ }, L = () => {
140
47
  let e = {};
141
- return F.name.trim() ? F.name.length < 2 ? e.name = E("devportal.orgNameTooShort", "Name must be at least 2 characters") : F.name.length > 100 && (e.name = E("devportal.nameTooLong", "Name must be less than 100 characters")) : e.name = E("devportal.orgNameRequired", "Organization name is required"), F.slug.trim() ? /^[a-z0-9-]+$/.test(F.slug) || (e.slug = E("devportal.slugInvalid", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = E("devportal.slugRequired", "Slug is required"), F.contactEmail && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(F.contactEmail) && (e.contactEmail = E("devportal.invalidEmailAddress", "Invalid email address")), F.supportEmail && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(F.supportEmail) && (e.supportEmail = E("devportal.invalidEmailAddress", "Invalid email address")), O(e), Object.keys(e).length === 0;
142
- }, H = () => {
143
- V() && A("billing");
144
- }, U = () => {
145
- A("basic");
146
- }, W = async (e) => {
147
- if (e.preventDefault(), !V()) {
148
- A("basic");
149
- return;
150
- }
151
- try {
152
- let e = F.streetAddress || F.city || F.state || F.postalCode || F.country ? {
153
- street: F.streetAddress || void 0,
154
- city: F.city || void 0,
155
- state: F.state || void 0,
156
- postalCode: F.postalCode || void 0,
157
- country: F.country || void 0
158
- } : void 0, t = await j({ variables: { input: {
159
- name: F.name,
160
- slug: F.slug || void 0,
161
- description: F.description || void 0,
162
- websiteUrl: F.websiteUrl || void 0,
163
- contactEmail: F.contactEmail || void 0,
164
- supportEmail: F.supportEmail || void 0,
165
- legalEntityName: F.legalEntityName || void 0,
166
- legalEntityType: F.legalEntityType || void 0,
167
- legalAddress: e,
168
- metadata: F.tier === "FREE" ? void 0 : { tier: F.tier }
169
- } } });
170
- if (t.data?.createDeveloperOrganization?.id) {
171
- P.emit("devportal.org.created", {
172
- organizationId: t.data.createDeveloperOrganization.id,
173
- name: F.name
174
- });
175
- try {
176
- N({ variables: { input: {
177
- name: F.name,
178
- email: w?.email ?? ""
179
- } } }).catch(() => {});
180
- } catch {}
181
- L(`/organizations/${t.data.createDeveloperOrganization.id}`);
182
- }
183
- } catch (e) {
184
- console.error("Failed to create organization:", e);
185
- }
186
- }, G = () => {
187
- L("/organizations");
188
- }, K = {
189
- FREE: {
190
- apps: 1,
191
- apiCalls: "100K",
192
- storage: "1GB",
193
- members: 2,
194
- price: "Free"
195
- },
196
- DEVELOPER: {
197
- apps: 3,
198
- apiCalls: "1M",
199
- storage: "5GB",
200
- members: 5,
201
- price: "$29/mo"
202
- },
203
- PROFESSIONAL: {
204
- apps: 10,
205
- apiCalls: "10M",
206
- storage: "25GB",
207
- members: 15,
208
- price: "$99/mo"
209
- },
210
- ENTERPRISE: {
211
- apps: "Unlimited",
212
- apiCalls: "100M+",
213
- storage: "100GB+",
214
- members: "Unlimited",
215
- price: "Custom"
216
- }
48
+ return j.name.trim() ? j.name.length < 2 ? e.name = C("devportal.orgNameTooShort", "Name must be at least 2 characters") : j.name.length > 100 && (e.name = C("devportal.nameTooLong", "Name must be less than 100 characters")) : e.name = C("devportal.orgNameRequired", "Organization name is required"), j.slug.trim() ? /^[a-z0-9-]+$/.test(j.slug) || (e.slug = C("devportal.slugInvalid", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = C("devportal.slugRequired", "Slug is required"), j.contactEmail && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(j.contactEmail) && (e.contactEmail = C("devportal.invalidEmailAddress", "Invalid email address")), j.supportEmail && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(j.supportEmail) && (e.supportEmail = C("devportal.invalidEmailAddress", "Invalid email address")), T(e), Object.keys(e).length === 0;
217
49
  };
218
50
  return /* @__PURE__ */ _(l, {
219
51
  permission: u.ORG_CREATE,
220
- children: /* @__PURE__ */ v(n, {
221
- title: E("devportal.createOrganization", "Create Organization"),
222
- description: E("devportal.createOrganizationDescription", "Set up a developer organization to collaborate with your team"),
223
- backLink: `${C}/organizations`,
224
- backLabel: E("devportal.backToOrganizations", "Back to Organizations"),
225
- children: [/* @__PURE__ */ v("div", {
226
- className: "flex items-center gap-4 mb-8",
227
- children: [
228
- /* @__PURE__ */ v("div", {
229
- className: "flex items-center gap-2",
230
- children: [/* @__PURE__ */ _("div", {
231
- className: `flex h-8 w-8 items-center justify-center rounded-full text-sm font-medium ${k === "basic" ? "bg-primary text-primary-foreground" : "bg-primary/20 text-primary"}`,
232
- children: "1"
233
- }), /* @__PURE__ */ _("span", {
234
- className: `text-sm font-medium ${k === "basic" ? "text-foreground" : "text-muted-foreground"}`,
235
- children: E("devportal.basicInfo", "Basic Info")
236
- })]
237
- }),
238
- /* @__PURE__ */ _("div", { className: "h-px flex-1 bg-border" }),
239
- /* @__PURE__ */ v("div", {
240
- className: "flex items-center gap-2",
241
- children: [/* @__PURE__ */ _("div", {
242
- className: `flex h-8 w-8 items-center justify-center rounded-full text-sm font-medium ${k === "billing" ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground"}`,
243
- children: "2"
244
- }), /* @__PURE__ */ _("span", {
245
- className: `text-sm font-medium ${k === "billing" ? "text-foreground" : "text-muted-foreground"}`,
246
- children: E("devportal.billingAndLegal", "Billing & Legal")
247
- })]
248
- })
249
- ]
250
- }), /* @__PURE__ */ v("form", {
251
- onSubmit: W,
52
+ children: /* @__PURE__ */ _(a, {
53
+ title: C("devportal.createOrganization", "Create Organization"),
54
+ description: C("devportal.createOrganizationDescription", "Set up a developer organization to collaborate with your team"),
55
+ backLink: `${b}/organizations`,
56
+ backLabel: C("devportal.backToOrganizations", "Back to Organizations"),
57
+ children: /* @__PURE__ */ v("form", {
58
+ onSubmit: async (e) => {
59
+ if (e.preventDefault(), L()) try {
60
+ let e = (await E({ variables: { input: {
61
+ name: j.name,
62
+ slug: j.slug || void 0,
63
+ description: j.description || void 0,
64
+ websiteUrl: j.websiteUrl || void 0,
65
+ contactEmail: j.contactEmail || void 0,
66
+ supportEmail: j.supportEmail || void 0
67
+ } } })).data?.createDeveloperOrganization?.id;
68
+ if (e) {
69
+ A.emit("devportal.org.created", {
70
+ organizationId: e,
71
+ name: j.name
72
+ });
73
+ try {
74
+ let t = (await O({ variables: { input: {
75
+ name: j.name,
76
+ email: x?.email ?? ""
77
+ } } })).data?.createBillingAccount?.id;
78
+ t && await k({ variables: {
79
+ organizationId: e,
80
+ billingAccountId: t
81
+ } });
82
+ } catch {}
83
+ N(`/organizations/${e}`);
84
+ }
85
+ } catch (e) {
86
+ console.error("Failed to create organization:", e);
87
+ }
88
+ },
252
89
  className: "space-y-8 max-w-3xl",
253
- children: [k === "basic" && /* @__PURE__ */ v(g, { children: [
254
- /* @__PURE__ */ _(r, {
255
- title: E("devportal.organizationDetails", "Organization Details"),
256
- description: E("devportal.organizationDetailsDescription", "Basic information about your organization"),
90
+ children: [
91
+ /* @__PURE__ */ _(o, {
92
+ title: C("devportal.organizationDetails", "Organization Details"),
93
+ description: C("devportal.organizationDetailsDescription", "Basic information about your organization"),
257
94
  children: /* @__PURE__ */ v("div", {
258
95
  className: "space-y-4",
259
96
  children: [
260
- /* @__PURE__ */ _(i, {
261
- label: E("devportal.organizationName", "Organization Name"),
262
- value: F.name,
263
- onChange: z,
264
- placeholder: E("devportal.organizationNamePlaceholder", "Acme Development"),
97
+ /* @__PURE__ */ _(s, {
98
+ label: C("devportal.organizationName", "Organization Name"),
99
+ value: j.name,
100
+ onChange: F,
101
+ placeholder: C("devportal.organizationNamePlaceholder", "Acme Development"),
265
102
  required: !0,
266
- error: D.name,
267
- hint: E("devportal.organizationNameHint", "Your organization's display name")
103
+ error: w.name,
104
+ hint: C("devportal.organizationNameHint", "Your organization's display name")
268
105
  }),
269
- /* @__PURE__ */ _(i, {
270
- label: E("devportal.slug", "Slug"),
271
- value: F.slug,
272
- onChange: (e) => B("slug", e.target.value.toLowerCase()),
273
- placeholder: E("devportal.orgSlugPlaceholder", "acme-dev"),
106
+ /* @__PURE__ */ _(s, {
107
+ label: C("devportal.slug", "Slug"),
108
+ value: j.slug,
109
+ onChange: (e) => I("slug", e.target.value.toLowerCase()),
110
+ placeholder: C("devportal.orgSlugPlaceholder", "acme-dev"),
274
111
  required: !0,
275
- error: D.slug,
276
- hint: E("devportal.slugHint", "URL-friendly identifier (auto-generated from name)")
112
+ error: w.slug,
113
+ hint: C("devportal.slugHint", "URL-friendly identifier (auto-generated from name)")
277
114
  }),
278
- /* @__PURE__ */ _(o, {
279
- label: E("devportal.description", "Description"),
280
- value: F.description,
281
- onChange: (e) => B("description", e.target.value),
282
- placeholder: E("devportal.orgDescriptionPlaceholder", "Tell us about your organization..."),
115
+ /* @__PURE__ */ _(c, {
116
+ label: C("devportal.description", "Description"),
117
+ value: j.description,
118
+ onChange: (e) => I("description", e.target.value),
119
+ placeholder: C("devportal.orgDescriptionPlaceholder", "Tell us about your organization..."),
283
120
  rows: 3
284
121
  }),
285
- /* @__PURE__ */ _(i, {
286
- label: E("devportal.websiteUrl", "Website URL"),
122
+ /* @__PURE__ */ _(s, {
123
+ label: C("devportal.websiteUrl", "Website URL"),
287
124
  type: "url",
288
- value: F.websiteUrl,
289
- onChange: (e) => B("websiteUrl", e.target.value),
125
+ value: j.websiteUrl,
126
+ onChange: (e) => I("websiteUrl", e.target.value),
290
127
  placeholder: "https://example.com"
291
128
  }),
292
129
  /* @__PURE__ */ v("div", {
293
130
  className: "grid gap-4 sm:grid-cols-2",
294
- children: [/* @__PURE__ */ _(i, {
295
- label: E("devportal.contactEmail", "Contact Email"),
131
+ children: [/* @__PURE__ */ _(s, {
132
+ label: C("devportal.contactEmail", "Contact Email"),
296
133
  type: "email",
297
- value: F.contactEmail,
298
- onChange: (e) => B("contactEmail", e.target.value),
134
+ value: j.contactEmail,
135
+ onChange: (e) => I("contactEmail", e.target.value),
299
136
  placeholder: "contact@example.com",
300
- error: D.contactEmail
301
- }), /* @__PURE__ */ _(i, {
302
- label: E("devportal.supportEmail", "Support Email"),
137
+ error: w.contactEmail
138
+ }), /* @__PURE__ */ _(s, {
139
+ label: C("devportal.supportEmail", "Support Email"),
303
140
  type: "email",
304
- value: F.supportEmail,
305
- onChange: (e) => B("supportEmail", e.target.value),
141
+ value: j.supportEmail,
142
+ onChange: (e) => I("supportEmail", e.target.value),
306
143
  placeholder: "support@example.com",
307
- error: D.supportEmail
308
- })]
309
- })
310
- ]
311
- })
312
- }),
313
- /* @__PURE__ */ _(r, {
314
- title: E("devportal.selectPlan", "Select Plan"),
315
- description: E("devportal.selectPlanDescription", "Choose a plan that fits your needs"),
316
- children: /* @__PURE__ */ _("div", {
317
- className: "grid gap-4 sm:grid-cols-2",
318
- children: y.map((e) => {
319
- let t = K[e.value], n = F.tier === e.value;
320
- return /* @__PURE__ */ v("button", {
321
- type: "button",
322
- onClick: () => B("tier", e.value),
323
- className: `rounded-lg border p-4 text-left transition-colors ${n ? "border-primary bg-primary/5 ring-2 ring-primary" : "hover:border-muted-foreground/50"}`,
324
- children: [/* @__PURE__ */ v("div", {
325
- className: "flex items-start justify-between",
326
- children: [/* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
327
- className: "font-medium",
328
- children: e.value
329
- }), /* @__PURE__ */ _("p", {
330
- className: "text-sm text-muted-foreground",
331
- children: t.price
332
- })] }), /* @__PURE__ */ _("div", {
333
- className: `h-4 w-4 rounded-full border-2 ${n ? "border-primary bg-primary" : "border-muted-foreground"}`,
334
- children: n && /* @__PURE__ */ _("div", {
335
- className: "h-full w-full flex items-center justify-center",
336
- children: /* @__PURE__ */ _("div", { className: "h-1.5 w-1.5 rounded-full bg-bg-surface" })
337
- })
338
- })]
339
- }), /* @__PURE__ */ v("div", {
340
- className: "mt-3 grid grid-cols-2 gap-2 text-xs text-muted-foreground",
341
- children: [
342
- /* @__PURE__ */ v("span", { children: [
343
- t.apps,
344
- " ",
345
- E("devportal.apps", "apps")
346
- ] }),
347
- /* @__PURE__ */ v("span", { children: [
348
- t.apiCalls,
349
- " ",
350
- E("devportal.apiCalls", "API calls")
351
- ] }),
352
- /* @__PURE__ */ v("span", { children: [
353
- t.storage,
354
- " ",
355
- E("devportal.storage", "storage")
356
- ] }),
357
- /* @__PURE__ */ v("span", { children: [
358
- t.members,
359
- " ",
360
- E("devportal.members", "members")
361
- ] })
362
- ]
363
- })]
364
- }, e.value);
365
- })
366
- })
367
- }),
368
- /* @__PURE__ */ v("div", {
369
- className: "flex items-center justify-end gap-3 border-t pt-6",
370
- children: [/* @__PURE__ */ v("button", {
371
- type: "button",
372
- onClick: G,
373
- className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors",
374
- children: [/* @__PURE__ */ _(h, { size: 16 }), E("devportal.cancel", "Cancel")]
375
- }), /* @__PURE__ */ _("button", {
376
- type: "button",
377
- onClick: H,
378
- className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors",
379
- children: E("devportal.continue", "Continue")
380
- })]
381
- })
382
- ] }), k === "billing" && /* @__PURE__ */ v(g, { children: [
383
- /* @__PURE__ */ _(r, {
384
- title: E("devportal.legalInformation", "Legal Information"),
385
- description: E("devportal.legalInformationDescription", "Required for payouts and compliance (optional for Free tier)"),
386
- children: /* @__PURE__ */ v("div", {
387
- className: "space-y-4",
388
- children: [
389
- /* @__PURE__ */ _(i, {
390
- label: E("devportal.legalEntityName", "Legal Entity Name"),
391
- value: F.legalEntityName,
392
- onChange: (e) => B("legalEntityName", e.target.value),
393
- placeholder: E("devportal.legalEntityNamePlaceholder", "Acme Inc."),
394
- hint: E("devportal.legalEntityNameHint", "Your registered business name")
395
- }),
396
- /* @__PURE__ */ v("div", {
397
- className: "grid gap-4 sm:grid-cols-2",
398
- children: [/* @__PURE__ */ _(a, {
399
- label: E("devportal.entityType", "Entity Type"),
400
- value: F.legalEntityType,
401
- onChange: (e) => B("legalEntityType", e.target.value),
402
- options: b,
403
- placeholder: E("devportal.selectEntityType", "Select entity type")
404
- }), /* @__PURE__ */ _(a, {
405
- label: E("devportal.taxCountry", "Tax Country"),
406
- value: F.taxCountry,
407
- onChange: (e) => B("taxCountry", e.target.value),
408
- options: x,
409
- placeholder: E("devportal.selectCountry", "Select country")
410
- })]
411
- }),
412
- /* @__PURE__ */ _(i, {
413
- label: E("devportal.taxIdVatNumber", "Tax ID / VAT Number"),
414
- value: F.taxId,
415
- onChange: (e) => B("taxId", e.target.value),
416
- placeholder: "XX-XXXXXXX",
417
- hint: E("devportal.taxIdHint", "Your business tax identification number")
418
- })
419
- ]
420
- })
421
- }),
422
- /* @__PURE__ */ _(r, {
423
- title: E("devportal.businessAddress", "Business Address"),
424
- description: E("devportal.businessAddressDescription", "Used for invoicing and legal documents"),
425
- children: /* @__PURE__ */ v("div", {
426
- className: "space-y-4",
427
- children: [
428
- /* @__PURE__ */ _(i, {
429
- label: E("devportal.streetAddress", "Street Address"),
430
- value: F.streetAddress,
431
- onChange: (e) => B("streetAddress", e.target.value),
432
- placeholder: E("devportal.streetAddressPlaceholder", "123 Main Street")
433
- }),
434
- /* @__PURE__ */ v("div", {
435
- className: "grid gap-4 sm:grid-cols-2",
436
- children: [/* @__PURE__ */ _(i, {
437
- label: E("devportal.city", "City"),
438
- value: F.city,
439
- onChange: (e) => B("city", e.target.value),
440
- placeholder: E("devportal.cityPlaceholder", "San Francisco")
441
- }), /* @__PURE__ */ _(i, {
442
- label: E("devportal.stateProvince", "State / Province"),
443
- value: F.state,
444
- onChange: (e) => B("state", e.target.value),
445
- placeholder: E("devportal.stateProvincePlaceholder", "California")
446
- })]
447
- }),
448
- /* @__PURE__ */ v("div", {
449
- className: "grid gap-4 sm:grid-cols-2",
450
- children: [/* @__PURE__ */ _(i, {
451
- label: E("devportal.postalCode", "Postal Code"),
452
- value: F.postalCode,
453
- onChange: (e) => B("postalCode", e.target.value),
454
- placeholder: E("devportal.postalCodePlaceholder", "94102")
455
- }), /* @__PURE__ */ _(a, {
456
- label: E("devportal.country", "Country"),
457
- value: F.country,
458
- onChange: (e) => B("country", e.target.value),
459
- options: x,
460
- placeholder: E("devportal.selectCountry", "Select country")
144
+ error: w.supportEmail
461
145
  })]
462
146
  })
463
147
  ]
@@ -472,33 +156,36 @@ var y = [
472
156
  className: "text-sm text-status-info-text",
473
157
  children: [/* @__PURE__ */ _("p", {
474
158
  className: "font-medium",
475
- children: E("devportal.canAddLater", "You can add this later")
159
+ children: C("devportal.billingAutoSetup", "A billing account will be automatically set up")
476
160
  }), /* @__PURE__ */ _("p", {
477
- className: "mt-1 text-status-info-text",
478
- children: E("devportal.legalInfoOptionalNote", "Legal and billing information is only required when you want to receive payouts from app sales or upgrade to a paid plan.")
161
+ className: "mt-1",
162
+ children: C("devportal.billingAutoSetupNote", "Revenue from app sales will be credited to it. You can complete legal and tax details for payouts later in Organization Settings.")
479
163
  })]
480
164
  })]
481
165
  }),
482
166
  /* @__PURE__ */ v("div", {
483
- className: "flex items-center justify-between border-t pt-6",
484
- children: [/* @__PURE__ */ _("button", {
167
+ className: "flex items-center justify-end gap-3 border-t pt-6",
168
+ children: [/* @__PURE__ */ v("button", {
485
169
  type: "button",
486
- onClick: U,
487
- className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors",
488
- children: E("devportal.back", "Back")
170
+ onClick: () => {
171
+ N("/organizations");
172
+ },
173
+ disabled: D,
174
+ className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors disabled:opacity-50",
175
+ children: [/* @__PURE__ */ _(h, { size: 16 }), C("devportal.cancel", "Cancel")]
489
176
  }), /* @__PURE__ */ _("button", {
490
177
  type: "submit",
491
- disabled: M,
178
+ disabled: D,
492
179
  className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50",
493
- children: M ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), E("devportal.creating", "Creating...")] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(p, { size: 16 }), E("devportal.createOrganization", "Create Organization")] })
180
+ children: D ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), C("devportal.creating", "Creating...")] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(p, { size: 16 }), C("devportal.createOrganization", "Create Organization")] })
494
181
  })]
495
182
  })
496
- ] })]
497
- })]
183
+ ]
184
+ })
498
185
  })
499
186
  });
500
187
  };
501
188
  //#endregion
502
- export { S as CreateOrganizationPage };
189
+ export { y as CreateOrganizationPage };
503
190
 
504
191
  //# sourceMappingURL=CreateOrganizationPage.js.map