@burdenoff/microfe-devportal 2026.720.5 → 2026.720.7

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