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