@burdenoff/microfe-devportal 2026.830.1 → 2026.831.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 (104) hide show
  1. package/dist/devportal/AdminDevportalRoot.d.ts.map +1 -1
  2. package/dist/devportal/AdminDevportalRoot.js +16 -19
  3. package/dist/devportal/AdminDevportalRoot.js.map +1 -1
  4. package/dist/devportal/DevportalRoot.d.ts.map +1 -1
  5. package/dist/devportal/DevportalRoot.js +36 -39
  6. package/dist/devportal/DevportalRoot.js.map +1 -1
  7. package/dist/devportal/components/AppCard.js +41 -41
  8. package/dist/devportal/components/ConfirmDialog.d.ts.map +1 -1
  9. package/dist/devportal/components/ConfirmDialog.js +19 -22
  10. package/dist/devportal/components/ConfirmDialog.js.map +1 -1
  11. package/dist/devportal/components/DataTable.d.ts.map +1 -1
  12. package/dist/devportal/components/DataTable.js +31 -34
  13. package/dist/devportal/components/DataTable.js.map +1 -1
  14. package/dist/devportal/components/FeatureFlaggedRoute.js +8 -8
  15. package/dist/devportal/components/FormField.d.ts.map +1 -1
  16. package/dist/devportal/components/FormField.js +26 -32
  17. package/dist/devportal/components/FormField.js.map +1 -1
  18. package/dist/devportal/components/GrantDelegationModal.js +64 -64
  19. package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
  20. package/dist/devportal/components/LoadingState.d.ts.map +1 -1
  21. package/dist/devportal/components/LoadingState.js +5 -8
  22. package/dist/devportal/components/LoadingState.js.map +1 -1
  23. package/dist/devportal/components/PageLayout.d.ts.map +1 -1
  24. package/dist/devportal/components/PageLayout.js +10 -13
  25. package/dist/devportal/components/PageLayout.js.map +1 -1
  26. package/dist/devportal/components/PermissionGuard.d.ts.map +1 -1
  27. package/dist/devportal/components/PermissionGuard.js +11 -14
  28. package/dist/devportal/components/PermissionGuard.js.map +1 -1
  29. package/dist/devportal/components/SecretDisplay.d.ts.map +1 -1
  30. package/dist/devportal/components/SecretDisplay.js +24 -30
  31. package/dist/devportal/components/SecretDisplay.js.map +1 -1
  32. package/dist/devportal/components/SectionNav.d.ts.map +1 -1
  33. package/dist/devportal/components/SectionNav.js +24 -27
  34. package/dist/devportal/components/SectionNav.js.map +1 -1
  35. package/dist/devportal/components/StatusBadge.d.ts.map +1 -1
  36. package/dist/devportal/components/StatusBadge.js +24 -33
  37. package/dist/devportal/components/StatusBadge.js.map +1 -1
  38. package/dist/devportal/index.d.ts +1 -0
  39. package/dist/devportal/index.d.ts.map +1 -1
  40. package/dist/devportal/index.js +1 -0
  41. package/dist/devportal/pages/AdminReviewPage.js +172 -172
  42. package/dist/devportal/pages/AnalyticsDashboardPage.js +43 -43
  43. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  44. package/dist/devportal/pages/ApiKeysPage.js +119 -119
  45. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  46. package/dist/devportal/pages/AppLogsPage.js +45 -45
  47. package/dist/devportal/pages/ApplicationDetailPage.js +607 -607
  48. package/dist/devportal/pages/ApplicationVersionsPage.js +13 -13
  49. package/dist/devportal/pages/ApplicationsPage.d.ts.map +1 -1
  50. package/dist/devportal/pages/ApplicationsPage.js +104 -101
  51. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  52. package/dist/devportal/pages/CreateApiKeyPage.js +45 -45
  53. package/dist/devportal/pages/CreateApplicationPage.js +38 -38
  54. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  55. package/dist/devportal/pages/CreateOAuthClientPage.js +52 -52
  56. package/dist/devportal/pages/CreateOrganizationPage.js +26 -26
  57. package/dist/devportal/pages/CreateWebhookPage.d.ts.map +1 -1
  58. package/dist/devportal/pages/CreateWebhookPage.js +48 -48
  59. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  60. package/dist/devportal/pages/DashboardPage.d.ts.map +1 -1
  61. package/dist/devportal/pages/DashboardPage.js +66 -72
  62. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  63. package/dist/devportal/pages/DelegationsPage.js +174 -174
  64. package/dist/devportal/pages/DocumentationPage.js +93 -93
  65. package/dist/devportal/pages/EditApplicationPage.js +14 -14
  66. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  67. package/dist/devportal/pages/ListingPreviewPage.js +76 -76
  68. package/dist/devportal/pages/OAuthClientDetailPage.js +75 -75
  69. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  70. package/dist/devportal/pages/OAuthClientsPage.js +64 -64
  71. package/dist/devportal/pages/OrganizationDetailPage.js +189 -189
  72. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  73. package/dist/devportal/pages/OrganizationMembersPage.js +10 -10
  74. package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
  75. package/dist/devportal/pages/OrganizationsPage.js +163 -154
  76. package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
  77. package/dist/devportal/pages/PublishPage.js +104 -104
  78. package/dist/devportal/pages/PublishPage.js.map +1 -1
  79. package/dist/devportal/pages/PublisherProfilePage.js +55 -55
  80. package/dist/devportal/pages/ResourcesPage.js +60 -60
  81. package/dist/devportal/pages/RevenueDashboardPage.js +60 -60
  82. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  83. package/dist/devportal/pages/SellerDashboardPage.js +83 -83
  84. package/dist/devportal/pages/SellerItemsPage.js +163 -163
  85. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  86. package/dist/devportal/pages/SellerOrdersPage.js +63 -63
  87. package/dist/devportal/pages/SettingsPage.js +21 -21
  88. package/dist/devportal/pages/SetupPage.js +183 -183
  89. package/dist/devportal/pages/SetupPage.js.map +1 -1
  90. package/dist/devportal/pages/StoreSubmissionPage.js +5 -5
  91. package/dist/devportal/pages/WebhookDetailPage.js +123 -123
  92. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  93. package/dist/devportal/pages/WebhooksPage.js +118 -118
  94. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  95. package/dist/devportal/utils/i18n.d.ts +9 -2
  96. package/dist/devportal/utils/i18n.d.ts.map +1 -1
  97. package/dist/devportal/utils/i18n.js +13 -10
  98. package/dist/devportal/utils/i18n.js.map +1 -1
  99. package/dist/index.js +2 -1
  100. package/dist/translations/en.d.ts +1251 -0
  101. package/dist/translations/en.d.ts.map +1 -0
  102. package/dist/translations/en.js +1235 -0
  103. package/dist/translations/en.js.map +1 -0
  104. package/package.json +2 -2
@@ -3,16 +3,16 @@ import { EmptyState as t } from "../components/EmptyState.js";
3
3
  import { PageLayout as n, PageSection as r } from "../components/PageLayout.js";
4
4
  import { nativeCopyText as i, nativeImpact as a, nativeNotify as o } from "../../utils/nativeBridge.js";
5
5
  import { useMemo as s, useState as c } from "react";
6
- import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
- import { BookOpen as u, CalendarClock as d, Code2 as f, ExternalLink as p, FileCode as m, HelpCircle as h, KeyRound as g, Layers as _, Network as v, Plug as y, Rocket as b, Search as x, Webhook as S } from "lucide-react";
8
- import { jsx as C, jsxs as w } from "react/jsx-runtime";
6
+ import { BookOpen as l, CalendarClock as u, Code2 as d, ExternalLink as f, FileCode as p, HelpCircle as m, KeyRound as h, Layers as g, Network as _, Plug as v, Rocket as y, Search as b, Webhook as x } from "lucide-react";
7
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
8
+ import { useI18n as w } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
9
  import { EmphasisPanel as T } from "@burdenoff/fe-libs/ui";
10
10
  //#region src/devportal/pages/ResourcesPage.tsx
11
11
  var E = "https://docs.burdenoff.com/developers", D = {
12
12
  id: "sdks",
13
13
  name: "SDKs",
14
14
  description: "Official client libraries for building on the Burdenoff platform. See the SDKs documentation for supported languages and installation.",
15
- icon: /* @__PURE__ */ C(f, { size: 24 }),
15
+ icon: /* @__PURE__ */ S(d, { size: 24 }),
16
16
  url: `${E}/build/sdks`,
17
17
  installCommand: "npm install @burdenoff/sdk-node"
18
18
  }, O = [
@@ -20,97 +20,97 @@ var E = "https://docs.burdenoff.com/developers", D = {
20
20
  id: "graphql-api",
21
21
  name: "GraphQL API",
22
22
  description: "Query and mutate platform data through the federated GraphQL API.",
23
- icon: /* @__PURE__ */ C(v, { size: 24 }),
23
+ icon: /* @__PURE__ */ S(_, { size: 24 }),
24
24
  url: `${E}/build/graphql-api`
25
25
  },
26
26
  {
27
27
  id: "plugins",
28
28
  name: "Plugins",
29
29
  description: "Extend the platform with plugins that add new capabilities and surfaces.",
30
- icon: /* @__PURE__ */ C(y, { size: 24 }),
30
+ icon: /* @__PURE__ */ S(v, { size: 24 }),
31
31
  url: `${E}/build/plugins`
32
32
  },
33
33
  {
34
34
  id: "webhooks",
35
35
  name: "Webhooks",
36
36
  description: "Receive real-time platform events in your own services via webhooks.",
37
- icon: /* @__PURE__ */ C(S, { size: 24 }),
37
+ icon: /* @__PURE__ */ S(x, { size: 24 }),
38
38
  url: `${E}/build/webhooks`
39
39
  }
40
40
  ], k = [{
41
41
  id: "scheduler",
42
42
  name: "Scheduler & Workflows",
43
43
  description: "Schedule jobs and orchestrate long-running workflows on the platform.",
44
- icon: /* @__PURE__ */ C(d, { size: 24 }),
44
+ icon: /* @__PURE__ */ S(u, { size: 24 }),
45
45
  url: `${E}/extend/scheduler/`
46
46
  }], A = [
47
47
  {
48
48
  id: "platform-overview",
49
49
  name: "Platform Overview",
50
50
  description: "Understand the building blocks of the Burdenoff developer platform.",
51
- icon: /* @__PURE__ */ C(u, { size: 24 }),
51
+ icon: /* @__PURE__ */ S(l, { size: 24 }),
52
52
  url: `${E}/platform-overview`
53
53
  },
54
54
  {
55
55
  id: "quick-start",
56
56
  name: "Quick Start",
57
57
  description: "Get up and running with the platform in a few steps.",
58
- icon: /* @__PURE__ */ C(b, { size: 24 }),
58
+ icon: /* @__PURE__ */ S(y, { size: 24 }),
59
59
  url: `${E}/quick-start`
60
60
  },
61
61
  {
62
62
  id: "authentication",
63
63
  name: "Authentication",
64
64
  description: "Learn how to authenticate requests and manage actor identity.",
65
- icon: /* @__PURE__ */ C(g, { size: 24 }),
65
+ icon: /* @__PURE__ */ S(h, { size: 24 }),
66
66
  url: `${E}/authentication`
67
67
  },
68
68
  {
69
69
  id: "relationship-graphs",
70
70
  name: "Relationship Graphs",
71
71
  description: "Model and traverse connected data with relationship graphs.",
72
- icon: /* @__PURE__ */ C(_, { size: 24 }),
72
+ icon: /* @__PURE__ */ S(g, { size: 24 }),
73
73
  url: `${E}/concepts/relationship-graphs`
74
74
  },
75
75
  {
76
76
  id: "examples",
77
77
  name: "Examples",
78
78
  description: "Browse worked examples covering common integration tasks.",
79
- icon: /* @__PURE__ */ C(m, { size: 24 }),
79
+ icon: /* @__PURE__ */ S(p, { size: 24 }),
80
80
  url: `${E}/examples`
81
81
  },
82
82
  {
83
83
  id: "faq",
84
84
  name: "FAQ",
85
85
  description: "Answers to frequently asked developer questions.",
86
- icon: /* @__PURE__ */ C(h, { size: 24 }),
86
+ icon: /* @__PURE__ */ S(m, { size: 24 }),
87
87
  url: `${E}/faq`
88
88
  }
89
89
  ], j = (e, t) => t ? `${e.name} ${e.description}`.toLowerCase().includes(t.toLowerCase()) : !0, M = ({ sdk: e, copyLabel: t, copiedLabel: n }) => {
90
90
  let [r, s] = c(!1);
91
- return /* @__PURE__ */ w("div", {
91
+ return /* @__PURE__ */ C("div", {
92
92
  className: "flex flex-col rounded-card border border-border-seam bg-bg-surface p-5",
93
93
  children: [
94
- /* @__PURE__ */ w("div", {
94
+ /* @__PURE__ */ C("div", {
95
95
  className: "flex items-center gap-3",
96
- children: [/* @__PURE__ */ C("div", {
96
+ children: [/* @__PURE__ */ S("div", {
97
97
  className: "rounded-lg bg-action-primary-bg/10 p-2.5 text-primary",
98
98
  children: e.icon
99
- }), /* @__PURE__ */ C("div", { children: /* @__PURE__ */ C("h3", {
99
+ }), /* @__PURE__ */ S("div", { children: /* @__PURE__ */ S("h3", {
100
100
  className: "font-semibold",
101
101
  children: e.name
102
102
  }) })]
103
103
  }),
104
- /* @__PURE__ */ C("p", {
104
+ /* @__PURE__ */ S("p", {
105
105
  className: "mt-3 text-sm text-text-secondary",
106
106
  children: e.description
107
107
  }),
108
- /* @__PURE__ */ w("div", {
108
+ /* @__PURE__ */ C("div", {
109
109
  className: "mt-4 flex items-center gap-2 rounded-md bg-bg-sunken/50 p-2",
110
- children: [/* @__PURE__ */ C("code", {
110
+ children: [/* @__PURE__ */ S("code", {
111
111
  className: "flex-1 text-xs",
112
112
  children: e.installCommand
113
- }), /* @__PURE__ */ C("button", {
113
+ }), /* @__PURE__ */ S("button", {
114
114
  type: "button",
115
115
  onClick: async () => {
116
116
  a("light"), await i(e.installCommand) ? (s(!0), o("success"), setTimeout(() => s(!1), 2e3)) : o("error");
@@ -119,14 +119,14 @@ var E = "https://docs.burdenoff.com/developers", D = {
119
119
  children: r ? n : t
120
120
  })]
121
121
  }),
122
- /* @__PURE__ */ C("div", {
122
+ /* @__PURE__ */ S("div", {
123
123
  className: "mt-4 flex items-center justify-end text-sm",
124
- children: /* @__PURE__ */ w("a", {
124
+ children: /* @__PURE__ */ C("a", {
125
125
  href: e.url,
126
126
  target: "_blank",
127
127
  rel: "noopener noreferrer",
128
128
  className: "flex items-center gap-1 text-primary hover:underline focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
129
- children: ["Docs ", /* @__PURE__ */ C(p, {
129
+ children: ["Docs ", /* @__PURE__ */ S(f, {
130
130
  size: 12,
131
131
  "aria-hidden": "true"
132
132
  })]
@@ -134,70 +134,70 @@ var E = "https://docs.burdenoff.com/developers", D = {
134
134
  })
135
135
  ]
136
136
  });
137
- }, N = ({ resource: e }) => /* @__PURE__ */ w("a", {
137
+ }, N = ({ resource: e }) => /* @__PURE__ */ C("a", {
138
138
  href: e.url,
139
139
  target: "_blank",
140
140
  rel: "noopener noreferrer",
141
141
  className: "group flex items-start gap-4 rounded-card border border-border-seam bg-bg-surface p-4 shadow-[var(--shadow-pop)] transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
142
142
  children: [
143
- /* @__PURE__ */ C("div", {
143
+ /* @__PURE__ */ S("div", {
144
144
  className: "rounded-lg bg-action-primary-bg/10 p-2.5 text-primary",
145
145
  children: e.icon
146
146
  }),
147
- /* @__PURE__ */ w("div", {
147
+ /* @__PURE__ */ C("div", {
148
148
  className: "flex-1",
149
- children: [/* @__PURE__ */ C("h3", {
149
+ children: [/* @__PURE__ */ S("h3", {
150
150
  className: "font-semibold group-hover:text-primary",
151
151
  children: e.name
152
- }), /* @__PURE__ */ C("p", {
152
+ }), /* @__PURE__ */ S("p", {
153
153
  className: "mt-1 text-sm text-text-secondary",
154
154
  children: e.description
155
155
  })]
156
156
  }),
157
- /* @__PURE__ */ C(p, {
157
+ /* @__PURE__ */ S(f, {
158
158
  size: 16,
159
159
  "aria-hidden": "true",
160
160
  className: "text-text-secondary opacity-0 transition-opacity group-hover:opacity-100"
161
161
  })
162
162
  ]
163
163
  }), P = () => {
164
- let { t: i } = l(), a = (e, t) => {
164
+ let { t: i } = w(), a = (e, t) => {
165
165
  let n = i(e);
166
166
  return n === e ? t : n;
167
- }, [o, u] = c(""), [d, f] = c("all"), p = d === "all" || d === "build", m = d === "all" || d === "learn", h = s(() => p && j(D, o), [p, o]), g = s(() => p ? O.filter((e) => j(e, o)) : [], [p, o]), _ = s(() => p ? k.filter((e) => j(e, o)) : [], [p, o]), v = s(() => m ? A.filter((e) => j(e, o)) : [], [m, o]), y = h || g.length > 0 || _.length > 0 || v.length > 0;
168
- return /* @__PURE__ */ w(n, {
167
+ }, [o, l] = c(""), [u, d] = c("all"), f = u === "all" || u === "build", p = u === "all" || u === "learn", m = s(() => f && j(D, o), [f, o]), h = s(() => f ? O.filter((e) => j(e, o)) : [], [f, o]), g = s(() => f ? k.filter((e) => j(e, o)) : [], [f, o]), _ = s(() => p ? A.filter((e) => j(e, o)) : [], [p, o]), v = m || h.length > 0 || g.length > 0 || _.length > 0;
168
+ return /* @__PURE__ */ C(n, {
169
169
  title: a("devportal.developerResources", "Developer Resources"),
170
170
  description: a("devportal.resourcesDescription", "Documentation for building, extending, and learning the Burdenoff platform"),
171
171
  purpose: a("devportal.resourcesPurpose", "A jumping-off point for building on the platform — SDKs, API references, integration guides, and learning material in one place. Start with the SDK for your language, then follow the build and learn paths."),
172
172
  children: [
173
- /* @__PURE__ */ w("div", {
173
+ /* @__PURE__ */ C("div", {
174
174
  role: "status",
175
175
  className: "mb-6 rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text",
176
- children: [/* @__PURE__ */ C("strong", {
176
+ children: [/* @__PURE__ */ S("strong", {
177
177
  className: "font-semibold",
178
178
  children: a("devportal.resources.comingSoon.title", "Coming soon")
179
- }), /* @__PURE__ */ C("span", {
179
+ }), /* @__PURE__ */ S("span", {
180
180
  className: "ml-2",
181
181
  children: a("devportal.resources.comingSoon.description", "An in-product resources hub is on the way. For now, these cards link to the official Burdenoff developer documentation.")
182
182
  })]
183
183
  }),
184
- /* @__PURE__ */ w("div", {
184
+ /* @__PURE__ */ C("div", {
185
185
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
186
- children: [/* @__PURE__ */ w("div", {
186
+ children: [/* @__PURE__ */ C("div", {
187
187
  className: "relative flex-1 max-w-md",
188
- children: [/* @__PURE__ */ C(x, {
188
+ children: [/* @__PURE__ */ S(b, {
189
189
  size: 16,
190
190
  "aria-hidden": "true",
191
191
  className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary"
192
- }), /* @__PURE__ */ C("input", {
192
+ }), /* @__PURE__ */ S("input", {
193
193
  type: "text",
194
194
  "aria-label": a("devportal.searchResources", "Search resources..."),
195
195
  placeholder: a("devportal.searchResources", "Search resources..."),
196
196
  value: o,
197
- onChange: (e) => u(e.target.value),
197
+ onChange: (e) => l(e.target.value),
198
198
  className: "w-full rounded-md border bg-bg-surface pl-9 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
199
199
  })]
200
- }), /* @__PURE__ */ C("div", {
200
+ }), /* @__PURE__ */ S("div", {
201
201
  role: "group",
202
202
  "aria-label": a("devportal.filterResources", "Filter resources"),
203
203
  className: "flex items-center gap-1 rounded-md border p-1",
@@ -214,52 +214,52 @@ var E = "https://docs.burdenoff.com/developers", D = {
214
214
  id: "learn",
215
215
  label: a("devportal.filterLearn", "Learn")
216
216
  }
217
- ].map((t) => /* @__PURE__ */ C("button", {
217
+ ].map((t) => /* @__PURE__ */ S("button", {
218
218
  type: "button",
219
- "aria-pressed": d === t.id,
220
- onClick: () => f(t.id),
221
- className: e("rounded px-3 py-1.5 text-sm font-medium transition-colors", d === t.id ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-bg-sunken"),
219
+ "aria-pressed": u === t.id,
220
+ onClick: () => d(t.id),
221
+ className: e("rounded px-3 py-1.5 text-sm font-medium transition-colors", u === t.id ? "bg-action-primary-bg text-action-primary-text" : "hover:bg-bg-sunken"),
222
222
  children: t.label
223
223
  }, t.id))
224
224
  })]
225
225
  }),
226
- h && /* @__PURE__ */ C(T, { children: /* @__PURE__ */ C(r, {
226
+ m && /* @__PURE__ */ S(T, { children: /* @__PURE__ */ S(r, {
227
227
  title: a("devportal.sdks", "SDKs"),
228
228
  description: a("devportal.sdksDescription", "Client libraries for building on the platform"),
229
- children: /* @__PURE__ */ C("div", {
229
+ children: /* @__PURE__ */ S("div", {
230
230
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
231
- children: /* @__PURE__ */ C(M, {
231
+ children: /* @__PURE__ */ S(M, {
232
232
  sdk: D,
233
233
  copyLabel: a("devportal.copy", "Copy"),
234
234
  copiedLabel: a("devportal.copied", "Copied!")
235
235
  })
236
236
  })
237
237
  }) }),
238
- g.length > 0 && /* @__PURE__ */ C(r, {
238
+ h.length > 0 && /* @__PURE__ */ S(r, {
239
239
  title: a("devportal.build", "Build"),
240
240
  description: a("devportal.buildDescription", "APIs and integration surfaces"),
241
- children: /* @__PURE__ */ C("div", {
241
+ children: /* @__PURE__ */ S("div", {
242
242
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
243
- children: g.map((e) => /* @__PURE__ */ C(N, { resource: e }, e.id))
243
+ children: h.map((e) => /* @__PURE__ */ S(N, { resource: e }, e.id))
244
244
  })
245
245
  }),
246
- _.length > 0 && /* @__PURE__ */ C(r, {
246
+ g.length > 0 && /* @__PURE__ */ S(r, {
247
247
  title: a("devportal.extend", "Extend"),
248
248
  description: a("devportal.extendDescription", "Schedule jobs and orchestrate workflows"),
249
- children: /* @__PURE__ */ C("div", {
249
+ children: /* @__PURE__ */ S("div", {
250
250
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
251
- children: _.map((e) => /* @__PURE__ */ C(N, { resource: e }, e.id))
251
+ children: g.map((e) => /* @__PURE__ */ S(N, { resource: e }, e.id))
252
252
  })
253
253
  }),
254
- v.length > 0 && /* @__PURE__ */ C(r, {
254
+ _.length > 0 && /* @__PURE__ */ S(r, {
255
255
  title: a("devportal.learn", "Learn"),
256
256
  description: a("devportal.learnDescription", "Guides and concepts to get you started"),
257
- children: /* @__PURE__ */ C("div", {
257
+ children: /* @__PURE__ */ S("div", {
258
258
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
259
- children: v.map((e) => /* @__PURE__ */ C(N, { resource: e }, e.id))
259
+ children: _.map((e) => /* @__PURE__ */ S(N, { resource: e }, e.id))
260
260
  })
261
261
  }),
262
- !y && /* @__PURE__ */ C(t, {
262
+ !v && /* @__PURE__ */ S(t, {
263
263
  illustration: "empty-search",
264
264
  title: a("devportal.noResourcesFoundTitle", "No matching resources"),
265
265
  description: a("devportal.noResourcesFound", "No resources match your search.")
@@ -1,23 +1,23 @@
1
1
  import { useDevportal as e } from "../providers/DevportalProvider.js";
2
- import { cn as t } from "../utils/cn.js";
3
- import { EmptyState as n } from "../components/EmptyState.js";
2
+ import { useTr as t } from "../utils/i18n.js";
3
+ import { cn as n } from "../utils/cn.js";
4
+ import { EmptyState as r } from "../components/EmptyState.js";
4
5
  import { useGetBillingAccountsByOrgQuery as ee, useGetMyOrganizationsQuery as te, useGetRevenueDashboardDataQuery as ne, useLinkDevOrgBillingAccountMutation as re } from "../../generated/global-operations.js";
5
- import { getErrorMessage as r } from "../hooks/useGraphQL.js";
6
- import { PageLayout as i, PageSection as a } from "../components/PageLayout.js";
7
- import { StatusBadge as o } from "../components/StatusBadge.js";
8
- import { StatCard as s, StatCardGrid as ie } from "../components/StatCard.js";
9
- import { DataTable as c } from "../components/DataTable.js";
6
+ import { getErrorMessage as i } from "../hooks/useGraphQL.js";
7
+ import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
8
+ import { StatusBadge as s } from "../components/StatusBadge.js";
9
+ import { StatCard as c, StatCardGrid as ie } from "../components/StatCard.js";
10
+ import { DataTable as l } from "../components/DataTable.js";
10
11
  import "../hooks/index.js";
11
- import { Tooltip as l } from "../../node_modules/recharts/es6/component/Tooltip.js";
12
- import { ResponsiveContainer as u } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
12
+ import { Tooltip as u } from "../../node_modules/recharts/es6/component/Tooltip.js";
13
+ import { ResponsiveContainer as d } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
13
14
  import { Bar as ae } from "../../node_modules/recharts/es6/cartesian/Bar.js";
14
- import { CartesianGrid as d } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
15
- import { Line as f } from "../../node_modules/recharts/es6/cartesian/Line.js";
16
- import { XAxis as p } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
17
- import { YAxis as m } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
18
- import { LineChart as h } from "../../node_modules/recharts/es6/chart/LineChart.js";
19
- import { BarChart as oe } from "../../node_modules/recharts/es6/chart/BarChart.js";
20
- import { useTr as se } from "../utils/i18n.js";
15
+ import { CartesianGrid as f } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
16
+ import { Line as p } from "../../node_modules/recharts/es6/cartesian/Line.js";
17
+ import { XAxis as m } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
18
+ import { YAxis as h } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
19
+ import { LineChart as oe } from "../../node_modules/recharts/es6/chart/LineChart.js";
20
+ import { BarChart as se } from "../../node_modules/recharts/es6/chart/BarChart.js";
21
21
  import { useMemo as g, useState as _ } from "react";
22
22
  import { AlertCircle as v, ArrowDownToLine as ce, Building2 as y, Check as b, CreditCard as x, DollarSign as S, Link2 as C, Loader2 as w, Wallet as le } from "lucide-react";
23
23
  import { useSearchParams as T } from "react-router";
@@ -33,7 +33,7 @@ var k = {
33
33
  "90d": 90,
34
34
  "12m": 365
35
35
  }, A = () => {
36
- let A = se(), { activeOrgId: j, tenantId: pe } = e(), [M, me] = _("90d"), [N, P] = _(!1), [F, I] = _(null), [he] = re(), [L, R] = _(!1), [z, B] = _(null), [ge] = T(), V = g(() => /* @__PURE__ */ new Date(), []), { data: _e, loading: H } = ee({
36
+ let A = t(), { activeOrgId: j, tenantId: pe } = e(), [M, me] = _("90d"), [N, P] = _(!1), [F, I] = _(null), [he] = re(), [L, R] = _(!1), [z, B] = _(null), [ge] = T(), V = g(() => /* @__PURE__ */ new Date(), []), { data: _e, loading: H } = ee({
37
37
  fetchPolicy: "cache-and-network",
38
38
  context: { headers: { "x-org-id": pe ?? "" } }
39
39
  }), ve = g(() => {
@@ -82,36 +82,36 @@ var k = {
82
82
  refunds: e.refunds,
83
83
  salesCount: e.salesCount
84
84
  }));
85
- return ye && !U ? /* @__PURE__ */ E(i, {
85
+ return ye && !U ? /* @__PURE__ */ E(a, {
86
86
  title: A("devportal.revenue.title", "Revenue"),
87
87
  description: A("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
88
88
  children: /* @__PURE__ */ E("div", {
89
89
  className: "flex items-center justify-center py-16 text-text-secondary",
90
90
  children: /* @__PURE__ */ E(w, { className: "h-8 w-8 animate-spin" })
91
91
  })
92
- }) : W ? /* @__PURE__ */ E(i, {
92
+ }) : W ? /* @__PURE__ */ E(a, {
93
93
  title: A("devportal.revenue.title", "Revenue"),
94
94
  description: A("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
95
- children: /* @__PURE__ */ E(n, {
95
+ children: /* @__PURE__ */ E(r, {
96
96
  icon: /* @__PURE__ */ E(v, {
97
97
  size: 32,
98
98
  className: "text-status-error-text"
99
99
  }),
100
100
  title: A("devportal.revenue.errorLoadOrgs", "Unable to load organizations"),
101
- description: r(W)
101
+ description: i(W)
102
102
  })
103
- }) : j ? K ? /* @__PURE__ */ E(i, {
103
+ }) : j ? K ? /* @__PURE__ */ E(a, {
104
104
  title: A("devportal.revenue.title", "Revenue"),
105
105
  description: A("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
106
- children: /* @__PURE__ */ E(n, {
106
+ children: /* @__PURE__ */ E(r, {
107
107
  icon: /* @__PURE__ */ E(v, {
108
108
  size: 32,
109
109
  className: "text-status-error-text"
110
110
  }),
111
111
  title: A("devportal.revenue.errorLoadData", "Unable to load revenue data"),
112
- description: r(K)
112
+ description: i(K)
113
113
  })
114
- }) : /* @__PURE__ */ D(i, {
114
+ }) : /* @__PURE__ */ D(a, {
115
115
  title: A("devportal.revenue.title", "Revenue"),
116
116
  description: q ? `${A("devportal.revenue.financialPerformanceFor", "Financial performance for")} ${q.name}` : A("devportal.revenue.shortDescription", "Track revenue, sales, and payouts"),
117
117
  purpose: A("devportal.revenue.purpose", "Revenue tracks the money your paid apps earn — gross sales, platform fees, and what gets paid out to your organization. Link a billing account, then use this to reconcile payouts and watch growth across time ranges."),
@@ -194,10 +194,10 @@ var k = {
194
194
  children: J.map((e) => /* @__PURE__ */ D("button", {
195
195
  type: "button",
196
196
  onClick: () => B(e.id ?? null),
197
- className: t("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
197
+ className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
198
198
  children: [/* @__PURE__ */ E(b, {
199
199
  size: 14,
200
- className: t("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
200
+ className: n("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
201
201
  }), /* @__PURE__ */ D("div", {
202
202
  className: "flex-1 min-w-0",
203
203
  children: [/* @__PURE__ */ E("p", {
@@ -273,10 +273,10 @@ var k = {
273
273
  children: J.map((e) => /* @__PURE__ */ D("button", {
274
274
  type: "button",
275
275
  onClick: () => B(e.id ?? null),
276
- className: t("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
276
+ className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
277
277
  children: [/* @__PURE__ */ E(b, {
278
278
  size: 14,
279
- className: t("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
279
+ className: n("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
280
280
  }), /* @__PURE__ */ D("div", {
281
281
  className: "flex-1 min-w-0",
282
282
  children: [/* @__PURE__ */ E("p", {
@@ -325,23 +325,23 @@ var k = {
325
325
  children: /* @__PURE__ */ D(ie, {
326
326
  columns: 4,
327
327
  children: [
328
- /* @__PURE__ */ E(s, {
328
+ /* @__PURE__ */ E(c, {
329
329
  title: A("devportal.revenue.grossRevenue", "Gross Revenue"),
330
330
  value: `$${Q.totalGrossRevenue.toLocaleString()}`,
331
331
  icon: /* @__PURE__ */ E(S, { size: 20 })
332
332
  }),
333
- /* @__PURE__ */ E(s, {
333
+ /* @__PURE__ */ E(c, {
334
334
  title: A("devportal.revenue.netRevenue", "Net Revenue"),
335
335
  value: `$${Q.totalNetRevenue.toLocaleString()}`,
336
336
  icon: /* @__PURE__ */ E(le, { size: 20 })
337
337
  }),
338
- /* @__PURE__ */ E(s, {
338
+ /* @__PURE__ */ E(c, {
339
339
  title: A("devportal.revenue.pendingBalance", "Pending Balance"),
340
340
  value: `$${Q.pendingBalance.toLocaleString()}`,
341
341
  icon: /* @__PURE__ */ E(x, { size: 20 }),
342
342
  description: Q.nextPayoutDate ? `${A("devportal.revenue.nextPayout", "Next payout")} ${new Date(Q.nextPayoutDate).toLocaleDateString()}` : A("devportal.revenue.noPayoutScheduled", "No payout scheduled")
343
343
  }),
344
- /* @__PURE__ */ E(s, {
344
+ /* @__PURE__ */ E(c, {
345
345
  title: A("devportal.revenue.platformFees", "Platform Fees"),
346
346
  value: `$${Q.totalPlatformFees.toLocaleString()}`,
347
347
  icon: /* @__PURE__ */ E(ce, { size: 20 }),
@@ -352,43 +352,43 @@ var k = {
352
352
  }),
353
353
  /* @__PURE__ */ D("div", {
354
354
  className: "grid gap-6 xl:grid-cols-2",
355
- children: [/* @__PURE__ */ E(a, {
355
+ children: [/* @__PURE__ */ E(o, {
356
356
  title: A("devportal.revenue.revenueTrend", "Revenue trend"),
357
357
  children: /* @__PURE__ */ E(O, {
358
358
  treatment: "insight",
359
359
  className: "p-4",
360
- children: $.length > 0 ? /* @__PURE__ */ E(u, {
360
+ children: $.length > 0 ? /* @__PURE__ */ E(d, {
361
361
  width: "100%",
362
362
  height: 300,
363
- children: /* @__PURE__ */ D(h, {
363
+ children: /* @__PURE__ */ D(oe, {
364
364
  data: $,
365
365
  children: [
366
- /* @__PURE__ */ E(d, {
366
+ /* @__PURE__ */ E(f, {
367
367
  strokeDasharray: "3 3",
368
368
  stroke: "var(--color-chart-grid)"
369
369
  }),
370
- /* @__PURE__ */ E(p, {
370
+ /* @__PURE__ */ E(m, {
371
371
  dataKey: "date",
372
372
  stroke: "var(--color-chart-axis)",
373
373
  fontSize: 12
374
374
  }),
375
- /* @__PURE__ */ E(m, {
375
+ /* @__PURE__ */ E(h, {
376
376
  stroke: "var(--color-chart-axis)",
377
377
  fontSize: 12
378
378
  }),
379
- /* @__PURE__ */ E(l, { contentStyle: {
379
+ /* @__PURE__ */ E(u, { contentStyle: {
380
380
  backgroundColor: "var(--color-card)",
381
381
  border: "1px solid var(--color-border-default)",
382
382
  borderRadius: 12
383
383
  } }),
384
- /* @__PURE__ */ E(f, {
384
+ /* @__PURE__ */ E(p, {
385
385
  type: "monotone",
386
386
  dataKey: "grossRevenue",
387
387
  stroke: k.primary,
388
388
  strokeWidth: 2,
389
389
  dot: !1
390
390
  }),
391
- /* @__PURE__ */ E(f, {
391
+ /* @__PURE__ */ E(p, {
392
392
  type: "monotone",
393
393
  dataKey: "netRevenue",
394
394
  stroke: k.secondary,
@@ -408,7 +408,7 @@ var k = {
408
408
  })]
409
409
  })
410
410
  })
411
- }), /* @__PURE__ */ E(a, {
411
+ }), /* @__PURE__ */ E(o, {
412
412
  title: A("devportal.revenue.topApps", "Top applications by revenue"),
413
413
  children: Q.topApps.length > 0 ? /* @__PURE__ */ E("div", {
414
414
  className: "space-y-2",
@@ -443,7 +443,7 @@ var k = {
443
443
  })]
444
444
  })
445
445
  }, e.applicationId))
446
- }) : /* @__PURE__ */ E(n, {
446
+ }) : /* @__PURE__ */ E(r, {
447
447
  illustration: "empty-data",
448
448
  icon: /* @__PURE__ */ E(y, { size: 24 }),
449
449
  title: A("devportal.revenue.noLeadersTitle", "No revenue leaders yet"),
@@ -451,31 +451,31 @@ var k = {
451
451
  })
452
452
  })]
453
453
  }),
454
- /* @__PURE__ */ E(a, {
454
+ /* @__PURE__ */ E(o, {
455
455
  title: A("devportal.revenue.salesVolume", "Sales volume"),
456
456
  children: /* @__PURE__ */ E(O, {
457
457
  treatment: "insight",
458
458
  className: "p-4",
459
- children: $.length > 0 ? /* @__PURE__ */ E(u, {
459
+ children: $.length > 0 ? /* @__PURE__ */ E(d, {
460
460
  width: "100%",
461
461
  height: 280,
462
- children: /* @__PURE__ */ D(oe, {
462
+ children: /* @__PURE__ */ D(se, {
463
463
  data: $,
464
464
  children: [
465
- /* @__PURE__ */ E(d, {
465
+ /* @__PURE__ */ E(f, {
466
466
  strokeDasharray: "3 3",
467
467
  stroke: "var(--color-chart-grid)"
468
468
  }),
469
- /* @__PURE__ */ E(p, {
469
+ /* @__PURE__ */ E(m, {
470
470
  dataKey: "date",
471
471
  stroke: "var(--color-chart-axis)",
472
472
  fontSize: 12
473
473
  }),
474
- /* @__PURE__ */ E(m, {
474
+ /* @__PURE__ */ E(h, {
475
475
  stroke: "var(--color-chart-axis)",
476
476
  fontSize: 12
477
477
  }),
478
- /* @__PURE__ */ E(l, { contentStyle: {
478
+ /* @__PURE__ */ E(u, { contentStyle: {
479
479
  backgroundColor: "var(--color-card)",
480
480
  border: "1px solid var(--color-border-default)",
481
481
  borderRadius: 12
@@ -506,9 +506,9 @@ var k = {
506
506
  }),
507
507
  /* @__PURE__ */ D("div", {
508
508
  className: "grid gap-6 xl:grid-cols-2",
509
- children: [/* @__PURE__ */ E(a, {
509
+ children: [/* @__PURE__ */ E(o, {
510
510
  title: A("devportal.revenue.recentSales", "Recent sales"),
511
- children: /* @__PURE__ */ E(c, {
511
+ children: /* @__PURE__ */ E(l, {
512
512
  data: Se,
513
513
  keyField: "id",
514
514
  columns: [
@@ -530,16 +530,16 @@ var k = {
530
530
  {
531
531
  key: "status",
532
532
  header: A("devportal.revenue.status", "Status"),
533
- render: (e) => /* @__PURE__ */ E(o, {
533
+ render: (e) => /* @__PURE__ */ E(s, {
534
534
  status: e.status,
535
535
  type: "app"
536
536
  })
537
537
  }
538
538
  ]
539
539
  })
540
- }), /* @__PURE__ */ E(a, {
540
+ }), /* @__PURE__ */ E(o, {
541
541
  title: A("devportal.revenue.payoutHistory", "Payout history"),
542
- children: /* @__PURE__ */ E(c, {
542
+ children: /* @__PURE__ */ E(l, {
543
543
  data: Ce,
544
544
  keyField: "id",
545
545
  columns: [
@@ -556,7 +556,7 @@ var k = {
556
556
  {
557
557
  key: "status",
558
558
  header: A("devportal.revenue.status", "Status"),
559
- render: (e) => /* @__PURE__ */ E(o, {
559
+ render: (e) => /* @__PURE__ */ E(s, {
560
560
  status: e.status,
561
561
  type: "app"
562
562
  })
@@ -565,17 +565,17 @@ var k = {
565
565
  })
566
566
  })]
567
567
  })
568
- ] }) : /* @__PURE__ */ E(n, {
568
+ ] }) : /* @__PURE__ */ E(r, {
569
569
  illustration: "empty-data",
570
570
  icon: /* @__PURE__ */ E(S, { size: 32 }),
571
571
  title: A("devportal.revenue.noDataTitle", "No revenue data yet"),
572
572
  description: A("devportal.revenue.noDataDescription", "Revenue metrics will appear after this organization starts recording marketplace sales.")
573
573
  })
574
574
  ]
575
- }) : /* @__PURE__ */ E(i, {
575
+ }) : /* @__PURE__ */ E(a, {
576
576
  title: A("devportal.revenue.title", "Revenue"),
577
577
  description: A("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
578
- children: /* @__PURE__ */ E(n, {
578
+ children: /* @__PURE__ */ E(r, {
579
579
  illustration: "empty-people",
580
580
  icon: /* @__PURE__ */ E(y, {
581
581
  size: 32,