@burdenoff/microfe-devportal 2026.717.1 → 2026.720.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 (42) hide show
  1. package/dist/devportal/components/PermissionGuard.d.ts +14 -1
  2. package/dist/devportal/components/PermissionGuard.d.ts.map +1 -1
  3. package/dist/devportal/components/PermissionGuard.js +16 -13
  4. package/dist/devportal/components/PermissionGuard.js.map +1 -1
  5. package/dist/devportal/pages/AdminReviewPage.js +9 -9
  6. package/dist/devportal/pages/ApiKeysPage.js +180 -181
  7. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  8. package/dist/devportal/pages/ApplicationDetailPage.js +3 -3
  9. package/dist/devportal/pages/ApplicationVersionsPage.js +4 -4
  10. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  11. package/dist/devportal/pages/ApplicationsPage.js +4 -4
  12. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  13. package/dist/devportal/pages/CreateApiKeyPage.js +1 -1
  14. package/dist/devportal/pages/CreateOAuthClientPage.js +1 -1
  15. package/dist/devportal/pages/CreateOrganizationPage.js +1 -1
  16. package/dist/devportal/pages/CreateWebhookPage.js +25 -25
  17. package/dist/devportal/pages/DashboardPage.d.ts.map +1 -1
  18. package/dist/devportal/pages/DashboardPage.js +110 -111
  19. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  20. package/dist/devportal/pages/DelegationsPage.js +1 -1
  21. package/dist/devportal/pages/EditApplicationPage.js +4 -4
  22. package/dist/devportal/pages/ListingPreviewPage.d.ts.map +1 -1
  23. package/dist/devportal/pages/ListingPreviewPage.js +160 -161
  24. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  25. package/dist/devportal/pages/OAuthClientDetailPage.d.ts.map +1 -1
  26. package/dist/devportal/pages/OAuthClientDetailPage.js +166 -167
  27. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  28. package/dist/devportal/pages/OAuthClientsPage.d.ts.map +1 -1
  29. package/dist/devportal/pages/OAuthClientsPage.js +121 -122
  30. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  31. package/dist/devportal/pages/OrganizationDetailPage.js +3 -3
  32. package/dist/devportal/pages/OrganizationMembersPage.js +4 -4
  33. package/dist/devportal/pages/OrganizationsPage.js +1 -1
  34. package/dist/devportal/pages/PublishPage.js +246 -246
  35. package/dist/devportal/pages/PublishPage.js.map +1 -1
  36. package/dist/devportal/pages/PublisherProfilePage.js +4 -4
  37. package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
  38. package/dist/devportal/pages/StoreSubmissionPage.js +3 -3
  39. package/dist/devportal/pages/WebhookDetailPage.js +3 -3
  40. package/dist/devportal/pages/WebhooksPage.js +129 -129
  41. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  42. package/package.json +1 -1
@@ -4,14 +4,13 @@ import { PageLayout as n, PageSection as r } from "../components/PageLayout.js";
4
4
  import { Alert as i } from "../components/ConfirmDialog.js";
5
5
  import { PermissionGuard as a } from "../components/PermissionGuard.js";
6
6
  import "../components/index.js";
7
- import { DEVPORTAL_PERMISSIONS as o } from "../constants/permissions.js";
8
- import { useEffect as s } from "react";
9
- import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
10
- import { CheckCircle as l, Download as u, ExternalLink as d, Eye as f, FileText as p, Globe as m, Loader2 as h, Shield as g, Star as _, Tag as v } from "lucide-react";
11
- import { useParams as y } from "react-router-dom";
12
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
7
+ import { useEffect as o } from "react";
8
+ import { useI18n as s } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
+ import { CheckCircle as c, Download as l, ExternalLink as u, Eye as d, FileText as f, Globe as p, Loader2 as m, Shield as h, Star as g, Tag as _ } from "lucide-react";
10
+ import { useParams as v } from "react-router-dom";
11
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
13
12
  //#region src/devportal/pages/ListingPreviewPage.tsx
14
- var S = {
13
+ var x = {
15
14
  FREE: "Free",
16
15
  FREEMIUM: "Free with in-app purchases",
17
16
  PAID: "Paid",
@@ -19,7 +18,7 @@ var S = {
19
18
  SUBSCRIPTION: "Subscription",
20
19
  USAGE_BASED: "Usage-based pricing",
21
20
  ENTERPRISE: "Enterprise pricing"
22
- }, C = {
21
+ }, S = {
23
22
  WORKFLOW: "Workflow",
24
23
  WIDGET: "Widget",
25
24
  BOT: "Bot / Chatbot",
@@ -34,320 +33,320 @@ var S = {
34
33
  DESKTOP_APP: "Desktop App",
35
34
  CLI_TOOL: "CLI Tool",
36
35
  SERVICE: "Service"
37
- }, w = () => {
38
- let { appId: w } = y(), { navigate: T, basePath: E } = e(), { t: D } = c(), O = (e, t) => {
39
- let n = D(e);
36
+ }, C = () => {
37
+ let { appId: C } = v(), { navigate: w, basePath: T } = e(), { t: E } = s(), D = (e, t) => {
38
+ let n = E(e);
40
39
  return n === e ? t : n;
41
- }, { data: k, loading: A, error: j } = t({
42
- variables: { id: w },
43
- skip: !w,
40
+ }, { data: O, loading: k, error: A } = t({
41
+ variables: { id: C },
42
+ skip: !C,
44
43
  fetchPolicy: "cache-and-network"
45
- }), M = k?.application;
46
- if (s(() => {
47
- let e = M?.name;
48
- if (!w || !e) return;
44
+ }), j = O?.application;
45
+ if (o(() => {
46
+ let e = j?.name;
47
+ if (!C || !e) return;
49
48
  let t = window.__breadcrumbRegistry;
50
- return t?.register(w, e), () => t?.unregister(w);
51
- }, [w, M?.name]), A) return /* @__PURE__ */ b(n, {
52
- title: O("devportal.marketplacePreview", "Marketplace Preview"),
53
- description: O("devportal.loading", "Loading..."),
54
- backLink: `/apps/${w}`,
55
- backLabel: O("devportal.backToApplication", "Back to Application"),
56
- children: /* @__PURE__ */ b("div", {
49
+ return t?.register(C, e), () => t?.unregister(C);
50
+ }, [C, j?.name]), k) return /* @__PURE__ */ y(n, {
51
+ title: D("devportal.marketplacePreview", "Marketplace Preview"),
52
+ description: D("devportal.loading", "Loading..."),
53
+ backLink: `/apps/${C}`,
54
+ backLabel: D("devportal.backToApplication", "Back to Application"),
55
+ children: /* @__PURE__ */ y("div", {
57
56
  className: "flex items-center justify-center py-12",
58
- children: /* @__PURE__ */ b(h, { className: "h-8 w-8 animate-spin text-text-secondary" })
57
+ children: /* @__PURE__ */ y(m, { className: "h-8 w-8 animate-spin text-text-secondary" })
59
58
  })
60
59
  });
61
- if (j || !M) return /* @__PURE__ */ b(n, {
62
- title: O("devportal.marketplacePreview", "Marketplace Preview"),
63
- description: O("devportal.couldNotLoadApplication", "Could not load application"),
64
- backLink: `/apps/${w}`,
65
- backLabel: O("devportal.backToApplication", "Back to Application"),
66
- children: /* @__PURE__ */ b(i, {
60
+ if (A || !j) return /* @__PURE__ */ y(n, {
61
+ title: D("devportal.marketplacePreview", "Marketplace Preview"),
62
+ description: D("devportal.couldNotLoadApplication", "Could not load application"),
63
+ backLink: `/apps/${C}`,
64
+ backLabel: D("devportal.backToApplication", "Back to Application"),
65
+ children: /* @__PURE__ */ y(i, {
67
66
  variant: "error",
68
- title: O("devportal.failedToLoadApplication", "Failed to load application"),
69
- children: j?.message ?? O("devportal.applicationNotFound", "Application not found")
67
+ title: D("devportal.failedToLoadApplication", "Failed to load application"),
68
+ children: A?.message ?? D("devportal.applicationNotFound", "Application not found")
70
69
  })
71
70
  });
72
- let N = Array.isArray(M.screenshots) ? M.screenshots : [], P = M.status === "PUBLISHED";
73
- return /* @__PURE__ */ b(a, {
74
- permission: o.APP_READ,
75
- children: /* @__PURE__ */ x(n, {
76
- title: O("devportal.marketplacePreview", "Marketplace Preview"),
77
- description: O("devportal.marketplacePreviewDescription", "Preview how your app will appear in the marketplace"),
78
- purpose: O("devportal.marketplacePreviewPurpose", "See exactly how shoppers will experience your store listing — icon, screenshots, description, and pricing — before it goes live. Use it to catch missing assets or typos, then submit for review when the listing looks right."),
79
- backLink: `/apps/${w}`,
80
- backLabel: O("devportal.backToApplication", "Back to Application"),
81
- actions: P ? void 0 : /* @__PURE__ */ x("button", {
82
- onClick: () => T?.(`${E}/apps/${w}/publish`),
71
+ let M = Array.isArray(j.screenshots) ? j.screenshots : [], N = j.status === "PUBLISHED";
72
+ return /* @__PURE__ */ y(a, {
73
+ authOnly: !0,
74
+ children: /* @__PURE__ */ b(n, {
75
+ title: D("devportal.marketplacePreview", "Marketplace Preview"),
76
+ description: D("devportal.marketplacePreviewDescription", "Preview how your app will appear in the marketplace"),
77
+ purpose: D("devportal.marketplacePreviewPurpose", "See exactly how shoppers will experience your store listing — icon, screenshots, description, and pricing — before it goes live. Use it to catch missing assets or typos, then submit for review when the listing looks right."),
78
+ backLink: `/apps/${C}`,
79
+ backLabel: D("devportal.backToApplication", "Back to Application"),
80
+ actions: N ? void 0 : /* @__PURE__ */ b("button", {
81
+ onClick: () => w?.(`${T}/apps/${C}/publish`),
83
82
  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",
84
- children: [/* @__PURE__ */ b(f, { size: 16 }), O("devportal.submitForReview", "Submit for Review")]
83
+ children: [/* @__PURE__ */ y(d, { size: 16 }), D("devportal.submitForReview", "Submit for Review")]
85
84
  }),
86
85
  children: [
87
- /* @__PURE__ */ x("div", {
86
+ /* @__PURE__ */ b("div", {
88
87
  className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text",
89
- children: [/* @__PURE__ */ b(f, {
88
+ children: [/* @__PURE__ */ y(d, {
90
89
  size: 16,
91
90
  className: "flex-shrink-0"
92
- }), /* @__PURE__ */ b("span", { children: O("devportal.previewBannerText", "This is a preview of your marketplace listing. It shows how your app will appear to users after publication.") })]
91
+ }), /* @__PURE__ */ y("span", { children: D("devportal.previewBannerText", "This is a preview of your marketplace listing. It shows how your app will appear to users after publication.") })]
93
92
  }),
94
- /* @__PURE__ */ x("div", {
93
+ /* @__PURE__ */ b("div", {
95
94
  className: "rounded-xl border bg-bg-surface overflow-hidden",
96
95
  children: [
97
- M.bannerUrl ? /* @__PURE__ */ b("div", {
96
+ j.bannerUrl ? /* @__PURE__ */ y("div", {
98
97
  className: "h-48 w-full overflow-hidden",
99
- children: /* @__PURE__ */ b("img", {
100
- src: M.bannerUrl,
101
- alt: O("devportal.appBannerAlt", "App banner"),
98
+ children: /* @__PURE__ */ y("img", {
99
+ src: j.bannerUrl,
100
+ alt: D("devportal.appBannerAlt", "App banner"),
102
101
  className: "h-full w-full object-cover"
103
102
  })
104
- }) : /* @__PURE__ */ b("div", { className: "h-32 w-full bg-gradient-to-r from-primary/20 to-primary/5" }),
105
- /* @__PURE__ */ b("div", {
103
+ }) : /* @__PURE__ */ y("div", { className: "h-32 w-full bg-gradient-to-r from-primary/20 to-primary/5" }),
104
+ /* @__PURE__ */ y("div", {
106
105
  className: "p-6",
107
- children: /* @__PURE__ */ x("div", {
106
+ children: /* @__PURE__ */ b("div", {
108
107
  className: "flex items-start gap-5",
109
108
  children: [
110
- M.iconUrl ? /* @__PURE__ */ b("img", {
111
- src: M.iconUrl,
112
- alt: M.name,
109
+ j.iconUrl ? /* @__PURE__ */ y("img", {
110
+ src: j.iconUrl,
111
+ alt: j.name,
113
112
  className: "h-20 w-20 rounded-2xl border object-cover flex-shrink-0 shadow-sm"
114
- }) : /* @__PURE__ */ b("div", {
113
+ }) : /* @__PURE__ */ y("div", {
115
114
  className: "h-20 w-20 rounded-2xl border bg-bg-sunken flex items-center justify-center flex-shrink-0",
116
- children: /* @__PURE__ */ b("span", {
115
+ children: /* @__PURE__ */ y("span", {
117
116
  className: "text-3xl font-bold text-text-secondary",
118
- "aria-label": O("devportal.appIconFallbackAriaLabel", "App icon"),
119
- children: M.name.charAt(0).toUpperCase()
117
+ "aria-label": D("devportal.appIconFallbackAriaLabel", "App icon"),
118
+ children: j.name.charAt(0).toUpperCase()
120
119
  })
121
120
  }),
122
- /* @__PURE__ */ x("div", {
121
+ /* @__PURE__ */ b("div", {
123
122
  className: "flex-1 min-w-0",
124
123
  children: [
125
- /* @__PURE__ */ x("div", {
124
+ /* @__PURE__ */ b("div", {
126
125
  className: "flex flex-wrap items-center gap-2",
127
126
  children: [
128
- /* @__PURE__ */ b("h1", {
127
+ /* @__PURE__ */ y("h1", {
129
128
  className: "text-2xl font-bold",
130
- children: M.name
129
+ children: j.name
131
130
  }),
132
- M.isVerified && /* @__PURE__ */ b(l, {
131
+ j.isVerified && /* @__PURE__ */ y(c, {
133
132
  size: 20,
134
133
  className: "text-primary"
135
134
  }),
136
- M.isFeatured && /* @__PURE__ */ b("span", {
135
+ j.isFeatured && /* @__PURE__ */ y("span", {
137
136
  className: "rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text",
138
- children: O("devportal.featured", "Featured")
137
+ children: D("devportal.featured", "Featured")
139
138
  })
140
139
  ]
141
140
  }),
142
- /* @__PURE__ */ b("p", {
141
+ /* @__PURE__ */ y("p", {
143
142
  className: "mt-1 text-text-secondary",
144
- children: M.shortDescription ?? M.description ?? O("devportal.noDescription", "No description")
143
+ children: j.shortDescription ?? j.description ?? D("devportal.noDescription", "No description")
145
144
  }),
146
- /* @__PURE__ */ x("div", {
145
+ /* @__PURE__ */ b("div", {
147
146
  className: "mt-3 flex flex-wrap items-center gap-4 text-sm text-text-secondary",
148
147
  children: [
149
- M.averageRating != null && /* @__PURE__ */ x("div", {
148
+ j.averageRating != null && /* @__PURE__ */ b("div", {
150
149
  className: "flex items-center gap-1",
151
150
  children: [
152
- /* @__PURE__ */ b(_, {
151
+ /* @__PURE__ */ y(g, {
153
152
  size: 14,
154
153
  className: "text-status-warning-text fill-status-warning-text"
155
154
  }),
156
- /* @__PURE__ */ b("span", {
155
+ /* @__PURE__ */ y("span", {
157
156
  className: "font-medium text-text-primary",
158
- children: M.averageRating.toFixed(1)
157
+ children: j.averageRating.toFixed(1)
159
158
  }),
160
- /* @__PURE__ */ x("span", { children: [
159
+ /* @__PURE__ */ b("span", { children: [
161
160
  "(",
162
- M.reviewCount ?? 0,
161
+ j.reviewCount ?? 0,
163
162
  " ",
164
- O("devportal.reviews", "reviews"),
163
+ D("devportal.reviews", "reviews"),
165
164
  ")"
166
165
  ] })
167
166
  ]
168
167
  }),
169
- /* @__PURE__ */ x("div", {
168
+ /* @__PURE__ */ b("div", {
170
169
  className: "flex items-center gap-1",
171
- children: [/* @__PURE__ */ b(u, { size: 14 }), /* @__PURE__ */ x("span", { children: [
172
- (M.installCount ?? 0).toLocaleString(),
170
+ children: [/* @__PURE__ */ y(l, { size: 14 }), /* @__PURE__ */ b("span", { children: [
171
+ (j.installCount ?? 0).toLocaleString(),
173
172
  " ",
174
- O("devportal.installs", "installs")
173
+ D("devportal.installs", "installs")
175
174
  ] })]
176
175
  }),
177
- M.category && /* @__PURE__ */ b("span", {
176
+ j.category && /* @__PURE__ */ y("span", {
178
177
  className: "rounded-full border px-2 py-0.5 text-xs",
179
- children: M.category
178
+ children: j.category
180
179
  }),
181
- /* @__PURE__ */ b("span", {
180
+ /* @__PURE__ */ y("span", {
182
181
  className: "rounded-full border px-2 py-0.5 text-xs",
183
- children: C[M.appType] ?? M.appType
182
+ children: S[j.appType] ?? j.appType
184
183
  })
185
184
  ]
186
185
  })
187
186
  ]
188
187
  }),
189
- /* @__PURE__ */ x("div", {
188
+ /* @__PURE__ */ b("div", {
190
189
  className: "flex-shrink-0 text-right space-y-2",
191
190
  children: [
192
- /* @__PURE__ */ b("div", {
191
+ /* @__PURE__ */ y("div", {
193
192
  className: "text-lg font-semibold",
194
- children: S[M.pricingType ?? "FREE"] ?? "Free"
193
+ children: x[j.pricingType ?? "FREE"] ?? "Free"
195
194
  }),
196
- /* @__PURE__ */ b("button", {
195
+ /* @__PURE__ */ y("button", {
197
196
  disabled: !0,
198
197
  className: "w-full rounded-lg bg-action-primary-bg px-6 py-2 text-sm font-semibold text-action-primary-text opacity-60 cursor-not-allowed",
199
- title: O("devportal.previewOnly", "Preview only"),
200
- children: O("devportal.install", "Install")
198
+ title: D("devportal.previewOnly", "Preview only"),
199
+ children: D("devportal.install", "Install")
201
200
  }),
202
- /* @__PURE__ */ b("p", {
201
+ /* @__PURE__ */ y("p", {
203
202
  className: "text-xs text-text-secondary",
204
- children: O("devportal.previewOnly", "Preview only")
203
+ children: D("devportal.previewOnly", "Preview only")
205
204
  })
206
205
  ]
207
206
  })
208
207
  ]
209
208
  })
210
209
  }),
211
- N.length > 0 && /* @__PURE__ */ x("div", {
210
+ M.length > 0 && /* @__PURE__ */ b("div", {
212
211
  className: "border-t px-6 py-5",
213
- children: [/* @__PURE__ */ b("h2", {
212
+ children: [/* @__PURE__ */ y("h2", {
214
213
  className: "text-base font-semibold mb-3",
215
- children: O("devportal.screenshots", "Screenshots")
216
- }), /* @__PURE__ */ b("div", {
214
+ children: D("devportal.screenshots", "Screenshots")
215
+ }), /* @__PURE__ */ y("div", {
217
216
  className: "flex gap-3 overflow-x-auto pb-2",
218
- children: N.map((e, t) => /* @__PURE__ */ b("img", {
217
+ children: M.map((e, t) => /* @__PURE__ */ y("img", {
219
218
  src: e,
220
- alt: `${O("devportal.screenshotAlt", "Screenshot")} ${t + 1}`,
219
+ alt: `${D("devportal.screenshotAlt", "Screenshot")} ${t + 1}`,
221
220
  className: "h-44 w-auto rounded-lg border object-cover flex-shrink-0"
222
221
  }, t))
223
222
  })]
224
223
  }),
225
- /* @__PURE__ */ x("div", {
224
+ /* @__PURE__ */ b("div", {
226
225
  className: "border-t px-6 py-5",
227
- children: [/* @__PURE__ */ b("h2", {
226
+ children: [/* @__PURE__ */ y("h2", {
228
227
  className: "text-base font-semibold mb-2",
229
- children: O("devportal.about", "About")
230
- }), /* @__PURE__ */ b("p", {
228
+ children: D("devportal.about", "About")
229
+ }), /* @__PURE__ */ y("p", {
231
230
  className: "text-sm text-text-secondary whitespace-pre-wrap",
232
- children: M.description ?? M.shortDescription ?? O("devportal.noDetailedDescription", "No detailed description provided.")
231
+ children: j.description ?? j.shortDescription ?? D("devportal.noDetailedDescription", "No detailed description provided.")
233
232
  })]
234
233
  }),
235
- Array.isArray(M.tags) && M.tags.length > 0 && /* @__PURE__ */ b("div", {
234
+ Array.isArray(j.tags) && j.tags.length > 0 && /* @__PURE__ */ y("div", {
236
235
  className: "border-t px-6 py-4",
237
- children: /* @__PURE__ */ b("div", {
236
+ children: /* @__PURE__ */ y("div", {
238
237
  className: "flex flex-wrap gap-2",
239
- children: M.tags.map((e) => /* @__PURE__ */ x("span", {
238
+ children: j.tags.map((e) => /* @__PURE__ */ b("span", {
240
239
  className: "inline-flex items-center gap-1 rounded-full border px-3 py-1 text-xs text-text-secondary",
241
- children: [/* @__PURE__ */ b(v, { size: 10 }), e]
240
+ children: [/* @__PURE__ */ y(_, { size: 10 }), e]
242
241
  }, e))
243
242
  })
244
243
  }),
245
- /* @__PURE__ */ x("div", {
244
+ /* @__PURE__ */ b("div", {
246
245
  className: "border-t px-6 py-5 grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm",
247
246
  children: [
248
- M.websiteUrl && /* @__PURE__ */ x("a", {
249
- href: M.websiteUrl,
247
+ j.websiteUrl && /* @__PURE__ */ b("a", {
248
+ href: j.websiteUrl,
250
249
  target: "_blank",
251
250
  rel: "noopener noreferrer",
252
251
  className: "flex items-center gap-2 text-primary hover:underline",
253
252
  children: [
254
- /* @__PURE__ */ b(m, { size: 14 }),
255
- O("devportal.website", "Website"),
256
- /* @__PURE__ */ b(d, { size: 12 })
253
+ /* @__PURE__ */ y(p, { size: 14 }),
254
+ D("devportal.website", "Website"),
255
+ /* @__PURE__ */ y(u, { size: 12 })
257
256
  ]
258
257
  }),
259
- M.documentationUrl && /* @__PURE__ */ x("a", {
260
- href: M.documentationUrl,
258
+ j.documentationUrl && /* @__PURE__ */ b("a", {
259
+ href: j.documentationUrl,
261
260
  target: "_blank",
262
261
  rel: "noopener noreferrer",
263
262
  className: "flex items-center gap-2 text-primary hover:underline",
264
263
  children: [
265
- /* @__PURE__ */ b(p, { size: 14 }),
266
- O("devportal.documentation", "Documentation"),
267
- /* @__PURE__ */ b(d, { size: 12 })
264
+ /* @__PURE__ */ y(f, { size: 14 }),
265
+ D("devportal.documentation", "Documentation"),
266
+ /* @__PURE__ */ y(u, { size: 12 })
268
267
  ]
269
268
  }),
270
- M.privacyPolicyUrl && /* @__PURE__ */ x("a", {
271
- href: M.privacyPolicyUrl,
269
+ j.privacyPolicyUrl && /* @__PURE__ */ b("a", {
270
+ href: j.privacyPolicyUrl,
272
271
  target: "_blank",
273
272
  rel: "noopener noreferrer",
274
273
  className: "flex items-center gap-2 text-primary hover:underline",
275
274
  children: [
276
- /* @__PURE__ */ b(g, { size: 14 }),
277
- O("devportal.privacyPolicy", "Privacy Policy"),
278
- /* @__PURE__ */ b(d, { size: 12 })
275
+ /* @__PURE__ */ y(h, { size: 14 }),
276
+ D("devportal.privacyPolicy", "Privacy Policy"),
277
+ /* @__PURE__ */ y(u, { size: 12 })
279
278
  ]
280
279
  }),
281
- M.termsOfServiceUrl && /* @__PURE__ */ x("a", {
282
- href: M.termsOfServiceUrl,
280
+ j.termsOfServiceUrl && /* @__PURE__ */ b("a", {
281
+ href: j.termsOfServiceUrl,
283
282
  target: "_blank",
284
283
  rel: "noopener noreferrer",
285
284
  className: "flex items-center gap-2 text-primary hover:underline",
286
285
  children: [
287
- /* @__PURE__ */ b(p, { size: 14 }),
288
- O("devportal.termsOfService", "Terms of Service"),
289
- /* @__PURE__ */ b(d, { size: 12 })
286
+ /* @__PURE__ */ y(f, { size: 14 }),
287
+ D("devportal.termsOfService", "Terms of Service"),
288
+ /* @__PURE__ */ y(u, { size: 12 })
290
289
  ]
291
290
  })
292
291
  ]
293
292
  })
294
293
  ]
295
294
  }),
296
- /* @__PURE__ */ x(r, {
297
- title: O("devportal.listingCompleteness", "Listing Completeness"),
298
- children: [/* @__PURE__ */ b("div", {
295
+ /* @__PURE__ */ b(r, {
296
+ title: D("devportal.listingCompleteness", "Listing Completeness"),
297
+ children: [/* @__PURE__ */ y("div", {
299
298
  className: "space-y-2",
300
299
  children: [
301
300
  {
302
- label: O("devportal.completenessAppIcon", "App icon"),
303
- ok: !!M.iconUrl
301
+ label: D("devportal.completenessAppIcon", "App icon"),
302
+ ok: !!j.iconUrl
304
303
  },
305
304
  {
306
- label: O("devportal.completenessBannerImage", "Banner image"),
307
- ok: !!M.bannerUrl
305
+ label: D("devportal.completenessBannerImage", "Banner image"),
306
+ ok: !!j.bannerUrl
308
307
  },
309
308
  {
310
- label: O("devportal.completenessShortDescription", "Short description"),
311
- ok: !!M.shortDescription
309
+ label: D("devportal.completenessShortDescription", "Short description"),
310
+ ok: !!j.shortDescription
312
311
  },
313
312
  {
314
- label: O("devportal.completenessFullDescription", "Full description"),
315
- ok: !!M.description
313
+ label: D("devportal.completenessFullDescription", "Full description"),
314
+ ok: !!j.description
316
315
  },
317
316
  {
318
- label: O("devportal.completenessScreenshots", "Screenshots (3+)"),
319
- ok: N.length >= 3
317
+ label: D("devportal.completenessScreenshots", "Screenshots (3+)"),
318
+ ok: M.length >= 3
320
319
  },
321
320
  {
322
- label: O("devportal.completenessCategory", "Category"),
323
- ok: !!M.category
321
+ label: D("devportal.completenessCategory", "Category"),
322
+ ok: !!j.category
324
323
  },
325
324
  {
326
- label: O("devportal.completenessTags", "Tags"),
327
- ok: Array.isArray(M.tags) && M.tags.length > 0
325
+ label: D("devportal.completenessTags", "Tags"),
326
+ ok: Array.isArray(j.tags) && j.tags.length > 0
328
327
  },
329
328
  {
330
- label: O("devportal.completenessPrivacyPolicy", "Privacy policy URL"),
331
- ok: !!M.privacyPolicyUrl
329
+ label: D("devportal.completenessPrivacyPolicy", "Privacy policy URL"),
330
+ ok: !!j.privacyPolicyUrl
332
331
  },
333
332
  {
334
- label: O("devportal.completenessTermsOfService", "Terms of service URL"),
335
- ok: !!M.termsOfServiceUrl
333
+ label: D("devportal.completenessTermsOfService", "Terms of service URL"),
334
+ ok: !!j.termsOfServiceUrl
336
335
  }
337
- ].map(({ label: e, ok: t }) => /* @__PURE__ */ x("div", {
336
+ ].map(({ label: e, ok: t }) => /* @__PURE__ */ b("div", {
338
337
  className: "flex items-center gap-3 text-sm",
339
- children: [t ? /* @__PURE__ */ b(l, {
338
+ children: [t ? /* @__PURE__ */ y(c, {
340
339
  size: 16,
341
340
  className: "text-status-success-text flex-shrink-0"
342
- }) : /* @__PURE__ */ b("div", { className: "h-4 w-4 rounded-full border-2 border-muted-foreground flex-shrink-0" }), /* @__PURE__ */ b("span", {
341
+ }) : /* @__PURE__ */ y("div", { className: "h-4 w-4 rounded-full border-2 border-muted-foreground flex-shrink-0" }), /* @__PURE__ */ y("span", {
343
342
  className: t ? "text-text-primary" : "text-text-secondary",
344
343
  children: e
345
344
  })]
346
345
  }, e))
347
- }), !P && /* @__PURE__ */ b("button", {
348
- onClick: () => T?.(`${E}/apps/${w}/edit`),
346
+ }), !N && /* @__PURE__ */ y("button", {
347
+ onClick: () => w?.(`${T}/apps/${C}/edit`),
349
348
  className: "mt-4 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
350
- children: O("devportal.editToImproveListing", "Edit to improve listing →")
349
+ children: D("devportal.editToImproveListing", "Edit to improve listing →")
351
350
  })]
352
351
  })
353
352
  ]
@@ -355,6 +354,6 @@ var S = {
355
354
  });
356
355
  };
357
356
  //#endregion
358
- export { w as ListingPreviewPage };
357
+ export { C as ListingPreviewPage };
359
358
 
360
359
  //# sourceMappingURL=ListingPreviewPage.js.map