@burdenoff/microfe-devportal 2026.609.3 → 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 +170 -217
  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
@@ -9,13 +9,13 @@ import { DataTable as l, DetailList as u } from "../components/DataTable.js";
9
9
  import { useGetApplicationsQuery as d, useGetOrganizationQuery as f } from "../../generated/global-operations.js";
10
10
  import { DEVPORTAL_PERMISSIONS as p } from "../constants/permissions.js";
11
11
  import { useDevportalPermission as m } from "../hooks/usePermission.js";
12
- import { useState as h } from "react";
13
- import { useI18n as g } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
14
- import { AlertCircle as _, AppWindow as v, ArrowRight as y, BarChart3 as b, Building2 as x, CheckCircle as S, DollarSign as C, Edit as w, ExternalLink as T, Loader2 as E, Plus as D, Settings as O, Shield as k, TrendingUp as A, Users as j } from "lucide-react";
15
- import { useParams as M } from "react-router-dom";
16
- import { jsx as N, jsxs as P } from "react/jsx-runtime";
12
+ import { useEffect as h, useState as g } from "react";
13
+ import { useI18n as _ } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
14
+ import { AlertCircle as v, AppWindow as y, ArrowRight as b, BarChart3 as x, Building2 as S, CheckCircle as C, DollarSign as w, Edit as T, ExternalLink as E, Loader2 as D, Plus as O, Settings as k, Shield as A, TrendingUp as j, Users as M } from "lucide-react";
15
+ import { useParams as N } from "react-router-dom";
16
+ import { jsx as P, jsxs as F } from "react/jsx-runtime";
17
17
  //#region src/devportal/pages/OrganizationDetailPage.tsx
18
- function F(e) {
18
+ function I(e) {
19
19
  return {
20
20
  id: e.id,
21
21
  name: e.name,
@@ -58,7 +58,7 @@ function F(e) {
58
58
  updatedAt: e.updatedAt
59
59
  };
60
60
  }
61
- function I(e) {
61
+ function L(e) {
62
62
  return {
63
63
  id: e.id,
64
64
  organizationId: e.organizationId,
@@ -78,221 +78,226 @@ function I(e) {
78
78
  updatedAt: e.updatedAt
79
79
  };
80
80
  }
81
- var L = () => {
82
- let { navigate: n, basePath: i } = e(), { orgId: a } = M(), { t: o } = g(), s = (e, t) => {
81
+ var R = () => {
82
+ let { navigate: n, basePath: i } = e(), { orgId: a } = N(), { t: o } = _(), s = (e, t) => {
83
83
  let n = o(e);
84
84
  return n === e ? t : n;
85
- }, { allowed: c } = m(p.ORG_UPDATE), [l, u] = h("overview"), y = [
85
+ }, { allowed: c } = m(p.ORG_UPDATE), [l, u] = g("overview"), b = [
86
86
  {
87
87
  id: "overview",
88
88
  label: s("devportal.overview", "Overview"),
89
- icon: x
89
+ icon: S
90
90
  },
91
91
  {
92
92
  id: "apps",
93
93
  label: s("devportal.applications", "Applications"),
94
- icon: v
94
+ icon: y
95
95
  },
96
96
  {
97
97
  id: "members",
98
98
  label: s("devportal.members", "Members"),
99
- icon: j
99
+ icon: M
100
100
  },
101
101
  {
102
102
  id: "settings",
103
103
  label: s("devportal.settings", "Settings"),
104
- icon: O
104
+ icon: k
105
105
  }
106
- ], { data: b, loading: S, error: T } = f({
106
+ ], { data: x, loading: C, error: E } = f({
107
107
  variables: { id: a },
108
108
  skip: !a
109
- }), { data: D } = d({
109
+ }), { data: O } = d({
110
110
  variables: { limit: 50 },
111
111
  fetchPolicy: "cache-and-network"
112
- }), k = (e) => {
112
+ }), A = (e) => {
113
113
  n?.(`${i}${e}`);
114
114
  };
115
- if (S) return /* @__PURE__ */ N(r, {
115
+ if (h(() => {
116
+ let e = x?.developerOrganization?.name;
117
+ if (!a || !e) return;
118
+ let t = window.__breadcrumbRegistry;
119
+ return t?.register(a, e), () => t?.unregister(a);
120
+ }, [a, x?.developerOrganization?.name]), C) return /* @__PURE__ */ P(r, {
116
121
  title: s("devportal.loadingDots", "Loading..."),
117
122
  backLink: `${i}/organizations`,
118
123
  backLabel: s("devportal.backToOrganizations", "Back to Organizations"),
119
- children: /* @__PURE__ */ N("div", {
124
+ children: /* @__PURE__ */ P("div", {
120
125
  className: "flex items-center justify-center py-12",
121
- children: /* @__PURE__ */ N(E, { className: "h-8 w-8 animate-spin text-muted-foreground" })
126
+ children: /* @__PURE__ */ P(D, { className: "h-8 w-8 animate-spin text-muted-foreground" })
122
127
  })
123
128
  });
124
- if (T || !b?.developerOrganization) return /* @__PURE__ */ N(r, {
129
+ if (E || !x?.developerOrganization) return /* @__PURE__ */ P(r, {
125
130
  title: s("devportal.organizationNotFound", "Organization Not Found"),
126
131
  backLink: `${i}/organizations`,
127
132
  backLabel: s("devportal.backToOrganizations", "Back to Organizations"),
128
- children: /* @__PURE__ */ P("div", {
133
+ children: /* @__PURE__ */ F("div", {
129
134
  className: "flex flex-col items-center justify-center py-12 gap-4",
130
135
  children: [
131
- /* @__PURE__ */ N(_, { className: "h-12 w-12 text-destructive" }),
132
- /* @__PURE__ */ N("h2", {
136
+ /* @__PURE__ */ P(v, { className: "h-12 w-12 text-destructive" }),
137
+ /* @__PURE__ */ P("h2", {
133
138
  className: "text-lg font-semibold",
134
139
  children: s("devportal.organizationNotFoundLower", "Organization not found")
135
140
  }),
136
- /* @__PURE__ */ N("p", {
141
+ /* @__PURE__ */ P("p", {
137
142
  className: "text-muted-foreground",
138
- children: T?.message || s("devportal.organizationNotFoundDescription", "The organization you're looking for doesn't exist or you don't have access to it.")
143
+ children: E?.message || s("devportal.organizationNotFoundDescription", "The organization you're looking for doesn't exist or you don't have access to it.")
139
144
  }),
140
- /* @__PURE__ */ N("button", {
141
- onClick: () => k("/organizations"),
145
+ /* @__PURE__ */ P("button", {
146
+ onClick: () => A("/organizations"),
142
147
  className: "mt-4 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",
143
148
  children: s("devportal.backToOrganizations", "Back to Organizations")
144
149
  })
145
150
  ]
146
151
  })
147
152
  });
148
- let A = F(b.developerOrganization), L = (b.developerOrganization.members ?? []).map(I), H = D?.applications?.edges?.map((e) => e.node) ?? [], U = a ? H.filter((e) => e.developerOrganizationId === a) : H, W = parseInt(A.apiCallsUsed) / A.apiCallsLimit * 100, G = parseInt(A.storageUsed) / parseInt(A.storageLimit) * 100;
149
- return /* @__PURE__ */ P(r, {
150
- title: A.name,
151
- description: A.description,
153
+ let j = I(x.developerOrganization), R = (x.developerOrganization.members ?? []).map(L), U = O?.applications?.edges?.map((e) => e.node) ?? [], W = a ? U.filter((e) => e.developerOrganizationId === a) : U, G = parseInt(j.apiCallsUsed) / j.apiCallsLimit * 100, K = parseInt(j.storageUsed) / parseInt(j.storageLimit) * 100;
154
+ return /* @__PURE__ */ F(r, {
155
+ title: j.name,
156
+ description: j.description,
152
157
  backLink: `${i}/organizations`,
153
158
  backLabel: s("devportal.backToOrganizations", "Back to Organizations"),
154
- actions: /* @__PURE__ */ P("div", {
159
+ actions: /* @__PURE__ */ F("div", {
155
160
  className: "flex items-center gap-2",
156
- children: [/* @__PURE__ */ P("button", {
157
- onClick: () => n?.(`/billing/earnings?developerOrgId=${encodeURIComponent(A.id)}&developerOrgName=${encodeURIComponent(A.name)}`),
161
+ children: [/* @__PURE__ */ F("button", {
162
+ onClick: () => n?.(`/billing/earnings?developerOrgId=${encodeURIComponent(j.id)}&developerOrgName=${encodeURIComponent(j.name)}`),
158
163
  className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted transition-colors",
159
- children: [/* @__PURE__ */ N(C, { size: 16 }), s("devportal.revenue", "Revenue")]
160
- }), /* @__PURE__ */ P("button", {
164
+ children: [/* @__PURE__ */ P(w, { size: 16 }), s("devportal.revenue", "Revenue")]
165
+ }), /* @__PURE__ */ F("button", {
161
166
  onClick: () => u("settings"),
162
167
  disabled: !c,
163
168
  "aria-disabled": !c,
164
169
  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",
165
- children: [/* @__PURE__ */ N(w, { size: 16 }), s("devportal.settings", "Settings")]
170
+ children: [/* @__PURE__ */ P(T, { size: 16 }), s("devportal.settings", "Settings")]
166
171
  })]
167
172
  }),
168
- children: [/* @__PURE__ */ N("div", {
173
+ children: [/* @__PURE__ */ P("div", {
169
174
  className: "border-b",
170
- children: /* @__PURE__ */ N("nav", {
175
+ children: /* @__PURE__ */ P("nav", {
171
176
  className: "-mb-px flex gap-4 overflow-x-auto",
172
177
  role: "tablist",
173
178
  "aria-label": s("devportal.organizationSections", "Organization sections"),
174
- children: y.map((e) => {
179
+ children: b.map((e) => {
175
180
  let n = e.icon;
176
- return /* @__PURE__ */ P("button", {
181
+ return /* @__PURE__ */ F("button", {
177
182
  id: `organization-tab-${e.id}`,
178
183
  role: "tab",
179
184
  "aria-selected": l === e.id,
180
185
  "aria-controls": `organization-panel-${e.id}`,
181
186
  onClick: () => u(e.id),
182
187
  className: t("flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors", l === e.id ? "border-primary text-primary" : "border-transparent text-muted-foreground hover:text-foreground hover:border-muted-foreground"),
183
- children: [/* @__PURE__ */ N(n, { size: 16 }), e.label]
188
+ children: [/* @__PURE__ */ P(n, { size: 16 }), e.label]
184
189
  }, e.id);
185
190
  })
186
191
  })
187
- }), /* @__PURE__ */ P("div", {
192
+ }), /* @__PURE__ */ F("div", {
188
193
  className: "mt-6",
189
194
  id: `organization-panel-${l}`,
190
195
  role: "tabpanel",
191
196
  "aria-labelledby": `organization-tab-${l}`,
192
197
  tabIndex: 0,
193
198
  children: [
194
- l === "overview" && /* @__PURE__ */ N(R, {
195
- org: A,
196
- apps: U,
197
- members: L,
198
- apiCallsPercent: W,
199
- storagePercent: G,
200
- onNavigate: k,
199
+ l === "overview" && /* @__PURE__ */ P(z, {
200
+ org: j,
201
+ apps: W,
202
+ members: R,
203
+ apiCallsPercent: G,
204
+ storagePercent: K,
205
+ onNavigate: A,
201
206
  onShowApps: () => u("apps")
202
207
  }),
203
- l === "apps" && /* @__PURE__ */ N(z, {
204
- apps: U,
205
- onNavigate: k
208
+ l === "apps" && /* @__PURE__ */ P(B, {
209
+ apps: W,
210
+ onNavigate: A
206
211
  }),
207
- l === "members" && /* @__PURE__ */ N(B, {
208
- members: L,
209
- onNavigate: k,
210
- orgId: A.id
212
+ l === "members" && /* @__PURE__ */ P(V, {
213
+ members: R,
214
+ onNavigate: A,
215
+ orgId: j.id
211
216
  }),
212
- l === "settings" && /* @__PURE__ */ N(V, { org: A })
217
+ l === "settings" && /* @__PURE__ */ P(H, { org: j })
213
218
  ]
214
219
  })]
215
220
  });
216
- }, R = ({ org: e, apps: t, members: r, apiCallsPercent: l, storagePercent: d, onNavigate: f, onShowApps: p }) => {
217
- let { t: m } = g(), h = (e, t) => {
221
+ }, z = ({ org: e, apps: t, members: r, apiCallsPercent: l, storagePercent: d, onNavigate: f, onShowApps: p }) => {
222
+ let { t: m } = _(), h = (e, t) => {
218
223
  let n = m(e);
219
224
  return n === e ? t : n;
220
225
  };
221
- return /* @__PURE__ */ P("div", {
226
+ return /* @__PURE__ */ F("div", {
222
227
  className: "grid gap-6 lg:grid-cols-3",
223
- children: [/* @__PURE__ */ P("div", {
228
+ children: [/* @__PURE__ */ F("div", {
224
229
  className: "lg:col-span-2 space-y-6",
225
230
  children: [
226
- /* @__PURE__ */ P(o, {
231
+ /* @__PURE__ */ F(o, {
227
232
  columns: 4,
228
233
  children: [
229
- /* @__PURE__ */ N(a, {
234
+ /* @__PURE__ */ P(a, {
230
235
  title: h("devportal.publishedApps", "Published Apps"),
231
236
  value: `${e.publishedApps}/${e.totalApps}`,
232
- icon: /* @__PURE__ */ N(v, { size: 20 })
237
+ icon: /* @__PURE__ */ P(y, { size: 20 })
233
238
  }),
234
- /* @__PURE__ */ N(a, {
239
+ /* @__PURE__ */ P(a, {
235
240
  title: h("devportal.totalInstalls", "Total Installs"),
236
241
  value: e.totalInstalls.toLocaleString(),
237
- icon: /* @__PURE__ */ N(A, { size: 20 }),
242
+ icon: /* @__PURE__ */ P(j, { size: 20 }),
238
243
  trend: {
239
244
  value: 12,
240
245
  label: h("devportal.thisMonth", "this month")
241
246
  }
242
247
  }),
243
- /* @__PURE__ */ N(a, {
248
+ /* @__PURE__ */ P(a, {
244
249
  title: h("devportal.totalRevenue", "Total Revenue"),
245
250
  value: `$${e.totalRevenue.toLocaleString()}`,
246
- icon: /* @__PURE__ */ N(C, { size: 20 })
251
+ icon: /* @__PURE__ */ P(w, { size: 20 })
247
252
  }),
248
- /* @__PURE__ */ N(a, {
253
+ /* @__PURE__ */ P(a, {
249
254
  title: h("devportal.avgRating", "Avg Rating"),
250
255
  value: e.averageRating ? `${e.averageRating.toFixed(1)} ★` : h("devportal.notAvailable", "N/A"),
251
- icon: /* @__PURE__ */ N(b, { size: 20 })
256
+ icon: /* @__PURE__ */ P(x, { size: 20 })
252
257
  })
253
258
  ]
254
259
  }),
255
- /* @__PURE__ */ N(i, {
260
+ /* @__PURE__ */ P(i, {
256
261
  title: h("devportal.recentApplications", "Recent Applications"),
257
- actions: /* @__PURE__ */ P("button", {
262
+ actions: /* @__PURE__ */ F("button", {
258
263
  onClick: p,
259
264
  className: "text-sm text-primary hover:underline flex items-center gap-1",
260
265
  children: [
261
266
  h("devportal.viewAll", "View all"),
262
267
  " ",
263
- /* @__PURE__ */ N(y, { size: 14 })
268
+ /* @__PURE__ */ P(b, { size: 14 })
264
269
  ]
265
270
  }),
266
- children: t.length > 0 ? /* @__PURE__ */ N("div", {
271
+ children: t.length > 0 ? /* @__PURE__ */ P("div", {
267
272
  className: "space-y-2",
268
- children: t.slice(0, 3).map((e) => /* @__PURE__ */ N(c, {
273
+ children: t.slice(0, 3).map((e) => /* @__PURE__ */ P(c, {
269
274
  app: e,
270
275
  onClick: () => f(`/apps/${e.id}`)
271
276
  }, e.id))
272
- }) : /* @__PURE__ */ N(n, {
273
- icon: /* @__PURE__ */ N(v, { size: 24 }),
277
+ }) : /* @__PURE__ */ P(n, {
278
+ icon: /* @__PURE__ */ P(y, { size: 24 }),
274
279
  title: h("devportal.noApplications", "No applications"),
275
280
  description: h("devportal.createYourFirstApplication", "Create your first application")
276
281
  })
277
282
  }),
278
- /* @__PURE__ */ P(i, {
283
+ /* @__PURE__ */ F(i, {
279
284
  title: h("devportal.usageAndQuotas", "Usage & Quotas"),
280
- children: [/* @__PURE__ */ P("div", {
285
+ children: [/* @__PURE__ */ F("div", {
281
286
  className: "grid gap-4 sm:grid-cols-2",
282
- children: [/* @__PURE__ */ N(H, {
287
+ children: [/* @__PURE__ */ P(U, {
283
288
  label: h("devportal.apiCalls", "API Calls"),
284
289
  used: parseInt(e.apiCallsUsed),
285
290
  limit: e.apiCallsLimit,
286
291
  percent: l,
287
292
  format: "number"
288
- }), /* @__PURE__ */ N(H, {
293
+ }), /* @__PURE__ */ P(U, {
289
294
  label: h("devportal.storage", "Storage"),
290
295
  used: parseInt(e.storageUsed),
291
296
  limit: parseInt(e.storageLimit),
292
297
  percent: d,
293
298
  format: "bytes"
294
299
  })]
295
- }), e.quotaResetAt && /* @__PURE__ */ P("p", {
300
+ }), e.quotaResetAt && /* @__PURE__ */ F("p", {
296
301
  className: "text-xs text-muted-foreground mt-2",
297
302
  children: [
298
303
  h("devportal.quotasResetOn", "Quotas reset on"),
@@ -302,12 +307,12 @@ var L = () => {
302
307
  })]
303
308
  })
304
309
  ]
305
- }), /* @__PURE__ */ P("div", {
310
+ }), /* @__PURE__ */ F("div", {
306
311
  className: "space-y-6",
307
312
  children: [
308
- /* @__PURE__ */ N(i, {
313
+ /* @__PURE__ */ P(i, {
309
314
  title: h("devportal.revenueSummary", "Revenue Summary"),
310
- children: /* @__PURE__ */ N(u, { items: [
315
+ children: /* @__PURE__ */ P(u, { items: [
311
316
  {
312
317
  label: h("devportal.totalRevenue", "Total Revenue"),
313
318
  value: `$${e.totalRevenue.toLocaleString()}`
@@ -330,31 +335,31 @@ var L = () => {
330
335
  }
331
336
  ] })
332
337
  }),
333
- /* @__PURE__ */ N(i, {
338
+ /* @__PURE__ */ P(i, {
334
339
  title: h("devportal.teamMembers", "Team Members"),
335
- actions: /* @__PURE__ */ N("button", {
340
+ actions: /* @__PURE__ */ P("button", {
336
341
  onClick: () => f(`/organizations/${e.id}/members`),
337
342
  className: "text-sm text-primary hover:underline",
338
343
  children: h("devportal.manage", "Manage")
339
344
  }),
340
- children: /* @__PURE__ */ P("div", {
345
+ children: /* @__PURE__ */ F("div", {
341
346
  className: "space-y-2",
342
- children: [r.slice(0, 3).map((e) => /* @__PURE__ */ N("div", {
347
+ children: [r.slice(0, 3).map((e) => /* @__PURE__ */ P("div", {
343
348
  className: "flex items-center justify-between py-2",
344
- children: /* @__PURE__ */ P("div", {
349
+ children: /* @__PURE__ */ F("div", {
345
350
  className: "flex items-center gap-3",
346
- children: [/* @__PURE__ */ N("div", {
351
+ children: [/* @__PURE__ */ P("div", {
347
352
  className: "h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center text-sm font-medium text-primary",
348
353
  children: e.email?.charAt(0).toUpperCase() || "U"
349
- }), /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
354
+ }), /* @__PURE__ */ F("div", { children: [/* @__PURE__ */ P("p", {
350
355
  className: "text-sm font-medium",
351
356
  children: e.email
352
- }), /* @__PURE__ */ N("p", {
357
+ }), /* @__PURE__ */ P("p", {
353
358
  className: "text-xs text-muted-foreground",
354
359
  children: s[e.role]
355
360
  })] })]
356
361
  })
357
- }, e.id)), r.length > 3 && /* @__PURE__ */ P("p", {
362
+ }, e.id)), r.length > 3 && /* @__PURE__ */ F("p", {
358
363
  className: "text-xs text-muted-foreground",
359
364
  children: [
360
365
  "+",
@@ -365,98 +370,98 @@ var L = () => {
365
370
  })]
366
371
  })
367
372
  }),
368
- /* @__PURE__ */ N(i, {
373
+ /* @__PURE__ */ P(i, {
369
374
  title: h("devportal.links", "Links"),
370
- children: /* @__PURE__ */ P("div", {
375
+ children: /* @__PURE__ */ F("div", {
371
376
  className: "space-y-2",
372
- children: [e.websiteUrl && /* @__PURE__ */ P("a", {
377
+ children: [e.websiteUrl && /* @__PURE__ */ F("a", {
373
378
  href: e.websiteUrl,
374
379
  target: "_blank",
375
380
  rel: "noopener noreferrer",
376
381
  className: "flex items-center gap-2 text-sm text-primary hover:underline",
377
- children: [/* @__PURE__ */ N(T, { size: 14 }), h("devportal.website", "Website")]
378
- }), e.contactEmail && /* @__PURE__ */ P("a", {
382
+ children: [/* @__PURE__ */ P(E, { size: 14 }), h("devportal.website", "Website")]
383
+ }), e.contactEmail && /* @__PURE__ */ F("a", {
379
384
  href: `mailto:${e.contactEmail}`,
380
385
  className: "flex items-center gap-2 text-sm text-primary hover:underline",
381
- children: [/* @__PURE__ */ N(T, { size: 14 }), e.contactEmail]
386
+ children: [/* @__PURE__ */ P(E, { size: 14 }), e.contactEmail]
382
387
  })]
383
388
  })
384
389
  })
385
390
  ]
386
391
  })]
387
392
  });
388
- }, z = ({ apps: e, onNavigate: t }) => {
389
- let { t: r } = g(), i = (e, t) => {
393
+ }, B = ({ apps: e, onNavigate: t }) => {
394
+ let { t: r } = _(), i = (e, t) => {
390
395
  let n = r(e);
391
396
  return n === e ? t : n;
392
397
  };
393
- return /* @__PURE__ */ P("div", {
398
+ return /* @__PURE__ */ F("div", {
394
399
  className: "space-y-6",
395
- children: [/* @__PURE__ */ P("div", {
400
+ children: [/* @__PURE__ */ F("div", {
396
401
  className: "flex items-center justify-between",
397
- children: [/* @__PURE__ */ P("p", {
402
+ children: [/* @__PURE__ */ F("p", {
398
403
  className: "text-sm text-muted-foreground",
399
404
  children: [
400
405
  e.length,
401
406
  " ",
402
407
  e.length === 1 ? i("devportal.application", "application") : i("devportal.applications", "applications")
403
408
  ]
404
- }), /* @__PURE__ */ P("button", {
409
+ }), /* @__PURE__ */ F("button", {
405
410
  onClick: () => t("/apps/new"),
406
411
  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",
407
- children: [/* @__PURE__ */ N(D, { size: 16 }), i("devportal.createApp", "Create App")]
412
+ children: [/* @__PURE__ */ P(O, { size: 16 }), i("devportal.createApp", "Create App")]
408
413
  })]
409
- }), e.length > 0 ? /* @__PURE__ */ N("div", {
414
+ }), e.length > 0 ? /* @__PURE__ */ P("div", {
410
415
  className: "space-y-2",
411
- children: e.map((e) => /* @__PURE__ */ N(c, {
416
+ children: e.map((e) => /* @__PURE__ */ P(c, {
412
417
  app: e,
413
418
  onClick: () => t(`/apps/${e.id}`)
414
419
  }, e.id))
415
- }) : /* @__PURE__ */ N(n, {
416
- icon: /* @__PURE__ */ N(v, { size: 32 }),
420
+ }) : /* @__PURE__ */ P(n, {
421
+ icon: /* @__PURE__ */ P(y, { size: 32 }),
417
422
  title: i("devportal.noApplications", "No applications"),
418
423
  description: i("devportal.createFirstAppForOrg", "Create your first application for this organization"),
419
- action: /* @__PURE__ */ P("button", {
424
+ action: /* @__PURE__ */ F("button", {
420
425
  onClick: () => t("/apps/new"),
421
426
  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",
422
- children: [/* @__PURE__ */ N(D, { size: 16 }), i("devportal.createApp", "Create App")]
427
+ children: [/* @__PURE__ */ P(O, { size: 16 }), i("devportal.createApp", "Create App")]
423
428
  })
424
429
  })]
425
430
  });
426
- }, B = ({ members: e, onNavigate: n, orgId: r }) => {
427
- let { t: i } = g(), a = (e, t) => {
431
+ }, V = ({ members: e, onNavigate: n, orgId: r }) => {
432
+ let { t: i } = _(), a = (e, t) => {
428
433
  let n = i(e);
429
434
  return n === e ? t : n;
430
435
  };
431
- return /* @__PURE__ */ P("div", {
436
+ return /* @__PURE__ */ F("div", {
432
437
  className: "space-y-6",
433
- children: [/* @__PURE__ */ P("div", {
438
+ children: [/* @__PURE__ */ F("div", {
434
439
  className: "flex items-center justify-between",
435
- children: [/* @__PURE__ */ P("p", {
440
+ children: [/* @__PURE__ */ F("p", {
436
441
  className: "text-sm text-muted-foreground",
437
442
  children: [
438
443
  e.length,
439
444
  " ",
440
445
  e.length === 1 ? a("devportal.memberLower", "member") : a("devportal.membersLower", "members")
441
446
  ]
442
- }), /* @__PURE__ */ P("button", {
447
+ }), /* @__PURE__ */ F("button", {
443
448
  onClick: () => n(`/organizations/${r}/members`),
444
449
  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",
445
- children: [/* @__PURE__ */ N(D, { size: 16 }), a("devportal.inviteMember", "Invite Member")]
450
+ children: [/* @__PURE__ */ P(O, { size: 16 }), a("devportal.inviteMember", "Invite Member")]
446
451
  })]
447
- }), /* @__PURE__ */ N(l, {
452
+ }), /* @__PURE__ */ P(l, {
448
453
  data: e,
449
454
  keyField: "id",
450
455
  columns: [
451
456
  {
452
457
  key: "email",
453
458
  header: a("devportal.memberColumn", "Member"),
454
- render: (e) => /* @__PURE__ */ P("div", {
459
+ render: (e) => /* @__PURE__ */ F("div", {
455
460
  className: "flex items-center gap-3",
456
- children: [/* @__PURE__ */ N("div", {
461
+ children: [/* @__PURE__ */ P("div", {
457
462
  className: "h-8 w-8 rounded-full bg-primary/10 flex items-center justify-center text-sm font-medium text-primary",
458
463
  children: e.email?.charAt(0).toUpperCase() || "U"
459
- }), /* @__PURE__ */ N("span", {
464
+ }), /* @__PURE__ */ P("span", {
460
465
  className: "font-medium",
461
466
  children: e.email
462
467
  })]
@@ -465,7 +470,7 @@ var L = () => {
465
470
  {
466
471
  key: "role",
467
472
  header: a("devportal.roleColumn", "Role"),
468
- render: (e) => /* @__PURE__ */ N("span", {
473
+ render: (e) => /* @__PURE__ */ P("span", {
469
474
  className: t("inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium", e.role === "OWNER" ? "bg-accent-purple-subtle text-accent-purple" : e.role === "ADMIN" ? "bg-status-info-bg-subtle text-status-info-text" : e.role === "DEVELOPER" ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-primary"),
470
475
  children: s[e.role]
471
476
  })
@@ -483,20 +488,20 @@ var L = () => {
483
488
  ]
484
489
  })]
485
490
  });
486
- }, V = ({ org: e }) => {
487
- let { t } = g(), n = (e, n) => {
491
+ }, H = ({ org: e }) => {
492
+ let { t } = _(), n = (e, n) => {
488
493
  let r = t(e);
489
494
  return r === e ? n : r;
490
495
  };
491
- return /* @__PURE__ */ P("div", {
496
+ return /* @__PURE__ */ F("div", {
492
497
  className: "space-y-6 max-w-2xl",
493
498
  children: [
494
- /* @__PURE__ */ N(i, {
499
+ /* @__PURE__ */ P(i, {
495
500
  title: n("devportal.organizationDetails", "Organization Details"),
496
- children: /* @__PURE__ */ N(u, { items: [
501
+ children: /* @__PURE__ */ P(u, { items: [
497
502
  {
498
503
  label: n("devportal.organizationId", "Organization ID"),
499
- value: /* @__PURE__ */ N("code", {
504
+ value: /* @__PURE__ */ P("code", {
500
505
  className: "text-xs",
501
506
  children: e.id
502
507
  })
@@ -523,9 +528,9 @@ var L = () => {
523
528
  }
524
529
  ] })
525
530
  }),
526
- /* @__PURE__ */ N(i, {
531
+ /* @__PURE__ */ P(i, {
527
532
  title: n("devportal.legalInformation", "Legal Information"),
528
- children: /* @__PURE__ */ N(u, { items: [
533
+ children: /* @__PURE__ */ P(u, { items: [
529
534
  {
530
535
  label: n("devportal.legalEntityName", "Legal Entity Name"),
531
536
  value: e.legalEntityName || n("devportal.notProvided", "Not provided")
@@ -548,10 +553,10 @@ var L = () => {
548
553
  },
549
554
  {
550
555
  label: n("devportal.taxFormStatus", "Tax Form Status"),
551
- value: e.taxFormVerified ? /* @__PURE__ */ P("span", {
556
+ value: e.taxFormVerified ? /* @__PURE__ */ F("span", {
552
557
  className: "text-status-success-text flex items-center gap-1",
553
558
  children: [
554
- /* @__PURE__ */ N(S, { size: 14 }),
559
+ /* @__PURE__ */ P(C, { size: 14 }),
555
560
  " ",
556
561
  n("devportal.verified", "Verified")
557
562
  ]
@@ -559,14 +564,14 @@ var L = () => {
559
564
  }
560
565
  ] })
561
566
  }),
562
- /* @__PURE__ */ N(i, {
567
+ /* @__PURE__ */ P(i, {
563
568
  title: n("devportal.verificationStatus", "Verification Status"),
564
- children: /* @__PURE__ */ N(u, { items: [{
569
+ children: /* @__PURE__ */ P(u, { items: [{
565
570
  label: n("devportal.verifiedLabel", "Verified"),
566
- value: e.isVerified ? /* @__PURE__ */ P("span", {
571
+ value: e.isVerified ? /* @__PURE__ */ F("span", {
567
572
  className: "text-status-success-text flex items-center gap-1",
568
573
  children: [
569
- /* @__PURE__ */ N(S, { size: 14 }),
574
+ /* @__PURE__ */ P(C, { size: 14 }),
570
575
  " ",
571
576
  n("devportal.verifiedVia", "Verified via"),
572
577
  " ",
@@ -575,10 +580,10 @@ var L = () => {
575
580
  }) : n("devportal.notVerified", "Not verified")
576
581
  }, {
577
582
  label: n("devportal.certifiedLabel", "Certified"),
578
- value: e.isCertified ? /* @__PURE__ */ P("span", {
583
+ value: e.isCertified ? /* @__PURE__ */ F("span", {
579
584
  className: "text-accent-blue flex items-center gap-1",
580
585
  children: [
581
- /* @__PURE__ */ N(k, { size: 14 }),
586
+ /* @__PURE__ */ P(A, { size: 14 }),
582
587
  " ",
583
588
  n("devportal.certifiedUntil", "Certified until"),
584
589
  " ",
@@ -589,20 +594,20 @@ var L = () => {
589
594
  })
590
595
  ]
591
596
  });
592
- }, H = ({ label: e, used: n, limit: r, percent: i, format: a }) => {
593
- let { t: o } = g(), s = (e, t) => {
597
+ }, U = ({ label: e, used: n, limit: r, percent: i, format: a }) => {
598
+ let { t: o } = _(), s = (e, t) => {
594
599
  let n = o(e);
595
600
  return n === e ? t : n;
596
601
  }, c = (e) => a === "bytes" ? `${(e / (1024 * 1024 * 1024)).toFixed(1)} GB` : e >= 1e6 ? `${(e / 1e6).toFixed(1)}M` : e >= 1e3 ? `${(e / 1e3).toFixed(1)}K` : e.toLocaleString();
597
- return /* @__PURE__ */ P("div", {
602
+ return /* @__PURE__ */ F("div", {
598
603
  className: "rounded-lg border p-4",
599
604
  children: [
600
- /* @__PURE__ */ P("div", {
605
+ /* @__PURE__ */ F("div", {
601
606
  className: "flex items-center justify-between mb-2",
602
- children: [/* @__PURE__ */ N("span", {
607
+ children: [/* @__PURE__ */ P("span", {
603
608
  className: "text-sm font-medium",
604
609
  children: e
605
- }), /* @__PURE__ */ P("span", {
610
+ }), /* @__PURE__ */ F("span", {
606
611
  className: "text-xs text-muted-foreground",
607
612
  children: [
608
613
  c(n),
@@ -611,14 +616,14 @@ var L = () => {
611
616
  ]
612
617
  })]
613
618
  }),
614
- /* @__PURE__ */ N("div", {
619
+ /* @__PURE__ */ P("div", {
615
620
  className: "h-2 rounded-full bg-muted overflow-hidden",
616
- children: /* @__PURE__ */ N("div", {
621
+ children: /* @__PURE__ */ P("div", {
617
622
  className: t("h-full rounded-full transition-all", i > 90 ? "bg-status-error-bg-subtle" : i > 70 ? "bg-status-warning-bg-subtle" : "bg-primary"),
618
623
  style: { width: `${Math.min(i, 100)}%` }
619
624
  })
620
625
  }),
621
- /* @__PURE__ */ P("p", {
626
+ /* @__PURE__ */ F("p", {
622
627
  className: "text-xs text-muted-foreground mt-1",
623
628
  children: [
624
629
  i.toFixed(1),
@@ -630,6 +635,6 @@ var L = () => {
630
635
  });
631
636
  };
632
637
  //#endregion
633
- export { L as OrganizationDetailPage };
638
+ export { R as OrganizationDetailPage };
634
639
 
635
640
  //# sourceMappingURL=OrganizationDetailPage.js.map