@burdenoff/microfe-devportal 2026.1113.1 → 2026.1113.3

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 (55) hide show
  1. package/dist/devportal/DevportalRoot.js +65 -119
  2. package/dist/devportal/DevportalRoot.js.map +1 -1
  3. package/dist/devportal/components/AppCard.js +4 -4
  4. package/dist/devportal/components/DeveloperSettingsHub.d.ts +6 -0
  5. package/dist/devportal/components/DeveloperSettingsHub.js +59 -0
  6. package/dist/devportal/components/DeveloperSettingsHub.js.map +1 -0
  7. package/dist/devportal/components/SectionNav.d.ts +1 -1
  8. package/dist/devportal/components/SectionNav.js +60 -36
  9. package/dist/devportal/components/SectionNav.js.map +1 -1
  10. package/dist/devportal/pages/AnalyticsDashboardPage.js +186 -179
  11. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  12. package/dist/devportal/pages/ApiKeysPage.js +113 -111
  13. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  14. package/dist/devportal/pages/AppLogsPage.js +80 -84
  15. package/dist/devportal/pages/AppLogsPage.js.map +1 -1
  16. package/dist/devportal/pages/ApplicationDetailPage.js +529 -504
  17. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  18. package/dist/devportal/pages/ApplicationsPage.js +68 -67
  19. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  20. package/dist/devportal/pages/CreateApiKeyPage.js +163 -166
  21. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  22. package/dist/devportal/pages/CreateOAuthClientPage.js +134 -130
  23. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  24. package/dist/devportal/pages/DelegationsPage.js +11 -11
  25. package/dist/devportal/pages/DocumentationPage.js +100 -94
  26. package/dist/devportal/pages/DocumentationPage.js.map +1 -1
  27. package/dist/devportal/pages/EditApplicationPage.js +379 -377
  28. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  29. package/dist/devportal/pages/InvitationDecisionPage.js +83 -79
  30. package/dist/devportal/pages/InvitationDecisionPage.js.map +1 -1
  31. package/dist/devportal/pages/OAuthClientDetailPage.js +76 -76
  32. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  33. package/dist/devportal/pages/OAuthClientsPage.js +126 -124
  34. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  35. package/dist/devportal/pages/OrganizationDetailPage.js +19 -19
  36. package/dist/devportal/pages/OrganizationMembersPage.js +223 -204
  37. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  38. package/dist/devportal/pages/ResourcesPage.d.ts +6 -0
  39. package/dist/devportal/pages/ResourcesPage.js +171 -155
  40. package/dist/devportal/pages/ResourcesPage.js.map +1 -1
  41. package/dist/devportal/pages/SellerDashboardPage.js +13 -13
  42. package/dist/devportal/pages/SellerItemsPage.js +4 -4
  43. package/dist/devportal/pages/SettingsPage.js +330 -315
  44. package/dist/devportal/pages/SettingsPage.js.map +1 -1
  45. package/dist/devportal/pages/SetupPage.js +5 -5
  46. package/dist/devportal/pages/WebhookDetailPage.js +6 -6
  47. package/dist/devportal/pages/WebhooksPage.js +39 -39
  48. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  49. package/dist/devportal/utils/appDetailTabs.d.ts +73 -0
  50. package/dist/devportal/utils/appDetailTabs.js +62 -0
  51. package/dist/devportal/utils/appDetailTabs.js.map +1 -0
  52. package/dist/devportal/utils/developerNav.d.ts +39 -0
  53. package/dist/devportal/utils/developerNav.js +304 -0
  54. package/dist/devportal/utils/developerNav.js.map +1 -0
  55. package/package.json +2 -2
@@ -1,17 +1,19 @@
1
1
  import { PageLayout as e, PageSection as t } from "../components/PageLayout.js";
2
2
  import { DEVELOPER_LINKS as n } from "../constants/developerLinks.js";
3
- import { Book as r, BookOpen as i, Code2 as a, Database as o, ExternalLink as s, FileText as c, HelpCircle as l, Key as u, Lightbulb as d, MessageSquare as f, Rocket as p, Shield as m, Users as h, Webhook as g, Zap as _ } from "lucide-react";
4
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
5
- import { useI18n as b } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
- import { EmphasisPanel as x } from "@burdenoff/fe-libs/ui";
3
+ import { useIsFluidgridsVariant as r } from "../providers/DevportalProvider.js";
4
+ import { ResourcesSections as i } from "./ResourcesPage.js";
5
+ import { Book as a, BookOpen as o, Code2 as s, Database as c, ExternalLink as l, FileText as u, HelpCircle as d, Key as f, Lightbulb as p, MessageSquare as m, Rocket as h, Shield as g, Users as _, Webhook as v, Zap as y } from "lucide-react";
6
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
7
+ import { EmphasisPanel as S } from "@burdenoff/fe-libs/ui";
8
+ import { useI18n as C } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
9
  // src/devportal/pages/DocumentationPage.tsx
8
- var S = [
10
+ var w = [
9
11
  {
10
12
  id: "register",
11
13
  title: "Register as a Developer",
12
14
  description: "Who can register, and the steps from a new account to a submitted app",
13
15
  url: n.registrationGuide,
14
- icon: /* @__PURE__ */ v(p, { size: 24 }),
16
+ icon: /* @__PURE__ */ b(h, { size: 24 }),
15
17
  category: "getting-started",
16
18
  isNew: !0
17
19
  },
@@ -20,7 +22,7 @@ var S = [
20
22
  title: "Quick Start Guide",
21
23
  description: "Make your first authenticated API call to the platform",
22
24
  url: n.quickStart,
23
- icon: /* @__PURE__ */ v(_, { size: 24 }),
25
+ icon: /* @__PURE__ */ b(y, { size: 24 }),
24
26
  category: "getting-started",
25
27
  isPopular: !0
26
28
  },
@@ -29,7 +31,7 @@ var S = [
29
31
  title: "Platform Overview",
30
32
  description: "Workspaces, tenants, actors and how the platform fits together",
31
33
  url: n.platformOverview,
32
- icon: /* @__PURE__ */ v(d, { size: 24 }),
34
+ icon: /* @__PURE__ */ b(p, { size: 24 }),
33
35
  category: "getting-started"
34
36
  },
35
37
  {
@@ -37,7 +39,7 @@ var S = [
37
39
  title: "Authentication Guide",
38
40
  description: "Tokens, API keys and how requests are authorized",
39
41
  url: n.authentication,
40
- icon: /* @__PURE__ */ v(m, { size: 24 }),
42
+ icon: /* @__PURE__ */ b(g, { size: 24 }),
41
43
  category: "getting-started"
42
44
  },
43
45
  {
@@ -45,7 +47,7 @@ var S = [
45
47
  title: "GraphQL API",
46
48
  description: "Query and mutate platform data through the federated API",
47
49
  url: n.graphqlApi,
48
- icon: /* @__PURE__ */ v(a, { size: 24 }),
50
+ icon: /* @__PURE__ */ b(s, { size: 24 }),
49
51
  category: "api",
50
52
  isPopular: !0
51
53
  },
@@ -54,7 +56,7 @@ var S = [
54
56
  title: "Webhooks",
55
57
  description: "Receive signed event notifications from the platform",
56
58
  url: n.webhooks,
57
- icon: /* @__PURE__ */ v(g, { size: 24 }),
59
+ icon: /* @__PURE__ */ b(v, { size: 24 }),
58
60
  category: "api"
59
61
  },
60
62
  {
@@ -62,7 +64,7 @@ var S = [
62
64
  title: "Building Integrations",
63
65
  description: "How integrations, providers and connections work",
64
66
  url: n.integrationsOverview,
65
- icon: /* @__PURE__ */ v(_, { size: 24 }),
67
+ icon: /* @__PURE__ */ b(y, { size: 24 }),
66
68
  category: "guides"
67
69
  },
68
70
  {
@@ -70,7 +72,7 @@ var S = [
70
72
  title: "Publish a Connector",
71
73
  description: "Submit an API-key connector to the integrations catalog",
72
74
  url: n.publishConnector,
73
- icon: /* @__PURE__ */ v(u, { size: 24 }),
75
+ icon: /* @__PURE__ */ b(f, { size: 24 }),
74
76
  category: "guides"
75
77
  },
76
78
  {
@@ -78,7 +80,7 @@ var S = [
78
80
  title: "Plugins",
79
81
  description: "Extend Workspaces with UI and AI plugins",
80
82
  url: n.plugins,
81
- icon: /* @__PURE__ */ v(i, { size: 24 }),
83
+ icon: /* @__PURE__ */ b(o, { size: 24 }),
82
84
  category: "guides"
83
85
  },
84
86
  {
@@ -86,7 +88,7 @@ var S = [
86
88
  title: "Node.js SDK",
87
89
  description: "The official TypeScript client for the platform",
88
90
  url: n.nodeSdk,
89
- icon: /* @__PURE__ */ v(o, { size: 24 }),
91
+ icon: /* @__PURE__ */ b(c, { size: 24 }),
90
92
  category: "reference"
91
93
  },
92
94
  {
@@ -94,7 +96,7 @@ var S = [
94
96
  title: "Python SDK",
95
97
  description: "The official Python client for the platform",
96
98
  url: n.pythonSdk,
97
- icon: /* @__PURE__ */ v(o, { size: 24 }),
99
+ icon: /* @__PURE__ */ b(c, { size: 24 }),
98
100
  category: "reference"
99
101
  },
100
102
  {
@@ -102,7 +104,7 @@ var S = [
102
104
  title: "CLI Reference",
103
105
  description: "Every command of the Workspaces CLI",
104
106
  url: n.cliReference,
105
- icon: /* @__PURE__ */ v(c, { size: 24 }),
107
+ icon: /* @__PURE__ */ b(u, { size: 24 }),
106
108
  category: "reference"
107
109
  },
108
110
  {
@@ -110,7 +112,7 @@ var S = [
110
112
  title: "MCP Server",
111
113
  description: "Use Workspaces tools from AI assistants over MCP",
112
114
  url: n.mcpServer,
113
- icon: /* @__PURE__ */ v(a, { size: 24 }),
115
+ icon: /* @__PURE__ */ b(s, { size: 24 }),
114
116
  category: "reference"
115
117
  },
116
118
  {
@@ -118,7 +120,7 @@ var S = [
118
120
  title: "Developer FAQ",
119
121
  description: "Answers to common questions about building on the platform",
120
122
  url: n.faq,
121
- icon: /* @__PURE__ */ v(l, { size: 24 }),
123
+ icon: /* @__PURE__ */ b(d, { size: 24 }),
122
124
  category: "support"
123
125
  },
124
126
  {
@@ -126,184 +128,188 @@ var S = [
126
128
  title: "Developer Community",
127
129
  description: "Join the community forum for discussions and help",
128
130
  url: n.community,
129
- icon: /* @__PURE__ */ v(h, { size: 24 }),
131
+ icon: /* @__PURE__ */ b(_, { size: 24 }),
130
132
  category: "support"
131
133
  }
132
- ], C = [
134
+ ], T = [
133
135
  {
134
136
  title: "API Status",
135
137
  url: n.status,
136
- icon: /* @__PURE__ */ v(_, { size: 16 })
138
+ icon: /* @__PURE__ */ b(y, { size: 16 })
137
139
  },
138
140
  {
139
141
  title: "Code Examples",
140
142
  url: n.examples,
141
- icon: /* @__PURE__ */ v(a, { size: 16 })
143
+ icon: /* @__PURE__ */ b(s, { size: 16 })
142
144
  },
143
145
  {
144
146
  title: "SDKs",
145
147
  url: n.nodeSdk,
146
- icon: /* @__PURE__ */ v(o, { size: 16 })
148
+ icon: /* @__PURE__ */ b(c, { size: 16 })
147
149
  },
148
150
  {
149
151
  title: "Developer Agreement",
150
152
  url: n.developerAgreement,
151
- icon: /* @__PURE__ */ v(m, { size: 16 })
153
+ icon: /* @__PURE__ */ b(g, { size: 16 })
152
154
  }
153
- ], w = ({ doc: e }) => /* @__PURE__ */ y("a", {
155
+ ], E = ({ doc: e }) => /* @__PURE__ */ x("a", {
154
156
  href: e.url,
155
157
  target: "_blank",
156
158
  rel: "noopener noreferrer",
157
159
  className: "group flex flex-col rounded-card border border-border-seam bg-bg-surface p-5 shadow-[var(--shadow-pop)] transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop-hover)]",
158
160
  children: [
159
- /* @__PURE__ */ y("div", {
161
+ /* @__PURE__ */ x("div", {
160
162
  className: "flex items-start justify-between",
161
- children: [/* @__PURE__ */ v("div", {
163
+ children: [/* @__PURE__ */ b("div", {
162
164
  className: "rounded-lg bg-action-primary-bg/10 p-2.5 text-primary",
163
165
  children: e.icon
164
- }), /* @__PURE__ */ y("div", {
166
+ }), /* @__PURE__ */ x("div", {
165
167
  className: "flex items-center gap-2",
166
168
  children: [
167
- e.isNew && /* @__PURE__ */ v("span", {
169
+ e.isNew && /* @__PURE__ */ b("span", {
168
170
  className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs font-medium text-status-success-text",
169
171
  children: "New"
170
172
  }),
171
- e.isPopular && /* @__PURE__ */ v("span", {
173
+ e.isPopular && /* @__PURE__ */ b("span", {
172
174
  className: "rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text",
173
175
  children: "Popular"
174
176
  }),
175
- /* @__PURE__ */ v(s, {
177
+ /* @__PURE__ */ b(l, {
176
178
  size: 16,
177
179
  className: "text-text-secondary opacity-0 transition-opacity group-hover:opacity-100"
178
180
  })
179
181
  ]
180
182
  })]
181
183
  }),
182
- /* @__PURE__ */ v("h3", {
184
+ /* @__PURE__ */ b("h3", {
183
185
  className: "mt-4 font-semibold group-hover:text-primary",
184
186
  children: e.title
185
187
  }),
186
- /* @__PURE__ */ v("p", {
188
+ /* @__PURE__ */ b("p", {
187
189
  className: "mt-1 text-sm text-text-secondary line-clamp-2",
188
190
  children: e.description
189
191
  })
190
192
  ]
191
- }), T = ({ link: e }) => /* @__PURE__ */ y("a", {
193
+ }), D = ({ link: e }) => /* @__PURE__ */ x("a", {
192
194
  href: e.url,
193
195
  target: "_blank",
194
196
  rel: "noopener noreferrer",
195
197
  className: "flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-3 text-sm font-medium transition-colors hover:bg-accent",
196
198
  children: [
197
- /* @__PURE__ */ v("span", {
199
+ /* @__PURE__ */ b("span", {
198
200
  className: "text-text-secondary",
199
201
  children: e.icon
200
202
  }),
201
203
  e.title,
202
- /* @__PURE__ */ v(s, {
204
+ /* @__PURE__ */ b(l, {
203
205
  size: 14,
204
206
  className: "ml-auto text-text-secondary"
205
207
  })
206
208
  ]
207
- }), E = () => {
208
- let { t: i } = b(), a = (e, t) => {
209
- let n = i(e);
209
+ }), O = () => {
210
+ let { t: o } = C(), s = r(), c = (e, t) => {
211
+ let n = o(e);
210
212
  return n === e ? t : n;
211
- }, o = (e) => S.filter((t) => t.category === e);
212
- return /* @__PURE__ */ y(e, {
213
- title: a("devportal.documentation", "Documentation"),
214
- description: a("devportal.exploreDocsDescription", "Explore guides, API references, and resources to build on the Burdenoff platform"),
215
- purpose: a("devportal.docsPurpose", "The reference material for building integrations — getting-started guides, full API docs, and how-tos. New here? Begin with Getting Started, then dive into the API reference for the endpoints your app calls."),
216
- actions: /* @__PURE__ */ y("a", {
213
+ }, u = (e) => w.filter((t) => t.category === e);
214
+ return /* @__PURE__ */ x(e, {
215
+ title: c("devportal.documentation", "Documentation"),
216
+ description: c("devportal.exploreDocsDescription", "Explore guides, API references, and resources to build on the Burdenoff platform"),
217
+ purpose: c("devportal.docsPurpose", "The reference material for building integrations — getting-started guides, full API docs, and how-tos. New here? Begin with Getting Started, then dive into the API reference for the endpoints your app calls."),
218
+ actions: /* @__PURE__ */ x("a", {
217
219
  href: n.docsHome,
218
220
  target: "_blank",
219
221
  rel: "noopener noreferrer",
220
222
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
221
223
  children: [
222
- /* @__PURE__ */ v(r, { size: 16 }),
223
- a("devportal.viewFullDocs", "View Full Docs"),
224
- /* @__PURE__ */ v(s, { size: 14 })
224
+ /* @__PURE__ */ b(a, { size: 16 }),
225
+ c("devportal.viewFullDocs", "View Full Docs"),
226
+ /* @__PURE__ */ b(l, { size: 14 })
225
227
  ]
226
228
  }),
227
229
  children: [
228
- /* @__PURE__ */ y("div", {
230
+ !s && /* @__PURE__ */ x("div", {
229
231
  role: "status",
230
232
  className: "mb-6 rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text",
231
- children: [/* @__PURE__ */ v("strong", {
233
+ children: [/* @__PURE__ */ b("strong", {
232
234
  className: "font-semibold",
233
- children: a("devportal.docs.comingSoon.title", "Coming soon")
234
- }), /* @__PURE__ */ v("span", {
235
+ children: c("devportal.docs.comingSoon.title", "Coming soon")
236
+ }), /* @__PURE__ */ b("span", {
235
237
  className: "ml-2",
236
- children: a("devportal.docs.comingSoon.description", "We're building a fully integrated documentation experience. The links below open the public docs site in the meantime.")
238
+ children: c("devportal.docs.comingSoon.description", "We're building a fully integrated documentation experience. The links below open the public docs site in the meantime.")
237
239
  })]
238
240
  }),
239
- /* @__PURE__ */ v(t, { children: /* @__PURE__ */ v("div", {
241
+ /* @__PURE__ */ b(t, { children: /* @__PURE__ */ b("div", {
240
242
  className: "grid gap-3 sm:grid-cols-2 lg:grid-cols-4",
241
- children: C.map((e) => /* @__PURE__ */ v(T, { link: e }, e.title))
243
+ children: T.map((e) => /* @__PURE__ */ b(D, { link: e }, e.title))
242
244
  }) }),
243
- /* @__PURE__ */ v(x, { children: /* @__PURE__ */ v(t, {
244
- title: a("devportal.gettingStarted", "Getting Started"),
245
- description: a("devportal.everythingToStartBuilding", "Everything you need to start building"),
246
- children: /* @__PURE__ */ v("div", {
245
+ /* @__PURE__ */ b(S, { children: /* @__PURE__ */ b(t, {
246
+ title: c("devportal.gettingStarted", "Getting Started"),
247
+ description: c("devportal.everythingToStartBuilding", "Everything you need to start building"),
248
+ children: /* @__PURE__ */ b("div", {
247
249
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
248
- children: o("getting-started").map((e) => /* @__PURE__ */ v(w, { doc: e }, e.id))
250
+ children: u("getting-started").map((e) => /* @__PURE__ */ b(E, { doc: e }, e.id))
249
251
  })
250
252
  }) }),
251
- /* @__PURE__ */ v(t, {
252
- title: a("devportal.apiReference", "API Reference"),
253
- description: a("devportal.completeApiDocumentation", "Complete API documentation"),
254
- children: /* @__PURE__ */ v("div", {
253
+ /* @__PURE__ */ b(t, {
254
+ title: c("devportal.apiReference", "API Reference"),
255
+ description: c("devportal.completeApiDocumentation", "Complete API documentation"),
256
+ children: /* @__PURE__ */ b("div", {
255
257
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
256
- children: o("api").map((e) => /* @__PURE__ */ v(w, { doc: e }, e.id))
258
+ children: u("api").map((e) => /* @__PURE__ */ b(E, { doc: e }, e.id))
257
259
  })
258
260
  }),
259
- /* @__PURE__ */ v(t, {
260
- title: a("devportal.guides", "Guides"),
261
- description: a("devportal.stepByStepTutorials", "Step-by-step tutorials and best practices"),
262
- children: /* @__PURE__ */ v("div", {
261
+ /* @__PURE__ */ b(t, {
262
+ title: c("devportal.guides", "Guides"),
263
+ description: c("devportal.stepByStepTutorials", "Step-by-step tutorials and best practices"),
264
+ children: /* @__PURE__ */ b("div", {
263
265
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
264
- children: o("guides").map((e) => /* @__PURE__ */ v(w, { doc: e }, e.id))
266
+ children: u("guides").map((e) => /* @__PURE__ */ b(E, { doc: e }, e.id))
265
267
  })
266
268
  }),
267
- /* @__PURE__ */ y("div", {
269
+ /* @__PURE__ */ x("div", {
268
270
  className: "grid gap-6 lg:grid-cols-2",
269
- children: [/* @__PURE__ */ v(t, {
270
- title: a("devportal.reference", "Reference"),
271
- description: a("devportal.detailedSpecifications", "Detailed specifications"),
272
- children: /* @__PURE__ */ v("div", {
271
+ children: [/* @__PURE__ */ b(t, {
272
+ title: c("devportal.reference", "Reference"),
273
+ description: c("devportal.detailedSpecifications", "Detailed specifications"),
274
+ children: /* @__PURE__ */ b("div", {
273
275
  className: "grid gap-4 sm:grid-cols-2",
274
- children: o("reference").map((e) => /* @__PURE__ */ v(w, { doc: e }, e.id))
276
+ children: u("reference").map((e) => /* @__PURE__ */ b(E, { doc: e }, e.id))
275
277
  })
276
- }), /* @__PURE__ */ v(t, {
277
- title: a("devportal.support", "Support"),
278
- description: a("devportal.getHelpStayUpdated", "Get help and stay updated"),
279
- children: /* @__PURE__ */ v("div", {
278
+ }), /* @__PURE__ */ b(t, {
279
+ title: c("devportal.support", "Support"),
280
+ description: c("devportal.getHelpStayUpdated", "Get help and stay updated"),
281
+ children: /* @__PURE__ */ b("div", {
280
282
  className: "grid gap-4 sm:grid-cols-2",
281
- children: o("support").map((e) => /* @__PURE__ */ v(w, { doc: e }, e.id))
283
+ children: u("support").map((e) => /* @__PURE__ */ b(E, { doc: e }, e.id))
282
284
  })
283
285
  })]
284
286
  }),
285
- /* @__PURE__ */ v("div", {
287
+ s && /* @__PURE__ */ b("div", {
288
+ className: "mt-6 space-y-6",
289
+ children: /* @__PURE__ */ b(i, {})
290
+ }),
291
+ /* @__PURE__ */ b("div", {
286
292
  className: "mt-6 rounded-card border border-border-seam bg-accent-wash p-6",
287
- children: /* @__PURE__ */ y("div", {
293
+ children: /* @__PURE__ */ x("div", {
288
294
  className: "flex flex-col items-start gap-4 sm:flex-row sm:items-center sm:justify-between",
289
- children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("h3", {
295
+ children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h3", {
290
296
  className: "text-lg font-semibold",
291
- children: a("devportal.needMoreHelp", "Need more help?")
292
- }), /* @__PURE__ */ v("p", {
297
+ children: c("devportal.needMoreHelp", "Need more help?")
298
+ }), /* @__PURE__ */ b("p", {
293
299
  className: "mt-1 text-text-secondary",
294
- children: a("devportal.developerSupportTeamHelp", "Our developer support team is here to help you build amazing applications.")
295
- })] }), /* @__PURE__ */ y("div", {
300
+ children: c("devportal.developerSupportTeamHelp", "Our developer support team is here to help you build amazing applications.")
301
+ })] }), /* @__PURE__ */ x("div", {
296
302
  className: "flex gap-3",
297
- children: [/* @__PURE__ */ y("a", {
303
+ children: [/* @__PURE__ */ x("a", {
298
304
  href: n.community,
299
305
  target: "_blank",
300
306
  rel: "noopener noreferrer",
301
307
  className: "inline-flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-2 text-sm font-medium hover:bg-accent transition-colors",
302
- children: [/* @__PURE__ */ v(h, { size: 16 }), a("devportal.community", "Community")]
303
- }), /* @__PURE__ */ y("a", {
308
+ children: [/* @__PURE__ */ b(_, { size: 16 }), c("devportal.community", "Community")]
309
+ }), /* @__PURE__ */ x("a", {
304
310
  href: "mailto:contact@burdenoff.com",
305
311
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
306
- children: [/* @__PURE__ */ v(f, { size: 16 }), a("devportal.contactSupport", "Contact Support")]
312
+ children: [/* @__PURE__ */ b(m, { size: 16 }), c("devportal.contactSupport", "Contact Support")]
307
313
  })]
308
314
  })]
309
315
  })
@@ -311,6 +317,6 @@ var S = [
311
317
  ]
312
318
  });
313
319
  };
314
- export { E as DocumentationPage };
320
+ export { O as DocumentationPage };
315
321
 
316
322
  //# sourceMappingURL=DocumentationPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentationPage.js","names":["documentationLinks","DEVELOPER_LINKS","Rocket","Zap","Lightbulb","Shield","Code2","Webhook","Key","BookOpen","Database","FileText","HelpCircle","Users","quickLinks","DocumentationCard","doc","ExternalLink","QuickLinkCard","link","DocumentationPage","useI18n","tr","value","t","key","fallback","getDocsForCategory","categoryId","PageLayout","Book","PageSection","EmphasisPanel","MessageSquare"],"sources":["../../../src/devportal/pages/DocumentationPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Book,\n Code2,\n FileText,\n ExternalLink,\n BookOpen,\n Lightbulb,\n Rocket,\n Shield,\n Zap,\n Database,\n Webhook,\n Key,\n Users,\n HelpCircle,\n MessageSquare,\n} from \"lucide-react\";\nimport { EmphasisPanel } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { DEVELOPER_LINKS } from \"../constants/developerLinks\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\ninterface DocumentationLink {\n id: string;\n title: string;\n description: string;\n url: string;\n icon: React.ReactNode;\n category: \"getting-started\" | \"api\" | \"guides\" | \"reference\" | \"support\";\n isNew?: boolean;\n isPopular?: boolean;\n}\n\ninterface QuickLink {\n title: string;\n url: string;\n icon: React.ReactNode;\n}\n\n// =============================================================================\n// DATA\n// =============================================================================\n\n// Every URL comes from DEVELOPER_LINKS, which only holds pages that exist on\n// the public docs site. The previous list pointed at /developer/*, /api/*,\n// /guides/* and /reference/* paths that were never published and all\n// returned 404 (BOFF-10636).\nconst documentationLinks: DocumentationLink[] = [\n // Getting Started\n {\n id: \"register\",\n title: \"Register as a Developer\",\n description:\n \"Who can register, and the steps from a new account to a submitted app\",\n url: DEVELOPER_LINKS.registrationGuide,\n icon: <Rocket size={24} />,\n category: \"getting-started\",\n isNew: true,\n },\n {\n id: \"quickstart\",\n title: \"Quick Start Guide\",\n description: \"Make your first authenticated API call to the platform\",\n url: DEVELOPER_LINKS.quickStart,\n icon: <Zap size={24} />,\n category: \"getting-started\",\n isPopular: true,\n },\n {\n id: \"concepts\",\n title: \"Platform Overview\",\n description:\n \"Workspaces, tenants, actors and how the platform fits together\",\n url: DEVELOPER_LINKS.platformOverview,\n icon: <Lightbulb size={24} />,\n category: \"getting-started\",\n },\n {\n id: \"authentication\",\n title: \"Authentication Guide\",\n description: \"Tokens, API keys and how requests are authorized\",\n url: DEVELOPER_LINKS.authentication,\n icon: <Shield size={24} />,\n category: \"getting-started\",\n },\n\n // API Reference\n {\n id: \"graphql-api\",\n title: \"GraphQL API\",\n description: \"Query and mutate platform data through the federated API\",\n url: DEVELOPER_LINKS.graphqlApi,\n icon: <Code2 size={24} />,\n category: \"api\",\n isPopular: true,\n },\n {\n id: \"webhooks\",\n title: \"Webhooks\",\n description: \"Receive signed event notifications from the platform\",\n url: DEVELOPER_LINKS.webhooks,\n icon: <Webhook size={24} />,\n category: \"api\",\n },\n\n // Guides\n {\n id: \"building-integrations\",\n title: \"Building Integrations\",\n description: \"How integrations, providers and connections work\",\n url: DEVELOPER_LINKS.integrationsOverview,\n icon: <Zap size={24} />,\n category: \"guides\",\n },\n {\n id: \"publish-connector\",\n title: \"Publish a Connector\",\n description: \"Submit an API-key connector to the integrations catalog\",\n url: DEVELOPER_LINKS.publishConnector,\n icon: <Key size={24} />,\n category: \"guides\",\n },\n {\n id: \"plugins\",\n title: \"Plugins\",\n description: \"Extend Workspaces with UI and AI plugins\",\n url: DEVELOPER_LINKS.plugins,\n icon: <BookOpen size={24} />,\n category: \"guides\",\n },\n\n // Reference\n {\n id: \"node-sdk\",\n title: \"Node.js SDK\",\n description: \"The official TypeScript client for the platform\",\n url: DEVELOPER_LINKS.nodeSdk,\n icon: <Database size={24} />,\n category: \"reference\",\n },\n {\n id: \"python-sdk\",\n title: \"Python SDK\",\n description: \"The official Python client for the platform\",\n url: DEVELOPER_LINKS.pythonSdk,\n icon: <Database size={24} />,\n category: \"reference\",\n },\n {\n id: \"cli\",\n title: \"CLI Reference\",\n description: \"Every command of the Workspaces CLI\",\n url: DEVELOPER_LINKS.cliReference,\n icon: <FileText size={24} />,\n category: \"reference\",\n },\n {\n id: \"mcp-server\",\n title: \"MCP Server\",\n description: \"Use Workspaces tools from AI assistants over MCP\",\n url: DEVELOPER_LINKS.mcpServer,\n icon: <Code2 size={24} />,\n category: \"reference\",\n },\n\n // Support\n {\n id: \"faq\",\n title: \"Developer FAQ\",\n description: \"Answers to common questions about building on the platform\",\n url: DEVELOPER_LINKS.faq,\n icon: <HelpCircle size={24} />,\n category: \"support\",\n },\n {\n id: \"community\",\n title: \"Developer Community\",\n description: \"Join the community forum for discussions and help\",\n url: DEVELOPER_LINKS.community,\n icon: <Users size={24} />,\n category: \"support\",\n },\n];\n\nconst quickLinks: QuickLink[] = [\n {\n title: \"API Status\",\n url: DEVELOPER_LINKS.status,\n icon: <Zap size={16} />,\n },\n {\n title: \"Code Examples\",\n url: DEVELOPER_LINKS.examples,\n icon: <Code2 size={16} />,\n },\n {\n title: \"SDKs\",\n url: DEVELOPER_LINKS.nodeSdk,\n icon: <Database size={16} />,\n },\n {\n title: \"Developer Agreement\",\n url: DEVELOPER_LINKS.developerAgreement,\n icon: <Shield size={16} />,\n },\n];\n\nconst categories = [\n {\n id: \"getting-started\",\n label: \"Getting Started\",\n icon: <Rocket size={18} />,\n },\n { id: \"api\", label: \"API Reference\", icon: <Code2 size={18} /> },\n { id: \"guides\", label: \"Guides\", icon: <BookOpen size={18} /> },\n { id: \"reference\", label: \"Reference\", icon: <FileText size={18} /> },\n { id: \"support\", label: \"Support\", icon: <HelpCircle size={18} /> },\n];\n\n// =============================================================================\n// COMPONENTS\n// =============================================================================\n\nconst DocumentationCard: FC<{ doc: DocumentationLink }> = ({ doc }) => (\n <a\n href={doc.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"group flex flex-col rounded-card border border-border-seam bg-bg-surface p-5 shadow-[var(--shadow-pop)] transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop-hover)]\"\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"rounded-lg bg-action-primary-bg/10 p-2.5 text-primary\">\n {doc.icon}\n </div>\n <div className=\"flex items-center gap-2\">\n {doc.isNew && (\n <span className=\"rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs font-medium text-status-success-text\">\n New\n </span>\n )}\n {doc.isPopular && (\n <span className=\"rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text\">\n Popular\n </span>\n )}\n <ExternalLink\n size={16}\n className=\"text-text-secondary opacity-0 transition-opacity group-hover:opacity-100\"\n />\n </div>\n </div>\n <h3 className=\"mt-4 font-semibold group-hover:text-primary\">{doc.title}</h3>\n <p className=\"mt-1 text-sm text-text-secondary line-clamp-2\">\n {doc.description}\n </p>\n </a>\n);\n\nconst QuickLinkCard: FC<{ link: QuickLink }> = ({ link }) => (\n <a\n href={link.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-3 text-sm font-medium transition-colors hover:bg-accent\"\n >\n <span className=\"text-text-secondary\">{link.icon}</span>\n {link.title}\n <ExternalLink size={14} className=\"ml-auto text-text-secondary\" />\n </a>\n);\n\n// =============================================================================\n// PAGE COMPONENT\n// =============================================================================\n\nexport const DocumentationPage: FC = () => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const getDocsForCategory = (categoryId: string) =>\n documentationLinks.filter((doc) => doc.category === categoryId);\n\n return (\n <PageLayout\n title={tr(\"devportal.documentation\", \"Documentation\")}\n description={tr(\n \"devportal.exploreDocsDescription\",\n \"Explore guides, API references, and resources to build on the Burdenoff platform\",\n )}\n purpose={tr(\n \"devportal.docsPurpose\",\n \"The reference material for building integrations — getting-started guides, full API docs, and how-tos. New here? Begin with Getting Started, then dive into the API reference for the endpoints your app calls.\",\n )}\n actions={\n <a\n href={DEVELOPER_LINKS.docsHome}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Book size={16} />\n {tr(\"devportal.viewFullDocs\", \"View Full Docs\")}\n <ExternalLink size={14} />\n </a>\n }\n >\n {/* Coming-soon banner — page is intentionally a static stub until the\n CMS-backed documentation surface ships. See devportal stability\n tracker (`/docs` is Deferred). */}\n <div\n role=\"status\"\n className=\"mb-6 rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text\"\n >\n <strong className=\"font-semibold\">\n {tr(\"devportal.docs.comingSoon.title\", \"Coming soon\")}\n </strong>\n <span className=\"ml-2\">\n {tr(\n \"devportal.docs.comingSoon.description\",\n \"We're building a fully integrated documentation experience. The links below open the public docs site in the meantime.\",\n )}\n </span>\n </div>\n\n {/* Quick Links */}\n <PageSection>\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {quickLinks.map((link) => (\n <QuickLinkCard key={link.title} link={link} />\n ))}\n </div>\n </PageSection>\n\n {/* Featured / Getting Started — primary emphasis zone */}\n <EmphasisPanel>\n <PageSection\n title={tr(\"devportal.gettingStarted\", \"Getting Started\")}\n description={tr(\n \"devportal.everythingToStartBuilding\",\n \"Everything you need to start building\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {getDocsForCategory(\"getting-started\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n </EmphasisPanel>\n\n {/* API Reference */}\n <PageSection\n title={tr(\"devportal.apiReference\", \"API Reference\")}\n description={tr(\n \"devportal.completeApiDocumentation\",\n \"Complete API documentation\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {getDocsForCategory(\"api\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Guides */}\n <PageSection\n title={tr(\"devportal.guides\", \"Guides\")}\n description={tr(\n \"devportal.stepByStepTutorials\",\n \"Step-by-step tutorials and best practices\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {getDocsForCategory(\"guides\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Reference & Support Row */}\n <div className=\"grid gap-6 lg:grid-cols-2\">\n {/* Reference */}\n <PageSection\n title={tr(\"devportal.reference\", \"Reference\")}\n description={tr(\n \"devportal.detailedSpecifications\",\n \"Detailed specifications\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {getDocsForCategory(\"reference\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Support */}\n <PageSection\n title={tr(\"devportal.support\", \"Support\")}\n description={tr(\n \"devportal.getHelpStayUpdated\",\n \"Get help and stay updated\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {getDocsForCategory(\"support\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n </div>\n\n {/* Help Banner */}\n <div className=\"mt-6 rounded-card border border-border-seam bg-accent-wash p-6\">\n <div className=\"flex flex-col items-start gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-lg font-semibold\">\n {tr(\"devportal.needMoreHelp\", \"Need more help?\")}\n </h3>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n \"devportal.developerSupportTeamHelp\",\n \"Our developer support team is here to help you build amazing applications.\",\n )}\n </p>\n </div>\n <div className=\"flex gap-3\">\n <a\n href={DEVELOPER_LINKS.community}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-2 text-sm font-medium hover:bg-accent transition-colors\"\n >\n <Users size={16} />\n {tr(\"devportal.community\", \"Community\")}\n </a>\n <a\n href=\"mailto:contact@burdenoff.com\"\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <MessageSquare size={16} />\n {tr(\"devportal.contactSupport\", \"Contact Support\")}\n </a>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DocumentationPage.js","names":["documentationLinks","DEVELOPER_LINKS","Rocket","Zap","Lightbulb","Shield","Code2","Webhook","Key","BookOpen","Database","FileText","HelpCircle","Users","quickLinks","DocumentationCard","doc","ExternalLink","QuickLinkCard","link","DocumentationPage","useI18n","isFluidgrids","useIsFluidgridsVariant","tr","value","t","key","fallback","getDocsForCategory","categoryId","PageLayout","Book","PageSection","EmphasisPanel","ResourcesSections","MessageSquare"],"sources":["../../../src/devportal/pages/DocumentationPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Book,\n Code2,\n FileText,\n ExternalLink,\n BookOpen,\n Lightbulb,\n Rocket,\n Shield,\n Zap,\n Database,\n Webhook,\n Key,\n Users,\n HelpCircle,\n MessageSquare,\n} from \"lucide-react\";\nimport { EmphasisPanel } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { DEVELOPER_LINKS } from \"../constants/developerLinks\";\nimport { useIsFluidgridsVariant } from \"../providers/DevportalProvider\";\nimport { ResourcesSections } from \"./ResourcesPage\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\ninterface DocumentationLink {\n id: string;\n title: string;\n description: string;\n url: string;\n icon: React.ReactNode;\n category: \"getting-started\" | \"api\" | \"guides\" | \"reference\" | \"support\";\n isNew?: boolean;\n isPopular?: boolean;\n}\n\ninterface QuickLink {\n title: string;\n url: string;\n icon: React.ReactNode;\n}\n\n// =============================================================================\n// DATA\n// =============================================================================\n\n// Every URL comes from DEVELOPER_LINKS, which only holds pages that exist on\n// the public docs site. The previous list pointed at /developer/*, /api/*,\n// /guides/* and /reference/* paths that were never published and all\n// returned 404 (BOFF-10636).\nconst documentationLinks: DocumentationLink[] = [\n // Getting Started\n {\n id: \"register\",\n title: \"Register as a Developer\",\n description:\n \"Who can register, and the steps from a new account to a submitted app\",\n url: DEVELOPER_LINKS.registrationGuide,\n icon: <Rocket size={24} />,\n category: \"getting-started\",\n isNew: true,\n },\n {\n id: \"quickstart\",\n title: \"Quick Start Guide\",\n description: \"Make your first authenticated API call to the platform\",\n url: DEVELOPER_LINKS.quickStart,\n icon: <Zap size={24} />,\n category: \"getting-started\",\n isPopular: true,\n },\n {\n id: \"concepts\",\n title: \"Platform Overview\",\n description:\n \"Workspaces, tenants, actors and how the platform fits together\",\n url: DEVELOPER_LINKS.platformOverview,\n icon: <Lightbulb size={24} />,\n category: \"getting-started\",\n },\n {\n id: \"authentication\",\n title: \"Authentication Guide\",\n description: \"Tokens, API keys and how requests are authorized\",\n url: DEVELOPER_LINKS.authentication,\n icon: <Shield size={24} />,\n category: \"getting-started\",\n },\n\n // API Reference\n {\n id: \"graphql-api\",\n title: \"GraphQL API\",\n description: \"Query and mutate platform data through the federated API\",\n url: DEVELOPER_LINKS.graphqlApi,\n icon: <Code2 size={24} />,\n category: \"api\",\n isPopular: true,\n },\n {\n id: \"webhooks\",\n title: \"Webhooks\",\n description: \"Receive signed event notifications from the platform\",\n url: DEVELOPER_LINKS.webhooks,\n icon: <Webhook size={24} />,\n category: \"api\",\n },\n\n // Guides\n {\n id: \"building-integrations\",\n title: \"Building Integrations\",\n description: \"How integrations, providers and connections work\",\n url: DEVELOPER_LINKS.integrationsOverview,\n icon: <Zap size={24} />,\n category: \"guides\",\n },\n {\n id: \"publish-connector\",\n title: \"Publish a Connector\",\n description: \"Submit an API-key connector to the integrations catalog\",\n url: DEVELOPER_LINKS.publishConnector,\n icon: <Key size={24} />,\n category: \"guides\",\n },\n {\n id: \"plugins\",\n title: \"Plugins\",\n description: \"Extend Workspaces with UI and AI plugins\",\n url: DEVELOPER_LINKS.plugins,\n icon: <BookOpen size={24} />,\n category: \"guides\",\n },\n\n // Reference\n {\n id: \"node-sdk\",\n title: \"Node.js SDK\",\n description: \"The official TypeScript client for the platform\",\n url: DEVELOPER_LINKS.nodeSdk,\n icon: <Database size={24} />,\n category: \"reference\",\n },\n {\n id: \"python-sdk\",\n title: \"Python SDK\",\n description: \"The official Python client for the platform\",\n url: DEVELOPER_LINKS.pythonSdk,\n icon: <Database size={24} />,\n category: \"reference\",\n },\n {\n id: \"cli\",\n title: \"CLI Reference\",\n description: \"Every command of the Workspaces CLI\",\n url: DEVELOPER_LINKS.cliReference,\n icon: <FileText size={24} />,\n category: \"reference\",\n },\n {\n id: \"mcp-server\",\n title: \"MCP Server\",\n description: \"Use Workspaces tools from AI assistants over MCP\",\n url: DEVELOPER_LINKS.mcpServer,\n icon: <Code2 size={24} />,\n category: \"reference\",\n },\n\n // Support\n {\n id: \"faq\",\n title: \"Developer FAQ\",\n description: \"Answers to common questions about building on the platform\",\n url: DEVELOPER_LINKS.faq,\n icon: <HelpCircle size={24} />,\n category: \"support\",\n },\n {\n id: \"community\",\n title: \"Developer Community\",\n description: \"Join the community forum for discussions and help\",\n url: DEVELOPER_LINKS.community,\n icon: <Users size={24} />,\n category: \"support\",\n },\n];\n\nconst quickLinks: QuickLink[] = [\n {\n title: \"API Status\",\n url: DEVELOPER_LINKS.status,\n icon: <Zap size={16} />,\n },\n {\n title: \"Code Examples\",\n url: DEVELOPER_LINKS.examples,\n icon: <Code2 size={16} />,\n },\n {\n title: \"SDKs\",\n url: DEVELOPER_LINKS.nodeSdk,\n icon: <Database size={16} />,\n },\n {\n title: \"Developer Agreement\",\n url: DEVELOPER_LINKS.developerAgreement,\n icon: <Shield size={16} />,\n },\n];\n\nconst categories = [\n {\n id: \"getting-started\",\n label: \"Getting Started\",\n icon: <Rocket size={18} />,\n },\n { id: \"api\", label: \"API Reference\", icon: <Code2 size={18} /> },\n { id: \"guides\", label: \"Guides\", icon: <BookOpen size={18} /> },\n { id: \"reference\", label: \"Reference\", icon: <FileText size={18} /> },\n { id: \"support\", label: \"Support\", icon: <HelpCircle size={18} /> },\n];\n\n// =============================================================================\n// COMPONENTS\n// =============================================================================\n\nconst DocumentationCard: FC<{ doc: DocumentationLink }> = ({ doc }) => (\n <a\n href={doc.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"group flex flex-col rounded-card border border-border-seam bg-bg-surface p-5 shadow-[var(--shadow-pop)] transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop-hover)]\"\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"rounded-lg bg-action-primary-bg/10 p-2.5 text-primary\">\n {doc.icon}\n </div>\n <div className=\"flex items-center gap-2\">\n {doc.isNew && (\n <span className=\"rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs font-medium text-status-success-text\">\n New\n </span>\n )}\n {doc.isPopular && (\n <span className=\"rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text\">\n Popular\n </span>\n )}\n <ExternalLink\n size={16}\n className=\"text-text-secondary opacity-0 transition-opacity group-hover:opacity-100\"\n />\n </div>\n </div>\n <h3 className=\"mt-4 font-semibold group-hover:text-primary\">{doc.title}</h3>\n <p className=\"mt-1 text-sm text-text-secondary line-clamp-2\">\n {doc.description}\n </p>\n </a>\n);\n\nconst QuickLinkCard: FC<{ link: QuickLink }> = ({ link }) => (\n <a\n href={link.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-3 text-sm font-medium transition-colors hover:bg-accent\"\n >\n <span className=\"text-text-secondary\">{link.icon}</span>\n {link.title}\n <ExternalLink size={14} className=\"ml-auto text-text-secondary\" />\n </a>\n);\n\n// =============================================================================\n// PAGE COMPONENT\n// =============================================================================\n\nexport const DocumentationPage: FC = () => {\n const { t } = useI18n();\n const isFluidgrids = useIsFluidgridsVariant();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const getDocsForCategory = (categoryId: string) =>\n documentationLinks.filter((doc) => doc.category === categoryId);\n\n return (\n <PageLayout\n title={tr(\"devportal.documentation\", \"Documentation\")}\n description={tr(\n \"devportal.exploreDocsDescription\",\n \"Explore guides, API references, and resources to build on the Burdenoff platform\",\n )}\n purpose={tr(\n \"devportal.docsPurpose\",\n \"The reference material for building integrations — getting-started guides, full API docs, and how-tos. New here? Begin with Getting Started, then dive into the API reference for the endpoints your app calls.\",\n )}\n actions={\n <a\n href={DEVELOPER_LINKS.docsHome}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Book size={16} />\n {tr(\"devportal.viewFullDocs\", \"View Full Docs\")}\n <ExternalLink size={14} />\n </a>\n }\n >\n {/* Coming-soon banner — page is intentionally a static stub until the\n CMS-backed documentation surface ships. See devportal stability\n tracker (`/docs` is Deferred). */}\n {!isFluidgrids && (\n <div\n role=\"status\"\n className=\"mb-6 rounded-lg border border-status-warning-border bg-status-warning-bg p-4 text-sm text-status-warning-text\"\n >\n <strong className=\"font-semibold\">\n {tr(\"devportal.docs.comingSoon.title\", \"Coming soon\")}\n </strong>\n <span className=\"ml-2\">\n {tr(\n \"devportal.docs.comingSoon.description\",\n \"We're building a fully integrated documentation experience. The links below open the public docs site in the meantime.\",\n )}\n </span>\n </div>\n )}\n\n {/* Quick Links */}\n <PageSection>\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {quickLinks.map((link) => (\n <QuickLinkCard key={link.title} link={link} />\n ))}\n </div>\n </PageSection>\n\n {/* Featured / Getting Started — primary emphasis zone */}\n <EmphasisPanel>\n <PageSection\n title={tr(\"devportal.gettingStarted\", \"Getting Started\")}\n description={tr(\n \"devportal.everythingToStartBuilding\",\n \"Everything you need to start building\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {getDocsForCategory(\"getting-started\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n </EmphasisPanel>\n\n {/* API Reference */}\n <PageSection\n title={tr(\"devportal.apiReference\", \"API Reference\")}\n description={tr(\n \"devportal.completeApiDocumentation\",\n \"Complete API documentation\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n {getDocsForCategory(\"api\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Guides */}\n <PageSection\n title={tr(\"devportal.guides\", \"Guides\")}\n description={tr(\n \"devportal.stepByStepTutorials\",\n \"Step-by-step tutorials and best practices\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {getDocsForCategory(\"guides\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Reference & Support Row */}\n <div className=\"grid gap-6 lg:grid-cols-2\">\n {/* Reference */}\n <PageSection\n title={tr(\"devportal.reference\", \"Reference\")}\n description={tr(\n \"devportal.detailedSpecifications\",\n \"Detailed specifications\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {getDocsForCategory(\"reference\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n\n {/* Support */}\n <PageSection\n title={tr(\"devportal.support\", \"Support\")}\n description={tr(\n \"devportal.getHelpStayUpdated\",\n \"Get help and stay updated\",\n )}\n >\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {getDocsForCategory(\"support\").map((doc) => (\n <DocumentationCard key={doc.id} doc={doc} />\n ))}\n </div>\n </PageSection>\n </div>\n\n {/* FluidGrids: Resources (SDKs, build and learning links) is merged in here. */}\n {isFluidgrids && (\n <div className=\"mt-6 space-y-6\">\n <ResourcesSections />\n </div>\n )}\n\n {/* Help Banner */}\n <div className=\"mt-6 rounded-card border border-border-seam bg-accent-wash p-6\">\n <div className=\"flex flex-col items-start gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h3 className=\"text-lg font-semibold\">\n {tr(\"devportal.needMoreHelp\", \"Need more help?\")}\n </h3>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n \"devportal.developerSupportTeamHelp\",\n \"Our developer support team is here to help you build amazing applications.\",\n )}\n </p>\n </div>\n <div className=\"flex gap-3\">\n <a\n href={DEVELOPER_LINKS.community}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 rounded-md border bg-bg-surface px-4 py-2 text-sm font-medium hover:bg-accent transition-colors\"\n >\n <Users size={16} />\n {tr(\"devportal.community\", \"Community\")}\n </a>\n <a\n href=\"mailto:contact@burdenoff.com\"\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <MessageSquare size={16} />\n {tr(\"devportal.contactSupport\", \"Contact Support\")}\n </a>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}