@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.
- package/dist/devportal/components/MarkdownEditor.d.ts +24 -0
- package/dist/devportal/components/MarkdownEditor.d.ts.map +1 -0
- package/dist/devportal/components/MarkdownEditor.js +136 -0
- package/dist/devportal/components/MarkdownEditor.js.map +1 -0
- package/dist/devportal/components/index.d.ts +1 -0
- package/dist/devportal/components/index.d.ts.map +1 -1
- package/dist/devportal/components/index.js +1 -0
- package/dist/devportal/hooks/usePackageUpload.d.ts.map +1 -1
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +748 -746
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +390 -374
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +103 -104
- package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +103 -103
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +129 -130
- package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +214 -214
- package/dist/devportal/pages/DelegationsPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +285 -284
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.d.ts.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +162 -158
- package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.d.ts.map +1 -1
- package/dist/devportal/pages/PublishPage.js +106 -106
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +136 -137
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.js +190 -191
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +138 -139
- package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
- package/dist/devportal/types/index.d.ts.map +1 -1
- package/dist/devportal/types/index.js.map +1 -1
- 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 {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
37
|
-
let { appId:
|
|
38
|
-
let n =
|
|
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:
|
|
41
|
-
variables: { id:
|
|
42
|
-
skip: !
|
|
41
|
+
}, { data: k, loading: A, error: j } = t({
|
|
42
|
+
variables: { id: w },
|
|
43
|
+
skip: !w,
|
|
43
44
|
fetchPolicy: "cache-and-network"
|
|
44
|
-
}),
|
|
45
|
+
}), M = k?.application;
|
|
45
46
|
if (o(() => {
|
|
46
|
-
let e =
|
|
47
|
-
if (!
|
|
47
|
+
let e = M?.name;
|
|
48
|
+
if (!w || !e) return;
|
|
48
49
|
let t = window.__breadcrumbRegistry;
|
|
49
|
-
return t?.register(
|
|
50
|
-
}, [
|
|
51
|
-
title:
|
|
52
|
-
description:
|
|
53
|
-
backLink: `/apps/${
|
|
54
|
-
backLabel:
|
|
55
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
58
|
+
children: /* @__PURE__ */ b(h, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
58
59
|
})
|
|
59
60
|
});
|
|
60
|
-
if (
|
|
61
|
-
title:
|
|
62
|
-
description:
|
|
63
|
-
backLink: `/apps/${
|
|
64
|
-
backLabel:
|
|
65
|
-
children: /* @__PURE__ */
|
|
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:
|
|
68
|
-
children:
|
|
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
|
|
72
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
75
|
-
title:
|
|
76
|
-
description:
|
|
77
|
-
purpose:
|
|
78
|
-
backLink: `/apps/${
|
|
79
|
-
backLabel:
|
|
80
|
-
actions:
|
|
81
|
-
onClick: () =>
|
|
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__ */
|
|
84
|
+
children: [/* @__PURE__ */ b(f, { size: 16 }), O("devportal.submitForReview", "Submit for Review")]
|
|
84
85
|
}),
|
|
85
86
|
children: [
|
|
86
|
-
/* @__PURE__ */
|
|
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__ */
|
|
89
|
+
children: [/* @__PURE__ */ b(f, {
|
|
89
90
|
size: 16,
|
|
90
91
|
className: "flex-shrink-0"
|
|
91
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
94
|
+
/* @__PURE__ */ x("div", {
|
|
94
95
|
className: "rounded-xl border bg-bg-surface overflow-hidden",
|
|
95
96
|
children: [
|
|
96
|
-
|
|
97
|
+
M.bannerUrl ? /* @__PURE__ */ b("div", {
|
|
97
98
|
className: "h-48 w-full overflow-hidden",
|
|
98
|
-
children: /* @__PURE__ */
|
|
99
|
-
src:
|
|
100
|
-
alt:
|
|
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__ */
|
|
104
|
-
/* @__PURE__ */
|
|
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__ */
|
|
107
|
+
children: /* @__PURE__ */ x("div", {
|
|
107
108
|
className: "flex items-start gap-5",
|
|
108
109
|
children: [
|
|
109
|
-
|
|
110
|
-
src:
|
|
111
|
-
alt:
|
|
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__ */
|
|
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__ */
|
|
116
|
+
children: /* @__PURE__ */ b("span", {
|
|
116
117
|
className: "text-3xl font-bold text-text-secondary",
|
|
117
|
-
"aria-label":
|
|
118
|
-
children:
|
|
118
|
+
"aria-label": O("devportal.appIconFallbackAriaLabel", "App icon"),
|
|
119
|
+
children: M.name.charAt(0).toUpperCase()
|
|
119
120
|
})
|
|
120
121
|
}),
|
|
121
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ x("div", {
|
|
122
123
|
className: "flex-1 min-w-0",
|
|
123
124
|
children: [
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
+
/* @__PURE__ */ x("div", {
|
|
125
126
|
className: "flex flex-wrap items-center gap-2",
|
|
126
127
|
children: [
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ b("h1", {
|
|
128
129
|
className: "text-2xl font-bold",
|
|
129
|
-
children:
|
|
130
|
+
children: M.name
|
|
130
131
|
}),
|
|
131
|
-
|
|
132
|
+
M.isVerified && /* @__PURE__ */ b(l, {
|
|
132
133
|
size: 20,
|
|
133
134
|
className: "text-primary"
|
|
134
135
|
}),
|
|
135
|
-
|
|
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:
|
|
138
|
+
children: O("devportal.featured", "Featured")
|
|
138
139
|
})
|
|
139
140
|
]
|
|
140
141
|
}),
|
|
141
|
-
/* @__PURE__ */
|
|
142
|
+
/* @__PURE__ */ b("p", {
|
|
142
143
|
className: "mt-1 text-text-secondary",
|
|
143
|
-
children:
|
|
144
|
+
children: M.shortDescription ?? M.description ?? O("devportal.noDescription", "No description")
|
|
144
145
|
}),
|
|
145
|
-
/* @__PURE__ */
|
|
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
|
-
|
|
149
|
+
M.averageRating != null && /* @__PURE__ */ x("div", {
|
|
149
150
|
className: "flex items-center gap-1",
|
|
150
151
|
children: [
|
|
151
|
-
/* @__PURE__ */
|
|
152
|
+
/* @__PURE__ */ b(_, {
|
|
152
153
|
size: 14,
|
|
153
154
|
className: "text-status-warning-text fill-status-warning-text"
|
|
154
155
|
}),
|
|
155
|
-
/* @__PURE__ */
|
|
156
|
+
/* @__PURE__ */ b("span", {
|
|
156
157
|
className: "font-medium text-text-primary",
|
|
157
|
-
children:
|
|
158
|
+
children: M.averageRating.toFixed(1)
|
|
158
159
|
}),
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
+
/* @__PURE__ */ x("span", { children: [
|
|
160
161
|
"(",
|
|
161
|
-
|
|
162
|
+
M.reviewCount ?? 0,
|
|
162
163
|
" ",
|
|
163
|
-
|
|
164
|
+
O("devportal.reviews", "reviews"),
|
|
164
165
|
")"
|
|
165
166
|
] })
|
|
166
167
|
]
|
|
167
168
|
}),
|
|
168
|
-
/* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ x("div", {
|
|
169
170
|
className: "flex items-center gap-1",
|
|
170
|
-
children: [/* @__PURE__ */
|
|
171
|
-
(
|
|
171
|
+
children: [/* @__PURE__ */ b(u, { size: 14 }), /* @__PURE__ */ x("span", { children: [
|
|
172
|
+
(M.installCount ?? 0).toLocaleString(),
|
|
172
173
|
" ",
|
|
173
|
-
|
|
174
|
+
O("devportal.installs", "installs")
|
|
174
175
|
] })]
|
|
175
176
|
}),
|
|
176
|
-
|
|
177
|
+
M.category && /* @__PURE__ */ b("span", {
|
|
177
178
|
className: "rounded-full border px-2 py-0.5 text-xs",
|
|
178
|
-
children:
|
|
179
|
+
children: M.category
|
|
179
180
|
}),
|
|
180
|
-
/* @__PURE__ */
|
|
181
|
+
/* @__PURE__ */ b("span", {
|
|
181
182
|
className: "rounded-full border px-2 py-0.5 text-xs",
|
|
182
|
-
children:
|
|
183
|
+
children: C[M.appType] ?? M.appType
|
|
183
184
|
})
|
|
184
185
|
]
|
|
185
186
|
})
|
|
186
187
|
]
|
|
187
188
|
}),
|
|
188
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ x("div", {
|
|
189
190
|
className: "flex-shrink-0 text-right space-y-2",
|
|
190
191
|
children: [
|
|
191
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ b("div", {
|
|
192
193
|
className: "text-lg font-semibold",
|
|
193
|
-
children:
|
|
194
|
+
children: S[M.pricingType ?? "FREE"] ?? "Free"
|
|
194
195
|
}),
|
|
195
|
-
/* @__PURE__ */
|
|
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:
|
|
199
|
-
children:
|
|
199
|
+
title: O("devportal.previewOnly", "Preview only"),
|
|
200
|
+
children: O("devportal.install", "Install")
|
|
200
201
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ b("p", {
|
|
202
203
|
className: "text-xs text-text-secondary",
|
|
203
|
-
children:
|
|
204
|
+
children: O("devportal.previewOnly", "Preview only")
|
|
204
205
|
})
|
|
205
206
|
]
|
|
206
207
|
})
|
|
207
208
|
]
|
|
208
209
|
})
|
|
209
210
|
}),
|
|
210
|
-
|
|
211
|
+
N.length > 0 && /* @__PURE__ */ x("div", {
|
|
211
212
|
className: "border-t px-6 py-5",
|
|
212
|
-
children: [/* @__PURE__ */
|
|
213
|
+
children: [/* @__PURE__ */ b("h2", {
|
|
213
214
|
className: "text-base font-semibold mb-3",
|
|
214
|
-
children:
|
|
215
|
-
}), /* @__PURE__ */
|
|
215
|
+
children: O("devportal.screenshots", "Screenshots")
|
|
216
|
+
}), /* @__PURE__ */ b("div", {
|
|
216
217
|
className: "flex gap-3 overflow-x-auto pb-2",
|
|
217
|
-
children:
|
|
218
|
+
children: N.map((e, t) => /* @__PURE__ */ b("img", {
|
|
218
219
|
src: e,
|
|
219
|
-
alt: `${
|
|
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__ */
|
|
225
|
+
/* @__PURE__ */ x("div", {
|
|
225
226
|
className: "border-t px-6 py-5",
|
|
226
|
-
children: [/* @__PURE__ */
|
|
227
|
+
children: [/* @__PURE__ */ b("h2", {
|
|
227
228
|
className: "text-base font-semibold mb-2",
|
|
228
|
-
children:
|
|
229
|
-
}), /* @__PURE__ */
|
|
230
|
-
className: "text-sm text-text-secondary
|
|
231
|
-
children:
|
|
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(
|
|
238
|
+
Array.isArray(M.tags) && M.tags.length > 0 && /* @__PURE__ */ b("div", {
|
|
235
239
|
className: "border-t px-6 py-4",
|
|
236
|
-
children: /* @__PURE__ */
|
|
240
|
+
children: /* @__PURE__ */ b("div", {
|
|
237
241
|
className: "flex flex-wrap gap-2",
|
|
238
|
-
children:
|
|
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__ */
|
|
244
|
+
children: [/* @__PURE__ */ b(v, { size: 10 }), e]
|
|
241
245
|
}, e))
|
|
242
246
|
})
|
|
243
247
|
}),
|
|
244
|
-
/* @__PURE__ */
|
|
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
|
-
|
|
248
|
-
href:
|
|
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__ */
|
|
254
|
-
|
|
255
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ b(m, { size: 14 }),
|
|
258
|
+
O("devportal.website", "Website"),
|
|
259
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
256
260
|
]
|
|
257
261
|
}),
|
|
258
|
-
|
|
259
|
-
href:
|
|
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__ */
|
|
265
|
-
|
|
266
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ b(p, { size: 14 }),
|
|
269
|
+
O("devportal.documentation", "Documentation"),
|
|
270
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
267
271
|
]
|
|
268
272
|
}),
|
|
269
|
-
|
|
270
|
-
href:
|
|
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__ */
|
|
276
|
-
|
|
277
|
-
/* @__PURE__ */
|
|
279
|
+
/* @__PURE__ */ b(g, { size: 14 }),
|
|
280
|
+
O("devportal.privacyPolicy", "Privacy Policy"),
|
|
281
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
278
282
|
]
|
|
279
283
|
}),
|
|
280
|
-
|
|
281
|
-
href:
|
|
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__ */
|
|
287
|
-
|
|
288
|
-
/* @__PURE__ */
|
|
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__ */
|
|
296
|
-
title:
|
|
297
|
-
children: [/* @__PURE__ */
|
|
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:
|
|
302
|
-
ok: !!
|
|
305
|
+
label: O("devportal.completenessAppIcon", "App icon"),
|
|
306
|
+
ok: !!M.iconUrl
|
|
303
307
|
},
|
|
304
308
|
{
|
|
305
|
-
label:
|
|
306
|
-
ok: !!
|
|
309
|
+
label: O("devportal.completenessBannerImage", "Banner image"),
|
|
310
|
+
ok: !!M.bannerUrl
|
|
307
311
|
},
|
|
308
312
|
{
|
|
309
|
-
label:
|
|
310
|
-
ok: !!
|
|
313
|
+
label: O("devportal.completenessShortDescription", "Short description"),
|
|
314
|
+
ok: !!M.shortDescription
|
|
311
315
|
},
|
|
312
316
|
{
|
|
313
|
-
label:
|
|
314
|
-
ok: !!
|
|
317
|
+
label: O("devportal.completenessFullDescription", "Full description"),
|
|
318
|
+
ok: !!M.description
|
|
315
319
|
},
|
|
316
320
|
{
|
|
317
|
-
label:
|
|
318
|
-
ok:
|
|
321
|
+
label: O("devportal.completenessScreenshots", "Screenshots (3+)"),
|
|
322
|
+
ok: N.length >= 3
|
|
319
323
|
},
|
|
320
324
|
{
|
|
321
|
-
label:
|
|
322
|
-
ok: !!
|
|
325
|
+
label: O("devportal.completenessCategory", "Category"),
|
|
326
|
+
ok: !!M.category
|
|
323
327
|
},
|
|
324
328
|
{
|
|
325
|
-
label:
|
|
326
|
-
ok: Array.isArray(
|
|
329
|
+
label: O("devportal.completenessTags", "Tags"),
|
|
330
|
+
ok: Array.isArray(M.tags) && M.tags.length > 0
|
|
327
331
|
},
|
|
328
332
|
{
|
|
329
|
-
label:
|
|
330
|
-
ok: !!
|
|
333
|
+
label: O("devportal.completenessPrivacyPolicy", "Privacy policy URL"),
|
|
334
|
+
ok: !!M.privacyPolicyUrl
|
|
331
335
|
},
|
|
332
336
|
{
|
|
333
|
-
label:
|
|
334
|
-
ok: !!
|
|
337
|
+
label: O("devportal.completenessTermsOfService", "Terms of service URL"),
|
|
338
|
+
ok: !!M.termsOfServiceUrl
|
|
335
339
|
}
|
|
336
|
-
].map(({ label: e, ok: t }) => /* @__PURE__ */
|
|
340
|
+
].map(({ label: e, ok: t }) => /* @__PURE__ */ x("div", {
|
|
337
341
|
className: "flex items-center gap-3 text-sm",
|
|
338
|
-
children: [t ? /* @__PURE__ */
|
|
342
|
+
children: [t ? /* @__PURE__ */ b(l, {
|
|
339
343
|
size: 16,
|
|
340
344
|
className: "text-status-success-text flex-shrink-0"
|
|
341
|
-
}) : /* @__PURE__ */
|
|
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
|
-
}), !
|
|
347
|
-
onClick: () =>
|
|
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:
|
|
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 {
|
|
361
|
+
export { w as ListingPreviewPage };
|
|
358
362
|
|
|
359
363
|
//# sourceMappingURL=ListingPreviewPage.js.map
|