@burdenoff/microfe-store 2026.720.4 → 2026.728.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/generated/global-operations.d.ts +18 -0
- package/dist/generated/global-operations.js +16 -0
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2 -0
- package/dist/generated/global-types.js.map +1 -1
- package/dist/pages/MarketplaceHomePage.js.map +1 -1
- package/dist/pages/ProductDetailPage.js +479 -447
- package/dist/pages/ProductDetailPage.js.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { useStore as e } from "../providers/StoreProvider.js";
|
|
2
2
|
import { useCart as t } from "../hooks/useCart.js";
|
|
3
3
|
import { formatNumber as n, formatPrice as r } from "../utils/index.js";
|
|
4
|
-
import { useCreateReview as
|
|
5
|
-
import { Markdown as
|
|
6
|
-
import { InstallAppModal as
|
|
7
|
-
import { useInstallations as
|
|
8
|
-
import { nativeConfirm as
|
|
9
|
-
import { useCallback as
|
|
10
|
-
import { AlertCircle as
|
|
11
|
-
import { Fragment as
|
|
12
|
-
import { useLocation as
|
|
13
|
-
import { EmphasisPanel as
|
|
14
|
-
import { useEventBus as
|
|
4
|
+
import { useCreateReview as i, useDeleteReview as ee, useMarkReviewHelpful as te, useStoreProductDetails as ne, useUpdateReview as re } from "../hooks/useStoreGraphQL.js";
|
|
5
|
+
import { Markdown as ie } from "../node_modules/react-markdown/lib/index.js";
|
|
6
|
+
import { InstallAppModal as ae } from "../components/InstallAppModal.js";
|
|
7
|
+
import { useInstallations as oe } from "../hooks/useInstallations.js";
|
|
8
|
+
import { nativeConfirm as se, nativeImpact as ce, nativeNotify as le } from "../utils/nativeBridge.js";
|
|
9
|
+
import { useCallback as a, useEffect as ue, useMemo as de, useRef as fe, useState as o } from "react";
|
|
10
|
+
import { AlertCircle as s, ArrowLeft as pe, Check as me, Loader2 as he, Package as c, ShieldCheck as l, ShoppingCart as ge, Star as u, ThumbsUp as d } from "lucide-react";
|
|
11
|
+
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
12
|
+
import { useLocation as _e, useNavigate as ve, useParams as ye } from "react-router-dom";
|
|
13
|
+
import { EmphasisPanel as be, GlassCard as h, IllustratedEmptyState as xe, NextSteps as Se, PagePurpose as Ce } from "@burdenoff/fe-libs/ui";
|
|
14
|
+
import { useEventBus as we } from "@burdenoff/fe-libs/shared/events";
|
|
15
15
|
//#region src/pages/ProductDetailPage.tsx
|
|
16
|
-
var
|
|
16
|
+
var Te = (e, t) => ({
|
|
17
17
|
id: e.id,
|
|
18
18
|
publisherId: t?.id || "",
|
|
19
19
|
publisher: {
|
|
@@ -45,7 +45,8 @@ var Ee = (e, t) => ({
|
|
|
45
45
|
TEMPLATE: "TEMPLATE",
|
|
46
46
|
INTEGRATION: "INTEGRATION",
|
|
47
47
|
EXTENSION: "EXTENSION",
|
|
48
|
-
THEME: "THEME"
|
|
48
|
+
THEME: "THEME",
|
|
49
|
+
DASHBOARD: "TEMPLATE"
|
|
49
50
|
}[t] || "APP")(e.nature, e.type),
|
|
50
51
|
type: ((e) => ({
|
|
51
52
|
APP: "STANDALONE_APP",
|
|
@@ -61,7 +62,9 @@ var Ee = (e, t) => ({
|
|
|
61
62
|
WIDGET: "WORKSPACE_MODULE",
|
|
62
63
|
VIBEMODULE: "WORKSPACE_MODULE",
|
|
63
64
|
CONSOLE: "STANDALONE_APP",
|
|
64
|
-
NODE: "WORKSPACE_MODULE"
|
|
65
|
+
NODE: "WORKSPACE_MODULE",
|
|
66
|
+
PARSER: "WORKSPACE_MODULE",
|
|
67
|
+
DASHBOARD: "WORKFLOW_TEMPLATE"
|
|
65
68
|
})[e] || "STANDALONE_APP")(e.type),
|
|
66
69
|
tags: e.tags || [],
|
|
67
70
|
pricingModel: ((e) => ({
|
|
@@ -85,41 +88,41 @@ var Ee = (e, t) => ({
|
|
|
85
88
|
createdAt: e.createdAt,
|
|
86
89
|
updatedAt: e.updatedAt,
|
|
87
90
|
publishedAt: e.publishedAt
|
|
88
|
-
}),
|
|
91
|
+
}), Ee = ({ stars: e, percentage: t, count: r }) => /* @__PURE__ */ m("div", {
|
|
89
92
|
className: "flex items-center gap-2",
|
|
90
93
|
children: [
|
|
91
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ p("span", {
|
|
92
95
|
className: "w-3 text-xs text-text-muted",
|
|
93
96
|
children: e
|
|
94
97
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
98
|
+
/* @__PURE__ */ p("div", {
|
|
96
99
|
className: "h-2 flex-1 overflow-hidden rounded-full bg-bg-sunken",
|
|
97
|
-
children: /* @__PURE__ */
|
|
100
|
+
children: /* @__PURE__ */ p("div", {
|
|
98
101
|
className: "h-full rounded-full bg-status-warning-bg-subtle",
|
|
99
102
|
style: { width: `${t}%` }
|
|
100
103
|
})
|
|
101
104
|
}),
|
|
102
|
-
/* @__PURE__ */
|
|
105
|
+
/* @__PURE__ */ p("span", {
|
|
103
106
|
className: "w-12 text-right text-xs text-text-muted",
|
|
104
107
|
children: n(r)
|
|
105
108
|
})
|
|
106
109
|
]
|
|
107
|
-
}),
|
|
110
|
+
}), De = ({ review: e, onMarkHelpful: t, markingHelpful: n }) => /* @__PURE__ */ m("div", {
|
|
108
111
|
className: "rounded-lg border border-border-seam bg-bg-surface p-4 transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop)]",
|
|
109
112
|
children: [
|
|
110
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ p("div", {
|
|
111
114
|
className: "mb-3 flex items-start justify-between",
|
|
112
|
-
children: /* @__PURE__ */
|
|
115
|
+
children: /* @__PURE__ */ m("div", {
|
|
113
116
|
className: "flex items-center gap-3",
|
|
114
|
-
children: [/* @__PURE__ */
|
|
117
|
+
children: [/* @__PURE__ */ p("div", {
|
|
115
118
|
className: "flex size-10 items-center justify-center rounded-full bg-bg-sunken text-text-muted",
|
|
116
|
-
children: /* @__PURE__ */
|
|
117
|
-
}), /* @__PURE__ */
|
|
119
|
+
children: /* @__PURE__ */ p(u, { className: "size-4 fill-current" })
|
|
120
|
+
}), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
118
121
|
className: "font-medium text-text-primary",
|
|
119
122
|
children: "Verified Buyer"
|
|
120
|
-
}), /* @__PURE__ */
|
|
123
|
+
}), /* @__PURE__ */ m("div", {
|
|
121
124
|
className: "flex items-center gap-2",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
125
|
+
children: [/* @__PURE__ */ p("div", {
|
|
123
126
|
className: "flex gap-0.5",
|
|
124
127
|
children: [
|
|
125
128
|
1,
|
|
@@ -127,8 +130,8 @@ var Ee = (e, t) => ({
|
|
|
127
130
|
3,
|
|
128
131
|
4,
|
|
129
132
|
5
|
|
130
|
-
].map((t) => /* @__PURE__ */
|
|
131
|
-
}), /* @__PURE__ */
|
|
133
|
+
].map((t) => /* @__PURE__ */ p(u, { className: `size-3 ${t <= e.rating ? "fill-current text-status-warning-text" : "text-text-muted"}` }, t))
|
|
134
|
+
}), /* @__PURE__ */ p("span", {
|
|
132
135
|
className: "text-xs text-text-muted",
|
|
133
136
|
children: ((e) => {
|
|
134
137
|
try {
|
|
@@ -145,147 +148,147 @@ var Ee = (e, t) => ({
|
|
|
145
148
|
})] })]
|
|
146
149
|
})
|
|
147
150
|
}),
|
|
148
|
-
e.title && /* @__PURE__ */
|
|
151
|
+
e.title && /* @__PURE__ */ p("h4", {
|
|
149
152
|
className: "mb-2 font-medium text-text-primary",
|
|
150
153
|
children: e.title
|
|
151
154
|
}),
|
|
152
|
-
e.comment && /* @__PURE__ */
|
|
155
|
+
e.comment && /* @__PURE__ */ p("p", {
|
|
153
156
|
className: "mb-3 text-sm text-text-muted",
|
|
154
157
|
children: e.comment
|
|
155
158
|
}),
|
|
156
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ p("div", {
|
|
157
160
|
className: "flex items-center justify-between",
|
|
158
|
-
children: /* @__PURE__ */
|
|
161
|
+
children: /* @__PURE__ */ m("button", {
|
|
159
162
|
type: "button",
|
|
160
163
|
onClick: () => t(e.id),
|
|
161
164
|
disabled: n,
|
|
162
165
|
"aria-label": "Mark this review as helpful",
|
|
163
166
|
className: "flex items-center gap-1 text-xs text-text-muted transition-colors hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-60",
|
|
164
|
-
children: [/* @__PURE__ */
|
|
167
|
+
children: [/* @__PURE__ */ p(d, { className: "size-3.5" }), /* @__PURE__ */ p("span", { children: n ? "Updating…" : `Helpful (${e.helpful})` })]
|
|
165
168
|
})
|
|
166
169
|
})
|
|
167
170
|
]
|
|
168
|
-
}),
|
|
171
|
+
}), Oe = () => /* @__PURE__ */ m("div", {
|
|
169
172
|
className: "h-full overflow-y-auto",
|
|
170
|
-
children: [/* @__PURE__ */
|
|
173
|
+
children: [/* @__PURE__ */ p("div", {
|
|
171
174
|
className: "sticky top-0 z-10 border-b border-border-default bg-bg-surface px-6 py-4",
|
|
172
|
-
children: /* @__PURE__ */
|
|
175
|
+
children: /* @__PURE__ */ m("div", {
|
|
173
176
|
className: "flex items-center gap-4",
|
|
174
177
|
children: [
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
-
/* @__PURE__ */
|
|
177
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ p("div", { className: "size-10 animate-pulse rounded-lg bg-bg-sunken" }),
|
|
179
|
+
/* @__PURE__ */ p("div", { className: "h-6 w-48 flex-1 animate-pulse rounded bg-bg-sunken" }),
|
|
180
|
+
/* @__PURE__ */ m("div", {
|
|
178
181
|
className: "flex gap-2",
|
|
179
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ p("div", { className: "size-10 animate-pulse rounded-lg bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "size-10 animate-pulse rounded-lg bg-bg-sunken" })]
|
|
180
183
|
})
|
|
181
184
|
]
|
|
182
185
|
})
|
|
183
|
-
}), /* @__PURE__ */
|
|
186
|
+
}), /* @__PURE__ */ m("div", {
|
|
184
187
|
className: "mx-auto max-w-6xl p-6",
|
|
185
188
|
children: [
|
|
186
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ m("div", {
|
|
187
190
|
className: "mb-8 flex flex-col gap-6 md:flex-row",
|
|
188
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ m("div", {
|
|
189
192
|
className: "flex gap-4 md:w-1/2",
|
|
190
|
-
children: [/* @__PURE__ */
|
|
193
|
+
children: [/* @__PURE__ */ p("div", { className: "size-28 animate-pulse rounded-2xl bg-bg-sunken" }), /* @__PURE__ */ m("div", {
|
|
191
194
|
className: "flex flex-1 flex-col justify-center gap-2",
|
|
192
195
|
children: [
|
|
193
|
-
/* @__PURE__ */
|
|
194
|
-
/* @__PURE__ */
|
|
196
|
+
/* @__PURE__ */ p("div", { className: "h-8 w-3/4 animate-pulse rounded bg-bg-sunken" }),
|
|
197
|
+
/* @__PURE__ */ m("div", {
|
|
195
198
|
className: "flex items-center gap-2",
|
|
196
|
-
children: [/* @__PURE__ */
|
|
199
|
+
children: [/* @__PURE__ */ p("div", { className: "h-4 w-32 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "size-4 animate-pulse rounded-full bg-bg-sunken" })]
|
|
197
200
|
}),
|
|
198
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ m("div", {
|
|
199
202
|
className: "flex gap-3",
|
|
200
|
-
children: [/* @__PURE__ */
|
|
203
|
+
children: [/* @__PURE__ */ p("div", { className: "h-5 w-16 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-5 w-24 animate-pulse rounded bg-bg-sunken" })]
|
|
201
204
|
})
|
|
202
205
|
]
|
|
203
206
|
})]
|
|
204
|
-
}), /* @__PURE__ */
|
|
207
|
+
}), /* @__PURE__ */ m("div", {
|
|
205
208
|
className: "flex flex-col gap-4 md:w-1/2 md:items-end",
|
|
206
|
-
children: [/* @__PURE__ */
|
|
209
|
+
children: [/* @__PURE__ */ m("div", {
|
|
207
210
|
className: "flex items-center gap-4",
|
|
208
211
|
children: [
|
|
209
|
-
/* @__PURE__ */
|
|
212
|
+
/* @__PURE__ */ m("div", {
|
|
210
213
|
className: "text-center",
|
|
211
|
-
children: [/* @__PURE__ */
|
|
214
|
+
children: [/* @__PURE__ */ p("div", { className: "h-10 w-16 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "mt-1 h-3 w-20 animate-pulse rounded bg-bg-sunken" })]
|
|
212
215
|
}),
|
|
213
|
-
/* @__PURE__ */
|
|
214
|
-
/* @__PURE__ */
|
|
216
|
+
/* @__PURE__ */ p("div", { className: "h-12 w-px bg-border-default" }),
|
|
217
|
+
/* @__PURE__ */ m("div", {
|
|
215
218
|
className: "text-center",
|
|
216
|
-
children: [/* @__PURE__ */
|
|
219
|
+
children: [/* @__PURE__ */ p("div", { className: "h-8 w-16 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "mt-1 h-3 w-16 animate-pulse rounded bg-bg-sunken" })]
|
|
217
220
|
}),
|
|
218
|
-
/* @__PURE__ */
|
|
219
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ p("div", { className: "h-12 w-px bg-border-default" }),
|
|
222
|
+
/* @__PURE__ */ m("div", {
|
|
220
223
|
className: "text-center",
|
|
221
|
-
children: [/* @__PURE__ */
|
|
224
|
+
children: [/* @__PURE__ */ p("div", { className: "h-8 w-20 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "mt-1 h-3 w-12 animate-pulse rounded bg-bg-sunken" })]
|
|
222
225
|
})
|
|
223
226
|
]
|
|
224
|
-
}), /* @__PURE__ */
|
|
227
|
+
}), /* @__PURE__ */ m("div", {
|
|
225
228
|
className: "flex gap-3",
|
|
226
|
-
children: [/* @__PURE__ */
|
|
229
|
+
children: [/* @__PURE__ */ p("div", { className: "h-12 w-40 animate-pulse rounded-lg bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "size-12 animate-pulse rounded-lg bg-bg-sunken" })]
|
|
227
230
|
})]
|
|
228
231
|
})]
|
|
229
232
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
233
|
+
/* @__PURE__ */ m("section", {
|
|
231
234
|
className: "mb-8",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
235
|
+
children: [/* @__PURE__ */ p("div", { className: "aspect-video animate-pulse rounded-lg bg-bg-sunken" }), /* @__PURE__ */ p("div", {
|
|
233
236
|
className: "mt-4 flex gap-4",
|
|
234
237
|
children: [...[
|
|
235
238
|
,
|
|
236
239
|
,
|
|
237
240
|
,
|
|
238
241
|
,
|
|
239
|
-
]].map((e, t) => /* @__PURE__ */
|
|
242
|
+
]].map((e, t) => /* @__PURE__ */ p("div", { className: "h-20 w-36 animate-pulse rounded-lg bg-bg-sunken" }, t))
|
|
240
243
|
})]
|
|
241
244
|
}),
|
|
242
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ m("section", {
|
|
243
246
|
className: "mb-8",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
247
|
+
children: [/* @__PURE__ */ m("div", {
|
|
245
248
|
className: "mb-4 flex items-center gap-2",
|
|
246
|
-
children: [/* @__PURE__ */
|
|
247
|
-
}), /* @__PURE__ */
|
|
249
|
+
children: [/* @__PURE__ */ p("div", { className: "size-5 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-6 w-32 animate-pulse rounded bg-bg-sunken" })]
|
|
250
|
+
}), /* @__PURE__ */ m("div", {
|
|
248
251
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-4",
|
|
249
|
-
children: [/* @__PURE__ */
|
|
252
|
+
children: [/* @__PURE__ */ m("div", {
|
|
250
253
|
className: "space-y-2",
|
|
251
254
|
children: [
|
|
252
|
-
/* @__PURE__ */
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
-
/* @__PURE__ */
|
|
255
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ p("div", { className: "h-4 w-full rounded bg-bg-sunken" }),
|
|
256
|
+
/* @__PURE__ */ p("div", { className: "h-4 w-full rounded bg-bg-sunken" }),
|
|
257
|
+
/* @__PURE__ */ p("div", { className: "h-4 w-3/4 rounded bg-bg-sunken" }),
|
|
258
|
+
/* @__PURE__ */ p("div", { className: "h-4 w-5/6 rounded bg-bg-sunken" })
|
|
256
259
|
]
|
|
257
|
-
}), /* @__PURE__ */
|
|
260
|
+
}), /* @__PURE__ */ p("div", {
|
|
258
261
|
className: "mt-4 flex gap-2",
|
|
259
262
|
children: [...[
|
|
260
263
|
,
|
|
261
264
|
,
|
|
262
265
|
,
|
|
263
266
|
,
|
|
264
|
-
]].map((e, t) => /* @__PURE__ */
|
|
267
|
+
]].map((e, t) => /* @__PURE__ */ p("div", { className: "h-6 w-16 rounded-full bg-bg-sunken" }, t))
|
|
265
268
|
})]
|
|
266
269
|
})]
|
|
267
270
|
}),
|
|
268
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ m("section", {
|
|
269
272
|
className: "mb-8",
|
|
270
273
|
children: [
|
|
271
|
-
/* @__PURE__ */
|
|
274
|
+
/* @__PURE__ */ m("div", {
|
|
272
275
|
className: "mb-4 flex items-center justify-between",
|
|
273
|
-
children: [/* @__PURE__ */
|
|
276
|
+
children: [/* @__PURE__ */ m("div", {
|
|
274
277
|
className: "flex items-center gap-2",
|
|
275
|
-
children: [/* @__PURE__ */
|
|
276
|
-
}), /* @__PURE__ */
|
|
278
|
+
children: [/* @__PURE__ */ p("div", { className: "size-5 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-6 w-40 animate-pulse rounded bg-bg-sunken" })]
|
|
279
|
+
}), /* @__PURE__ */ p("div", { className: "h-4 w-16 animate-pulse rounded bg-bg-sunken" })]
|
|
277
280
|
}),
|
|
278
|
-
/* @__PURE__ */
|
|
281
|
+
/* @__PURE__ */ m("div", {
|
|
279
282
|
className: "mb-6 flex flex-col gap-6 md:flex-row",
|
|
280
|
-
children: [/* @__PURE__ */
|
|
283
|
+
children: [/* @__PURE__ */ p("div", {
|
|
281
284
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-4 md:w-64",
|
|
282
|
-
children: /* @__PURE__ */
|
|
285
|
+
children: /* @__PURE__ */ m("div", {
|
|
283
286
|
className: "flex items-center gap-6",
|
|
284
|
-
children: [/* @__PURE__ */
|
|
287
|
+
children: [/* @__PURE__ */ m("div", {
|
|
285
288
|
className: "text-center",
|
|
286
289
|
children: [
|
|
287
|
-
/* @__PURE__ */
|
|
288
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ p("div", { className: "h-12 w-16 rounded bg-bg-sunken" }),
|
|
291
|
+
/* @__PURE__ */ p("div", {
|
|
289
292
|
className: "my-1 flex justify-center gap-0.5",
|
|
290
293
|
children: [...[
|
|
291
294
|
,
|
|
@@ -293,11 +296,11 @@ var Ee = (e, t) => ({
|
|
|
293
296
|
,
|
|
294
297
|
,
|
|
295
298
|
,
|
|
296
|
-
]].map((e, t) => /* @__PURE__ */
|
|
299
|
+
]].map((e, t) => /* @__PURE__ */ p("div", { className: "size-4 rounded bg-bg-sunken" }, t))
|
|
297
300
|
}),
|
|
298
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ p("div", { className: "h-3 w-20 rounded bg-bg-sunken" })
|
|
299
302
|
]
|
|
300
|
-
}), /* @__PURE__ */
|
|
303
|
+
}), /* @__PURE__ */ p("div", {
|
|
301
304
|
className: "flex-1 space-y-1",
|
|
302
305
|
children: [...[
|
|
303
306
|
,
|
|
@@ -305,29 +308,29 @@ var Ee = (e, t) => ({
|
|
|
305
308
|
,
|
|
306
309
|
,
|
|
307
310
|
,
|
|
308
|
-
]].map((e, t) => /* @__PURE__ */
|
|
311
|
+
]].map((e, t) => /* @__PURE__ */ m("div", {
|
|
309
312
|
className: "flex items-center gap-2",
|
|
310
313
|
children: [
|
|
311
|
-
/* @__PURE__ */
|
|
312
|
-
/* @__PURE__ */
|
|
313
|
-
/* @__PURE__ */
|
|
314
|
+
/* @__PURE__ */ p("div", { className: "h-2 w-3 rounded bg-bg-sunken" }),
|
|
315
|
+
/* @__PURE__ */ p("div", { className: "h-2 flex-1 rounded-full bg-bg-sunken" }),
|
|
316
|
+
/* @__PURE__ */ p("div", { className: "h-2 w-8 rounded bg-bg-sunken" })
|
|
314
317
|
]
|
|
315
318
|
}, t))
|
|
316
319
|
})]
|
|
317
320
|
})
|
|
318
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ p("div", { className: "h-12 w-32 animate-pulse rounded-lg bg-bg-sunken" })]
|
|
319
322
|
}),
|
|
320
|
-
/* @__PURE__ */
|
|
323
|
+
/* @__PURE__ */ p("div", {
|
|
321
324
|
className: "space-y-4",
|
|
322
|
-
children: [...[, ,]].map((e, t) => /* @__PURE__ */
|
|
325
|
+
children: [...[, ,]].map((e, t) => /* @__PURE__ */ m("div", {
|
|
323
326
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-4",
|
|
324
|
-
children: [/* @__PURE__ */
|
|
327
|
+
children: [/* @__PURE__ */ m("div", {
|
|
325
328
|
className: "mb-3 flex items-start gap-3",
|
|
326
|
-
children: [/* @__PURE__ */
|
|
329
|
+
children: [/* @__PURE__ */ p("div", { className: "size-10 rounded-full bg-bg-sunken" }), /* @__PURE__ */ m("div", {
|
|
327
330
|
className: "flex-1",
|
|
328
|
-
children: [/* @__PURE__ */
|
|
331
|
+
children: [/* @__PURE__ */ p("div", { className: "h-4 w-32 rounded bg-bg-sunken" }), /* @__PURE__ */ m("div", {
|
|
329
332
|
className: "mt-1 flex items-center gap-2",
|
|
330
|
-
children: [/* @__PURE__ */
|
|
333
|
+
children: [/* @__PURE__ */ p("div", {
|
|
331
334
|
className: "flex gap-0.5",
|
|
332
335
|
children: [...[
|
|
333
336
|
,
|
|
@@ -335,26 +338,26 @@ var Ee = (e, t) => ({
|
|
|
335
338
|
,
|
|
336
339
|
,
|
|
337
340
|
,
|
|
338
|
-
]].map((e, t) => /* @__PURE__ */
|
|
339
|
-
}), /* @__PURE__ */
|
|
341
|
+
]].map((e, t) => /* @__PURE__ */ p("div", { className: "size-3 rounded bg-bg-sunken" }, t))
|
|
342
|
+
}), /* @__PURE__ */ p("div", { className: "h-3 w-20 rounded bg-bg-sunken" })]
|
|
340
343
|
})]
|
|
341
344
|
})]
|
|
342
|
-
}), /* @__PURE__ */
|
|
345
|
+
}), /* @__PURE__ */ m("div", {
|
|
343
346
|
className: "space-y-2",
|
|
344
|
-
children: [/* @__PURE__ */
|
|
347
|
+
children: [/* @__PURE__ */ p("div", { className: "h-4 w-full rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-4 w-2/3 rounded bg-bg-sunken" })]
|
|
345
348
|
})]
|
|
346
349
|
}, t))
|
|
347
350
|
})
|
|
348
351
|
]
|
|
349
352
|
}),
|
|
350
|
-
/* @__PURE__ */
|
|
353
|
+
/* @__PURE__ */ m("section", {
|
|
351
354
|
className: "mb-8",
|
|
352
|
-
children: [/* @__PURE__ */
|
|
355
|
+
children: [/* @__PURE__ */ m("div", {
|
|
353
356
|
className: "mb-4 flex items-center gap-2",
|
|
354
|
-
children: [/* @__PURE__ */
|
|
355
|
-
}), /* @__PURE__ */
|
|
357
|
+
children: [/* @__PURE__ */ p("div", { className: "size-5 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-6 w-48 animate-pulse rounded bg-bg-sunken" })]
|
|
358
|
+
}), /* @__PURE__ */ p("div", {
|
|
356
359
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-4",
|
|
357
|
-
children: /* @__PURE__ */
|
|
360
|
+
children: /* @__PURE__ */ p("div", {
|
|
358
361
|
className: "grid gap-4 md:grid-cols-2",
|
|
359
362
|
children: [...[
|
|
360
363
|
,
|
|
@@ -363,37 +366,37 @@ var Ee = (e, t) => ({
|
|
|
363
366
|
,
|
|
364
367
|
,
|
|
365
368
|
,
|
|
366
|
-
]].map((e, t) => /* @__PURE__ */
|
|
369
|
+
]].map((e, t) => /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", { className: "h-3 w-16 rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "mt-1 h-5 w-24 rounded bg-bg-sunken" })] }, t))
|
|
367
370
|
})
|
|
368
371
|
})]
|
|
369
372
|
}),
|
|
370
|
-
/* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ m("section", {
|
|
371
374
|
className: "mb-8",
|
|
372
|
-
children: [/* @__PURE__ */
|
|
375
|
+
children: [/* @__PURE__ */ m("div", {
|
|
373
376
|
className: "mb-4 flex items-center justify-between",
|
|
374
|
-
children: [/* @__PURE__ */
|
|
377
|
+
children: [/* @__PURE__ */ m("div", {
|
|
375
378
|
className: "flex items-center gap-2",
|
|
376
|
-
children: [/* @__PURE__ */
|
|
377
|
-
}), /* @__PURE__ */
|
|
378
|
-
}), /* @__PURE__ */
|
|
379
|
+
children: [/* @__PURE__ */ p("div", { className: "size-5 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-6 w-40 animate-pulse rounded bg-bg-sunken" })]
|
|
380
|
+
}), /* @__PURE__ */ p("div", { className: "h-4 w-16 animate-pulse rounded bg-bg-sunken" })]
|
|
381
|
+
}), /* @__PURE__ */ p("div", {
|
|
379
382
|
className: "grid gap-4 md:grid-cols-4",
|
|
380
383
|
children: [...[
|
|
381
384
|
,
|
|
382
385
|
,
|
|
383
386
|
,
|
|
384
387
|
,
|
|
385
|
-
]].map((e, t) => /* @__PURE__ */
|
|
388
|
+
]].map((e, t) => /* @__PURE__ */ p("div", {
|
|
386
389
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-3",
|
|
387
|
-
children: /* @__PURE__ */
|
|
390
|
+
children: /* @__PURE__ */ m("div", {
|
|
388
391
|
className: "flex items-center gap-3",
|
|
389
|
-
children: [/* @__PURE__ */
|
|
392
|
+
children: [/* @__PURE__ */ p("div", { className: "size-14 rounded-xl bg-bg-sunken" }), /* @__PURE__ */ m("div", {
|
|
390
393
|
className: "flex-1",
|
|
391
394
|
children: [
|
|
392
|
-
/* @__PURE__ */
|
|
393
|
-
/* @__PURE__ */
|
|
394
|
-
/* @__PURE__ */
|
|
395
|
+
/* @__PURE__ */ p("div", { className: "h-4 w-24 rounded bg-bg-sunken" }),
|
|
396
|
+
/* @__PURE__ */ p("div", { className: "mt-1 h-3 w-16 rounded bg-bg-sunken" }),
|
|
397
|
+
/* @__PURE__ */ m("div", {
|
|
395
398
|
className: "mt-1 flex items-center gap-2",
|
|
396
|
-
children: [/* @__PURE__ */
|
|
399
|
+
children: [/* @__PURE__ */ p("div", { className: "h-3 w-8 rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-3 w-12 rounded bg-bg-sunken" })]
|
|
397
400
|
})
|
|
398
401
|
]
|
|
399
402
|
})]
|
|
@@ -401,46 +404,46 @@ var Ee = (e, t) => ({
|
|
|
401
404
|
}, t))
|
|
402
405
|
})]
|
|
403
406
|
}),
|
|
404
|
-
/* @__PURE__ */
|
|
407
|
+
/* @__PURE__ */ m("section", {
|
|
405
408
|
className: "mb-8",
|
|
406
|
-
children: [/* @__PURE__ */
|
|
409
|
+
children: [/* @__PURE__ */ p("div", { className: "mb-4 h-6 w-36 animate-pulse rounded bg-bg-sunken" }), /* @__PURE__ */ m("div", {
|
|
407
410
|
className: "animate-pulse rounded-lg border border-border-seam bg-bg-surface p-4",
|
|
408
|
-
children: [/* @__PURE__ */
|
|
411
|
+
children: [/* @__PURE__ */ m("div", {
|
|
409
412
|
className: "flex items-center gap-4",
|
|
410
|
-
children: [/* @__PURE__ */
|
|
413
|
+
children: [/* @__PURE__ */ p("div", { className: "size-12 rounded-lg bg-bg-sunken" }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ m("div", {
|
|
411
414
|
className: "flex items-center gap-2",
|
|
412
|
-
children: [/* @__PURE__ */
|
|
413
|
-
}), /* @__PURE__ */
|
|
414
|
-
}), /* @__PURE__ */
|
|
415
|
+
children: [/* @__PURE__ */ p("div", { className: "h-5 w-32 rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "size-4 rounded-full bg-bg-sunken" })]
|
|
416
|
+
}), /* @__PURE__ */ p("div", { className: "mt-1 h-4 w-40 rounded bg-bg-sunken" })] })]
|
|
417
|
+
}), /* @__PURE__ */ m("div", {
|
|
415
418
|
className: "mt-3 space-y-2",
|
|
416
|
-
children: [/* @__PURE__ */
|
|
419
|
+
children: [/* @__PURE__ */ p("div", { className: "h-4 w-full rounded bg-bg-sunken" }), /* @__PURE__ */ p("div", { className: "h-4 w-2/3 rounded bg-bg-sunken" })]
|
|
417
420
|
})]
|
|
418
421
|
})]
|
|
419
422
|
})
|
|
420
423
|
]
|
|
421
424
|
})]
|
|
422
|
-
}),
|
|
425
|
+
}), ke = ({ error: e, onRetry: t, onBack: n }) => /* @__PURE__ */ p("div", {
|
|
423
426
|
className: "flex h-full items-center justify-center",
|
|
424
|
-
children: /* @__PURE__ */
|
|
427
|
+
children: /* @__PURE__ */ m("div", {
|
|
425
428
|
className: "text-center",
|
|
426
429
|
children: [
|
|
427
|
-
/* @__PURE__ */
|
|
428
|
-
/* @__PURE__ */
|
|
430
|
+
/* @__PURE__ */ p(s, { className: "mx-auto mb-4 size-12 text-status-error-text" }),
|
|
431
|
+
/* @__PURE__ */ p("h2", {
|
|
429
432
|
className: "mb-2 text-xl font-semibold text-text-primary",
|
|
430
433
|
children: "Failed to load product"
|
|
431
434
|
}),
|
|
432
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ p("p", {
|
|
433
436
|
className: "mb-4 text-text-muted",
|
|
434
437
|
children: e.message || "An error occurred while loading the product details."
|
|
435
438
|
}),
|
|
436
|
-
/* @__PURE__ */
|
|
439
|
+
/* @__PURE__ */ m("div", {
|
|
437
440
|
className: "flex justify-center gap-3",
|
|
438
|
-
children: [/* @__PURE__ */
|
|
441
|
+
children: [/* @__PURE__ */ p("button", {
|
|
439
442
|
type: "button",
|
|
440
443
|
onClick: t,
|
|
441
444
|
className: "rounded-lg bg-action-primary-bg px-4 py-2 text-action-primary-text transition-opacity hover:opacity-90",
|
|
442
445
|
children: "Try Again"
|
|
443
|
-
}), /* @__PURE__ */
|
|
446
|
+
}), /* @__PURE__ */ p("button", {
|
|
444
447
|
type: "button",
|
|
445
448
|
onClick: n,
|
|
446
449
|
className: "rounded-lg border border-border-default px-4 py-2 text-text-primary transition-colors hover:bg-bg-sunken",
|
|
@@ -449,78 +452,78 @@ var Ee = (e, t) => ({
|
|
|
449
452
|
})
|
|
450
453
|
]
|
|
451
454
|
})
|
|
452
|
-
}),
|
|
453
|
-
let { productId:
|
|
454
|
-
filter:
|
|
455
|
-
productId:
|
|
456
|
-
workspaceId:
|
|
457
|
-
} : void 0, [
|
|
455
|
+
}), Ae = () => {
|
|
456
|
+
let { productId: s } = ye(), d = ve(), Ae = _e(), { basePath: g, workspaceId: _ } = e(), { addProduct: je, cartItems: Me, addingToCart: Ne, createOrder: Pe, checkingOut: Fe } = t(), { installations: Ie, refetch: Le } = oe({
|
|
457
|
+
filter: de(() => s && _ ? {
|
|
458
|
+
productId: s,
|
|
459
|
+
workspaceId: _
|
|
460
|
+
} : void 0, [s, _]),
|
|
458
461
|
limit: 1
|
|
459
|
-
}),
|
|
460
|
-
id:
|
|
461
|
-
slug:
|
|
462
|
+
}), Re = Ie.find((e) => e.productId === s && e.workspaceId === _ && e.status === "ACTIVE"), v = !!Re, y = Re?.version ?? null, { createReview: ze, loading: Be } = i(), { updateReview: Ve, loading: He } = re(), { deleteReview: Ue, loading: We } = ee(), { markHelpful: Ge, loading: Ke } = te(), b = we(), [x, qe] = o(!1), [S, Je] = o(!1), [Ye, C] = o(!1), [w, Xe] = o(1), [Ze, T] = o(null), [Qe, E] = o(null), [$e, D] = o("success"), [O, k] = o(!1), [A, j] = o(""), [M, et] = o(""), [N, P] = o(5), [tt, nt] = o(null), [rt, it] = o(!1), { data: at, loading: ot, error: st, refetch: F } = ne({
|
|
463
|
+
id: s,
|
|
464
|
+
slug: s,
|
|
462
465
|
includeReviews: !0,
|
|
463
466
|
reviewsLimit: 10,
|
|
464
467
|
includeRelated: !0,
|
|
465
468
|
relatedLimit: 4,
|
|
466
469
|
includeVersions: !0
|
|
467
|
-
}), I = at, L = I?.product, R = I?.publisher, z =
|
|
470
|
+
}), I = at, L = I?.product, R = I?.publisher, z = Me.some((e) => e.productId === L?.id), ct = (e) => {
|
|
468
471
|
let t = e.split(".");
|
|
469
472
|
for (; t.length < 3;) t.push("0");
|
|
470
473
|
return t.join(".");
|
|
471
|
-
}, lt = L?.manifestVersion ?? null, ut = !!(
|
|
474
|
+
}, lt = L?.manifestVersion ?? null, ut = !!(v && y && lt && ct(y) !== ct(lt)), dt = a(async () => {
|
|
472
475
|
if (L) {
|
|
473
|
-
if (
|
|
474
|
-
|
|
476
|
+
if (T(null), z) {
|
|
477
|
+
d(`${g}/cart`);
|
|
475
478
|
return;
|
|
476
479
|
}
|
|
477
480
|
try {
|
|
478
|
-
await
|
|
481
|
+
await je(Te(L, R), void 0, w);
|
|
479
482
|
} catch (e) {
|
|
480
|
-
console.error("Failed to add product to cart:", e),
|
|
483
|
+
console.error("Failed to add product to cart:", e), T("Failed to add this product to cart. Please try again.");
|
|
481
484
|
}
|
|
482
485
|
}
|
|
483
486
|
}, [
|
|
484
487
|
L,
|
|
485
488
|
R,
|
|
486
|
-
|
|
489
|
+
je,
|
|
487
490
|
z,
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
]), ft =
|
|
491
|
+
d,
|
|
492
|
+
g,
|
|
493
|
+
w
|
|
494
|
+
]), ft = a(async () => {
|
|
492
495
|
if (L) {
|
|
493
|
-
|
|
496
|
+
T(null), C(!0);
|
|
494
497
|
try {
|
|
495
498
|
let e = L.price || 0, t = {
|
|
496
499
|
productId: L.id,
|
|
497
500
|
name: L.name,
|
|
498
|
-
quantity:
|
|
501
|
+
quantity: w,
|
|
499
502
|
unitPrice: e,
|
|
500
|
-
subtotal: e *
|
|
503
|
+
subtotal: e * w,
|
|
501
504
|
itemType: L.nature?.toLowerCase() || "digital",
|
|
502
505
|
pricingModel: L.pricingModel || "PAID_ONETIME"
|
|
503
|
-
}, n = await
|
|
504
|
-
total: e *
|
|
506
|
+
}, n = await Pe({
|
|
507
|
+
total: e * w,
|
|
505
508
|
lineItems: [t],
|
|
506
509
|
billingAccountId: ""
|
|
507
510
|
});
|
|
508
|
-
n?.id ?
|
|
511
|
+
n?.id ? d(`/billing/checkout/store/${n.id}${Ae.search}`) : (console.error("Failed to create order"), T("Failed to create order. Please try again."), C(!1));
|
|
509
512
|
} catch (e) {
|
|
510
|
-
console.error("Buy Now error:", e),
|
|
513
|
+
console.error("Buy Now error:", e), T(e instanceof Error ? e.message : "Failed to start checkout"), C(!1);
|
|
511
514
|
}
|
|
512
515
|
}
|
|
513
516
|
}, [
|
|
514
517
|
L,
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
]), B =
|
|
518
|
+
w,
|
|
519
|
+
Pe,
|
|
520
|
+
d
|
|
521
|
+
]), B = a(() => {
|
|
519
522
|
L && it(!0);
|
|
520
|
-
}, [L]), pt =
|
|
523
|
+
}, [L]), pt = fe(L);
|
|
521
524
|
pt.current = L;
|
|
522
|
-
let mt =
|
|
523
|
-
mt.current =
|
|
525
|
+
let mt = fe(b);
|
|
526
|
+
mt.current = b, ue(() => {
|
|
524
527
|
let e = pt.current;
|
|
525
528
|
e && mt.current.emit("store.product.viewed", {
|
|
526
529
|
productId: e.id,
|
|
@@ -529,91 +532,91 @@ var Ee = (e, t) => ({
|
|
|
529
532
|
pricingModel: e.pricingModel
|
|
530
533
|
});
|
|
531
534
|
}, [L?.id]);
|
|
532
|
-
let ht =
|
|
533
|
-
L && (
|
|
535
|
+
let ht = a((e, t) => {
|
|
536
|
+
L && (b.emit("store.product.installed", {
|
|
534
537
|
productId: L.id,
|
|
535
538
|
workspaceId: e
|
|
536
|
-
}), console.log(`Successfully installed ${L.name} to workspace ${t} (${e})`),
|
|
539
|
+
}), console.log(`Successfully installed ${L.name} to workspace ${t} (${e})`), Le());
|
|
537
540
|
}, [
|
|
538
541
|
L,
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
]), gt =
|
|
542
|
+
b,
|
|
543
|
+
Le
|
|
544
|
+
]), gt = a((e) => {
|
|
542
545
|
console.error("Installation failed:", e.message);
|
|
543
|
-
}, []), _t =
|
|
544
|
-
|
|
545
|
-
}, [I?.userReview]), vt =
|
|
546
|
+
}, []), _t = a(() => {
|
|
547
|
+
j(I?.userReview?.title ?? ""), et(I?.userReview?.comment ?? ""), P(I?.userReview?.rating ?? 5), E(null), D("success"), k(!0);
|
|
548
|
+
}, [I?.userReview]), vt = a(async () => {
|
|
546
549
|
if (!L) return;
|
|
547
550
|
if (N < 1 || N > 5) {
|
|
548
|
-
|
|
551
|
+
D("error"), E("Choose a rating from 1 to 5 stars.");
|
|
549
552
|
return;
|
|
550
553
|
}
|
|
551
554
|
let e = {
|
|
552
555
|
productId: L.id,
|
|
553
556
|
rating: N,
|
|
554
|
-
title:
|
|
555
|
-
comment:
|
|
557
|
+
title: A.trim() || void 0,
|
|
558
|
+
comment: M.trim() || void 0
|
|
556
559
|
}, t = I?.userReview ? {
|
|
557
|
-
data: await
|
|
560
|
+
data: await Ve(I.userReview.id, {
|
|
558
561
|
rating: e.rating,
|
|
559
562
|
title: e.title,
|
|
560
563
|
comment: e.comment
|
|
561
564
|
}),
|
|
562
565
|
errorMessage: null
|
|
563
|
-
} : await
|
|
566
|
+
} : await ze(e);
|
|
564
567
|
if (!t?.data) {
|
|
565
|
-
|
|
568
|
+
D("error"), E(t?.errorMessage ?? "We could not save your review. Please try again.");
|
|
566
569
|
return;
|
|
567
570
|
}
|
|
568
|
-
|
|
571
|
+
D("success"), E(I?.userReview ? "Your review was updated." : "Your review was submitted."), k(!1), b.emit("store.review.submitted", {
|
|
569
572
|
productId: L.id,
|
|
570
573
|
rating: N
|
|
571
574
|
}), await F();
|
|
572
575
|
}, [
|
|
573
|
-
|
|
574
|
-
|
|
576
|
+
b,
|
|
577
|
+
ze,
|
|
575
578
|
L,
|
|
576
579
|
I?.userReview,
|
|
577
580
|
F,
|
|
578
|
-
|
|
581
|
+
M,
|
|
579
582
|
N,
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
]), yt =
|
|
583
|
-
if (I?.userReview && (
|
|
583
|
+
A,
|
|
584
|
+
Ve
|
|
585
|
+
]), yt = a(async () => {
|
|
586
|
+
if (I?.userReview && (ce("medium"), await se({
|
|
584
587
|
title: "Delete review",
|
|
585
588
|
message: "Are you sure you want to remove your review?",
|
|
586
589
|
okButtonTitle: "Delete",
|
|
587
590
|
cancelButtonTitle: "Cancel"
|
|
588
591
|
}) !== !1)) {
|
|
589
|
-
if (!await
|
|
590
|
-
|
|
592
|
+
if (!await Ue(I.userReview.id)) {
|
|
593
|
+
D("error"), E("We could not remove your review. Please try again."), le("error");
|
|
591
594
|
return;
|
|
592
595
|
}
|
|
593
|
-
|
|
596
|
+
D("success"), E("Your review was removed."), k(!1), j(""), et(""), P(5), le("success"), await F();
|
|
594
597
|
}
|
|
595
598
|
}, [
|
|
596
|
-
|
|
599
|
+
Ue,
|
|
597
600
|
I?.userReview,
|
|
598
601
|
F
|
|
599
|
-
]), bt =
|
|
600
|
-
nt(e), await
|
|
601
|
-
}, [
|
|
602
|
-
if (ot) return /* @__PURE__ */
|
|
603
|
-
if (st) return /* @__PURE__ */
|
|
602
|
+
]), bt = a(async (e) => {
|
|
603
|
+
nt(e), await Ge(e) && await F(), nt(null);
|
|
604
|
+
}, [Ge, F]);
|
|
605
|
+
if (ot) return /* @__PURE__ */ p(Oe, {});
|
|
606
|
+
if (st) return /* @__PURE__ */ p(ke, {
|
|
604
607
|
error: st,
|
|
605
608
|
onRetry: F,
|
|
606
|
-
onBack: () =>
|
|
609
|
+
onBack: () => d(`${g}/marketplace`)
|
|
607
610
|
});
|
|
608
|
-
if (!I?.product) return /* @__PURE__ */
|
|
611
|
+
if (!I?.product) return /* @__PURE__ */ p("div", {
|
|
609
612
|
className: "flex h-full items-center justify-center p-6",
|
|
610
|
-
children: /* @__PURE__ */
|
|
613
|
+
children: /* @__PURE__ */ p(xe, {
|
|
611
614
|
illustration: "empty-search",
|
|
612
615
|
title: "Product not found",
|
|
613
616
|
description: "The product you are looking for does not exist or has been removed.",
|
|
614
|
-
action: /* @__PURE__ */
|
|
617
|
+
action: /* @__PURE__ */ p("button", {
|
|
615
618
|
type: "button",
|
|
616
|
-
onClick: () =>
|
|
619
|
+
onClick: () => d(`${g}/marketplace`),
|
|
617
620
|
className: "rounded-lg bg-action-primary-bg px-4 py-2 text-action-primary-text transition-opacity hover:opacity-90",
|
|
618
621
|
children: "Back to Marketplace"
|
|
619
622
|
})
|
|
@@ -646,32 +649,32 @@ var Ee = (e, t) => ({
|
|
|
646
649
|
percentage: q > 0 ? U.oneStar / q * 100 : 0
|
|
647
650
|
}
|
|
648
651
|
] : [], J = K.requiredPermissions || [], Ct = K.integrationDeps || [], wt = () => K.pricingModel === "FREE" ? "Free" : K.pricingModel === "SUBSCRIPTION" ? `${r(K.price, K.currency)}/mo` : r(K.price, K.currency), Y = K.pricingModel === "FREE" || K.price === 0, X = K.nature === "PHYSICAL", Z = X && K.trackInventory === !0, Q = K.stockQuantity ?? 0, $ = Z && Q <= 0;
|
|
649
|
-
return /* @__PURE__ */
|
|
652
|
+
return /* @__PURE__ */ m("div", {
|
|
650
653
|
className: "h-full overflow-y-auto bg-bg-base",
|
|
651
654
|
children: [
|
|
652
|
-
/* @__PURE__ */
|
|
655
|
+
/* @__PURE__ */ p("div", {
|
|
653
656
|
className: "bg-bg-surface",
|
|
654
|
-
children: /* @__PURE__ */
|
|
657
|
+
children: /* @__PURE__ */ p("div", {
|
|
655
658
|
className: "mx-auto max-w-7xl",
|
|
656
|
-
children: /* @__PURE__ */
|
|
659
|
+
children: /* @__PURE__ */ m("div", {
|
|
657
660
|
className: "flex flex-col lg:flex-row",
|
|
658
|
-
children: [/* @__PURE__ */
|
|
661
|
+
children: [/* @__PURE__ */ m("div", {
|
|
659
662
|
className: "flex-1 px-6 py-8 lg:max-w-xl lg:py-12",
|
|
660
663
|
children: [
|
|
661
|
-
/* @__PURE__ */
|
|
664
|
+
/* @__PURE__ */ m("button", {
|
|
662
665
|
type: "button",
|
|
663
|
-
onClick: () =>
|
|
666
|
+
onClick: () => d(-1),
|
|
664
667
|
className: "mb-6 cursor-pointer inline-flex items-center gap-2 text-sm text-text-muted transition-colors hover:text-text-primary",
|
|
665
|
-
children: [/* @__PURE__ */
|
|
668
|
+
children: [/* @__PURE__ */ p(pe, { className: "size-4" }), "Back"]
|
|
666
669
|
}),
|
|
667
|
-
/* @__PURE__ */
|
|
670
|
+
/* @__PURE__ */ p("h1", {
|
|
668
671
|
className: "mb-3 text-4xl font-normal leading-tight text-text-primary lg:text-5xl",
|
|
669
672
|
children: K.name
|
|
670
673
|
}),
|
|
671
|
-
|
|
674
|
+
v && /* @__PURE__ */ m("div", {
|
|
672
675
|
className: "mb-4 inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-sm font-medium text-status-success-text",
|
|
673
676
|
children: [
|
|
674
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ p("svg", {
|
|
675
678
|
className: "size-3.5",
|
|
676
679
|
viewBox: "0 0 16 16",
|
|
677
680
|
fill: "none",
|
|
@@ -680,128 +683,142 @@ var Ee = (e, t) => ({
|
|
|
680
683
|
strokeLinecap: "round",
|
|
681
684
|
strokeLinejoin: "round",
|
|
682
685
|
"aria-hidden": "true",
|
|
683
|
-
children: /* @__PURE__ */
|
|
686
|
+
children: /* @__PURE__ */ p("polyline", { points: "2,8 6,12 14,4" })
|
|
684
687
|
}),
|
|
685
688
|
"Installed",
|
|
686
|
-
|
|
689
|
+
y ? ` v${y}` : ""
|
|
687
690
|
]
|
|
688
691
|
}),
|
|
689
692
|
/* @__PURE__ */ p("div", {
|
|
690
693
|
className: "mb-2",
|
|
691
|
-
children:
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
694
|
+
children: (() => {
|
|
695
|
+
let e = R?.developerOrganization, t = e?.name || R?.name || K.authorName || "Unknown Publisher", n = e?.logoUrl || R?.logoUrl, r = e?.isVerified || R?.isVerified, i = R?.websiteUrl;
|
|
696
|
+
return /* @__PURE__ */ m("div", {
|
|
697
|
+
className: "flex items-center gap-2",
|
|
698
|
+
children: [
|
|
699
|
+
n && /* @__PURE__ */ p("img", {
|
|
700
|
+
src: n,
|
|
701
|
+
alt: t,
|
|
702
|
+
className: "size-5 rounded object-cover"
|
|
703
|
+
}),
|
|
704
|
+
i ? /* @__PURE__ */ p("a", {
|
|
705
|
+
href: i,
|
|
706
|
+
target: "_blank",
|
|
707
|
+
rel: "noreferrer",
|
|
708
|
+
className: "text-base font-medium text-text-link hover:underline",
|
|
709
|
+
children: t
|
|
710
|
+
}) : /* @__PURE__ */ p("span", {
|
|
711
|
+
className: "text-base font-medium text-text-primary",
|
|
712
|
+
children: t
|
|
713
|
+
}),
|
|
714
|
+
r && /* @__PURE__ */ p(l, { className: "size-4 text-status-success-text" })
|
|
715
|
+
]
|
|
716
|
+
});
|
|
717
|
+
})()
|
|
701
718
|
}),
|
|
702
|
-
/* @__PURE__ */
|
|
719
|
+
/* @__PURE__ */ m("p", {
|
|
703
720
|
className: "mb-6 text-sm text-text-muted",
|
|
704
721
|
children: [
|
|
705
|
-
K.category && /* @__PURE__ */
|
|
722
|
+
K.category && /* @__PURE__ */ p("span", { children: K.category }),
|
|
706
723
|
K.category && " · ",
|
|
707
724
|
n(K.downloads),
|
|
708
725
|
"+ downloads"
|
|
709
726
|
]
|
|
710
727
|
}),
|
|
711
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ m(be, {
|
|
712
729
|
className: "mb-6 p-5",
|
|
713
730
|
children: [
|
|
714
|
-
/* @__PURE__ */
|
|
731
|
+
/* @__PURE__ */ m("div", {
|
|
715
732
|
className: "mb-6 flex items-center gap-4",
|
|
716
733
|
children: [
|
|
717
|
-
/* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ p("div", {
|
|
718
735
|
className: "flex size-12 items-center justify-center overflow-hidden rounded-xl bg-bg-sunken",
|
|
719
|
-
children: K.icon ? /* @__PURE__ */
|
|
736
|
+
children: K.icon ? /* @__PURE__ */ p("img", {
|
|
720
737
|
src: K.icon,
|
|
721
738
|
alt: "",
|
|
722
739
|
className: "size-full object-cover"
|
|
723
|
-
}) : /* @__PURE__ */
|
|
740
|
+
}) : /* @__PURE__ */ p("span", {
|
|
724
741
|
className: "text-lg font-bold text-text-muted",
|
|
725
742
|
children: K.name.charAt(0)
|
|
726
743
|
})
|
|
727
744
|
}),
|
|
728
|
-
/* @__PURE__ */
|
|
745
|
+
/* @__PURE__ */ m("div", {
|
|
729
746
|
className: "flex items-center gap-1 border-l border-border-default pl-4",
|
|
730
747
|
children: [
|
|
731
|
-
/* @__PURE__ */
|
|
748
|
+
/* @__PURE__ */ p("span", {
|
|
732
749
|
className: "text-sm font-medium text-text-primary",
|
|
733
750
|
children: (K.rating || 0).toFixed(1)
|
|
734
751
|
}),
|
|
735
|
-
/* @__PURE__ */
|
|
736
|
-
/* @__PURE__ */
|
|
752
|
+
/* @__PURE__ */ p(u, { className: "size-4 fill-current text-status-warning-text" }),
|
|
753
|
+
/* @__PURE__ */ m("span", {
|
|
737
754
|
className: "ml-1 text-xs text-text-muted",
|
|
738
755
|
children: [n(xt || K.reviewCount), " reviews"]
|
|
739
756
|
})
|
|
740
757
|
]
|
|
741
758
|
}),
|
|
742
|
-
/* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ m("div", {
|
|
743
760
|
className: "border-l border-border-default pl-4",
|
|
744
|
-
children: [/* @__PURE__ */
|
|
761
|
+
children: [/* @__PURE__ */ m("span", {
|
|
745
762
|
className: "text-sm font-medium text-text-primary",
|
|
746
763
|
children: [n(K.downloads), "+"]
|
|
747
|
-
}), /* @__PURE__ */
|
|
764
|
+
}), /* @__PURE__ */ p("p", {
|
|
748
765
|
className: "text-xs text-text-muted",
|
|
749
766
|
children: "Downloads"
|
|
750
767
|
})]
|
|
751
768
|
}),
|
|
752
|
-
/* @__PURE__ */
|
|
769
|
+
/* @__PURE__ */ m("div", {
|
|
753
770
|
className: "border-l border-border-default pl-4",
|
|
754
|
-
children: [/* @__PURE__ */
|
|
771
|
+
children: [/* @__PURE__ */ p("span", {
|
|
755
772
|
className: "rounded bg-bg-sunken px-2 py-1 text-xs font-medium text-text-primary",
|
|
756
773
|
children: K.type
|
|
757
|
-
}), /* @__PURE__ */
|
|
774
|
+
}), /* @__PURE__ */ p("p", {
|
|
758
775
|
className: "mt-0.5 text-xs text-text-muted",
|
|
759
776
|
children: "Type"
|
|
760
777
|
})]
|
|
761
778
|
})
|
|
762
779
|
]
|
|
763
780
|
}),
|
|
764
|
-
|
|
781
|
+
Ze && /* @__PURE__ */ p("div", {
|
|
765
782
|
role: "alert",
|
|
766
783
|
className: "mb-4 rounded-lg border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text",
|
|
767
|
-
children:
|
|
784
|
+
children: Ze
|
|
768
785
|
}),
|
|
769
|
-
X && /* @__PURE__ */
|
|
786
|
+
X && /* @__PURE__ */ m("div", {
|
|
770
787
|
className: "mb-4 flex flex-wrap items-center gap-4",
|
|
771
|
-
children: [Z && ($ ? /* @__PURE__ */
|
|
788
|
+
children: [Z && ($ ? /* @__PURE__ */ m("span", {
|
|
772
789
|
className: "inline-flex items-center gap-1.5 rounded-full bg-status-error-bg-subtle px-3 py-1 text-sm font-medium text-status-error-text",
|
|
773
|
-
children: [/* @__PURE__ */
|
|
774
|
-
}) : /* @__PURE__ */
|
|
790
|
+
children: [/* @__PURE__ */ p(c, { className: "size-4" }), "Out of stock"]
|
|
791
|
+
}) : /* @__PURE__ */ m("span", {
|
|
775
792
|
className: "inline-flex items-center gap-1.5 rounded-full bg-status-success-bg-subtle px-3 py-1 text-sm font-medium text-status-success-text",
|
|
776
793
|
children: [
|
|
777
|
-
/* @__PURE__ */
|
|
794
|
+
/* @__PURE__ */ p(c, { className: "size-4" }),
|
|
778
795
|
n(Q),
|
|
779
796
|
" in stock"
|
|
780
797
|
]
|
|
781
|
-
})), !$ && /* @__PURE__ */
|
|
798
|
+
})), !$ && /* @__PURE__ */ m("div", {
|
|
782
799
|
className: "flex items-center gap-2",
|
|
783
|
-
children: [/* @__PURE__ */
|
|
800
|
+
children: [/* @__PURE__ */ p("span", {
|
|
784
801
|
className: "text-sm text-text-muted",
|
|
785
802
|
children: "Qty"
|
|
786
|
-
}), /* @__PURE__ */
|
|
803
|
+
}), /* @__PURE__ */ m("div", {
|
|
787
804
|
className: "flex items-center rounded-full border border-border-default",
|
|
788
805
|
children: [
|
|
789
|
-
/* @__PURE__ */
|
|
806
|
+
/* @__PURE__ */ p("button", {
|
|
790
807
|
type: "button",
|
|
791
|
-
onClick: () =>
|
|
792
|
-
disabled:
|
|
808
|
+
onClick: () => Xe((e) => Math.max(1, e - 1)),
|
|
809
|
+
disabled: w <= 1,
|
|
793
810
|
"aria-label": "Decrease quantity",
|
|
794
811
|
className: "cursor-pointer px-3 py-1.5 text-text-primary transition-colors hover:bg-bg-sunken disabled:cursor-not-allowed disabled:opacity-40",
|
|
795
812
|
children: "−"
|
|
796
813
|
}),
|
|
797
|
-
/* @__PURE__ */
|
|
814
|
+
/* @__PURE__ */ p("span", {
|
|
798
815
|
className: "min-w-8 px-2 text-center text-sm font-medium tabular-nums text-text-primary",
|
|
799
|
-
children:
|
|
816
|
+
children: w
|
|
800
817
|
}),
|
|
801
|
-
/* @__PURE__ */
|
|
818
|
+
/* @__PURE__ */ p("button", {
|
|
802
819
|
type: "button",
|
|
803
|
-
onClick: () =>
|
|
804
|
-
disabled: Z &&
|
|
820
|
+
onClick: () => Xe((e) => Z ? Math.min(Q, e + 1) : e + 1),
|
|
821
|
+
disabled: Z && w >= Q,
|
|
805
822
|
"aria-label": "Increase quantity",
|
|
806
823
|
className: "cursor-pointer px-3 py-1.5 text-text-primary transition-colors hover:bg-bg-sunken disabled:cursor-not-allowed disabled:opacity-40",
|
|
807
824
|
children: "+"
|
|
@@ -810,13 +827,13 @@ var Ee = (e, t) => ({
|
|
|
810
827
|
})]
|
|
811
828
|
})]
|
|
812
829
|
}),
|
|
813
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ m("div", {
|
|
814
831
|
className: "mb-6 flex items-center gap-3",
|
|
815
|
-
children: [
|
|
832
|
+
children: [v ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("button", {
|
|
816
833
|
type: "button",
|
|
817
834
|
disabled: !0,
|
|
818
835
|
className: "flex items-center gap-2 rounded-full bg-status-success-bg-subtle px-8 py-3 font-medium text-status-success-text cursor-default",
|
|
819
|
-
children: [/* @__PURE__ */
|
|
836
|
+
children: [/* @__PURE__ */ p("svg", {
|
|
820
837
|
className: "size-4",
|
|
821
838
|
viewBox: "0 0 16 16",
|
|
822
839
|
fill: "none",
|
|
@@ -825,60 +842,60 @@ var Ee = (e, t) => ({
|
|
|
825
842
|
strokeLinecap: "round",
|
|
826
843
|
strokeLinejoin: "round",
|
|
827
844
|
"aria-hidden": "true",
|
|
828
|
-
children: /* @__PURE__ */
|
|
845
|
+
children: /* @__PURE__ */ p("polyline", { points: "2,8 6,12 14,4" })
|
|
829
846
|
}), "Installed"]
|
|
830
|
-
}), ut && /* @__PURE__ */
|
|
847
|
+
}), ut && /* @__PURE__ */ m("button", {
|
|
831
848
|
type: "button",
|
|
832
849
|
onClick: B,
|
|
833
850
|
className: "cursor-pointer rounded-full bg-action-primary-bg px-8 py-3 font-medium text-action-primary-text transition-opacity hover:opacity-90",
|
|
834
851
|
children: ["Update to v", K.manifestVersion]
|
|
835
|
-
})] }) : !X && W && !Y ? /* @__PURE__ */
|
|
852
|
+
})] }) : !X && W && !Y ? /* @__PURE__ */ p("button", {
|
|
836
853
|
type: "button",
|
|
837
854
|
onClick: B,
|
|
838
855
|
className: "cursor-pointer rounded-full bg-action-primary-bg px-8 py-3 font-medium text-action-primary-text transition-opacity hover:opacity-90",
|
|
839
856
|
children: "Install to Workspace"
|
|
840
|
-
}) : !X && Y ? /* @__PURE__ */
|
|
857
|
+
}) : !X && Y ? /* @__PURE__ */ p("button", {
|
|
841
858
|
type: "button",
|
|
842
859
|
onClick: B,
|
|
843
860
|
className: "cursor-pointer rounded-full bg-action-primary-bg px-8 py-3 font-medium text-action-primary-text transition-opacity hover:opacity-90",
|
|
844
861
|
children: "Install"
|
|
845
|
-
}) : /* @__PURE__ */
|
|
862
|
+
}) : /* @__PURE__ */ p("button", {
|
|
846
863
|
type: "button",
|
|
847
864
|
onClick: ft,
|
|
848
|
-
disabled:
|
|
865
|
+
disabled: Ye || Fe || $,
|
|
849
866
|
className: "cursor-pointer flex items-center gap-2 rounded-full bg-action-primary-bg px-8 py-3 font-medium text-action-primary-text transition-opacity hover:opacity-90 disabled:opacity-70",
|
|
850
|
-
children:
|
|
851
|
-
}), !Y && (!W || X) && /* @__PURE__ */
|
|
867
|
+
children: Ye || Fe ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(he, { className: "size-4 animate-spin" }), "Processing…"] }) : $ ? "Out of stock" : `Buy ${wt()}`
|
|
868
|
+
}), !Y && (!W || X) && /* @__PURE__ */ m("button", {
|
|
852
869
|
type: "button",
|
|
853
870
|
onClick: dt,
|
|
854
|
-
disabled:
|
|
871
|
+
disabled: Ne || $,
|
|
855
872
|
className: "cursor-pointer flex items-center gap-2 rounded-full border border-border-default px-4 py-3 text-sm text-text-primary transition-colors hover:bg-bg-sunken disabled:opacity-50",
|
|
856
|
-
children: [
|
|
873
|
+
children: [Ne ? /* @__PURE__ */ p(he, { className: "size-4 animate-spin" }) : z ? /* @__PURE__ */ p(me, { className: "size-4 text-status-success-text" }) : /* @__PURE__ */ p(ge, { className: "size-4" }), z ? "In Cart" : "Add to Cart"]
|
|
857
874
|
})]
|
|
858
875
|
}),
|
|
859
|
-
X ? /* @__PURE__ */
|
|
876
|
+
X ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("p", {
|
|
860
877
|
className: "flex items-center gap-2 text-xs text-text-muted",
|
|
861
|
-
children: [/* @__PURE__ */
|
|
862
|
-
}), !Y && /* @__PURE__ */
|
|
878
|
+
children: [/* @__PURE__ */ p(c, { className: "size-4" }), K.requiresShipping === !1 ? "Available for pickup — no shipping required" : "Ships to your delivery address"]
|
|
879
|
+
}), !Y && /* @__PURE__ */ m("p", {
|
|
863
880
|
className: "text-xs text-text-tertiary",
|
|
864
881
|
children: [
|
|
865
882
|
"Returns and refunds are handled by ",
|
|
866
883
|
R?.name || "the seller",
|
|
867
884
|
" per their store policy."
|
|
868
885
|
]
|
|
869
|
-
})] }) : /* @__PURE__ */
|
|
870
|
-
/* @__PURE__ */
|
|
886
|
+
})] }) : /* @__PURE__ */ m(f, { children: [
|
|
887
|
+
/* @__PURE__ */ m("p", {
|
|
871
888
|
className: "flex items-center gap-2 text-xs text-text-muted",
|
|
872
|
-
children: [/* @__PURE__ */
|
|
889
|
+
children: [/* @__PURE__ */ p(c, { className: "size-4" }), "This app is available for your workspace"]
|
|
873
890
|
}),
|
|
874
|
-
!Y && !W && /* @__PURE__ */
|
|
891
|
+
!Y && !W && /* @__PURE__ */ p("p", {
|
|
875
892
|
className: "text-xs text-text-tertiary",
|
|
876
893
|
children: "All purchases are final. Digital app orders cannot be cancelled or refunded once completed."
|
|
877
894
|
}),
|
|
878
|
-
G && /* @__PURE__ */
|
|
895
|
+
G && /* @__PURE__ */ m("p", {
|
|
879
896
|
className: "mt-2 flex items-center gap-2 text-xs text-text-muted",
|
|
880
897
|
children: [
|
|
881
|
-
/* @__PURE__ */
|
|
898
|
+
/* @__PURE__ */ p(l, { className: "size-4 text-status-success-text" }),
|
|
882
899
|
"License: ",
|
|
883
900
|
G.status,
|
|
884
901
|
G.expiresAt && ` (Expires: ${new Date(G.expiresAt).toLocaleDateString()})`
|
|
@@ -888,33 +905,33 @@ var Ee = (e, t) => ({
|
|
|
888
905
|
]
|
|
889
906
|
})
|
|
890
907
|
]
|
|
891
|
-
}), /* @__PURE__ */
|
|
908
|
+
}), /* @__PURE__ */ p("div", {
|
|
892
909
|
className: "relative flex-1 overflow-hidden bg-bg-sunken lg:min-h-[500px]",
|
|
893
|
-
children: K.type === "WORKFLOW" ? /* @__PURE__ */
|
|
910
|
+
children: K.type === "WORKFLOW" ? /* @__PURE__ */ p("iframe", {
|
|
894
911
|
src: `${window.location.origin}/embed/workflow?productId=${encodeURIComponent(K.id)}&cta=false&theme=${document.documentElement.classList.contains("dark") ? "dark" : "light"}`,
|
|
895
912
|
title: `${K.name} workflow preview`,
|
|
896
913
|
loading: "lazy",
|
|
897
914
|
className: "size-full min-h-[300px] border-0 lg:min-h-[500px]"
|
|
898
|
-
}) : K.bannerUrl ? /* @__PURE__ */
|
|
915
|
+
}) : K.bannerUrl ? /* @__PURE__ */ p("img", {
|
|
899
916
|
src: K.bannerUrl,
|
|
900
917
|
alt: `${K.name} banner`,
|
|
901
918
|
className: "size-full object-cover"
|
|
902
|
-
}) : K.screenshots && K.screenshots.length > 0 ? /* @__PURE__ */
|
|
919
|
+
}) : K.screenshots && K.screenshots.length > 0 ? /* @__PURE__ */ p("img", {
|
|
903
920
|
src: K.screenshots[0],
|
|
904
921
|
alt: `${K.name} preview`,
|
|
905
922
|
className: "size-full object-cover"
|
|
906
|
-
}) : /* @__PURE__ */
|
|
923
|
+
}) : /* @__PURE__ */ m("div", {
|
|
907
924
|
className: "flex h-full min-h-[300px] flex-col items-center justify-center gap-3 p-8 text-center",
|
|
908
925
|
children: [
|
|
909
|
-
/* @__PURE__ */
|
|
926
|
+
/* @__PURE__ */ p("div", {
|
|
910
927
|
className: "flex size-20 items-center justify-center rounded-2xl bg-bg-surface text-3xl font-bold text-text-muted",
|
|
911
928
|
children: K.name.charAt(0)
|
|
912
929
|
}),
|
|
913
|
-
/* @__PURE__ */
|
|
930
|
+
/* @__PURE__ */ p("p", {
|
|
914
931
|
className: "text-sm text-text-muted",
|
|
915
932
|
children: "No preview available"
|
|
916
933
|
}),
|
|
917
|
-
/* @__PURE__ */
|
|
934
|
+
/* @__PURE__ */ p("p", {
|
|
918
935
|
className: "max-w-[200px] text-xs text-text-muted opacity-60",
|
|
919
936
|
children: "Upload screenshots in the Store Listing tab to show a preview here"
|
|
920
937
|
})
|
|
@@ -924,17 +941,17 @@ var Ee = (e, t) => ({
|
|
|
924
941
|
})
|
|
925
942
|
})
|
|
926
943
|
}),
|
|
927
|
-
K.screenshots && K.screenshots.length > 0 && /* @__PURE__ */
|
|
944
|
+
K.screenshots && K.screenshots.length > 0 && /* @__PURE__ */ p("div", {
|
|
928
945
|
className: "border-y border-border-default bg-bg-base",
|
|
929
|
-
children: /* @__PURE__ */
|
|
946
|
+
children: /* @__PURE__ */ m("div", {
|
|
930
947
|
className: "px-6 py-6",
|
|
931
|
-
children: [/* @__PURE__ */
|
|
948
|
+
children: [/* @__PURE__ */ p("h2", {
|
|
932
949
|
className: "mb-4 text-sm font-semibold uppercase tracking-wider text-text-muted",
|
|
933
950
|
children: "Preview"
|
|
934
|
-
}), /* @__PURE__ */
|
|
951
|
+
}), /* @__PURE__ */ m("div", {
|
|
935
952
|
className: "flex gap-4 overflow-x-auto pb-2",
|
|
936
953
|
style: { scrollSnapType: "x mandatory" },
|
|
937
|
-
children: [K.screenshots.map((e, t) => /* @__PURE__ */
|
|
954
|
+
children: [K.screenshots.map((e, t) => /* @__PURE__ */ p("div", {
|
|
938
955
|
className: "relative flex-shrink-0 overflow-hidden rounded-2xl shadow-lg",
|
|
939
956
|
style: {
|
|
940
957
|
width: "72vw",
|
|
@@ -943,19 +960,19 @@ var Ee = (e, t) => ({
|
|
|
943
960
|
aspectRatio: "16/9",
|
|
944
961
|
scrollSnapAlign: "start"
|
|
945
962
|
},
|
|
946
|
-
children: /* @__PURE__ */
|
|
963
|
+
children: /* @__PURE__ */ p("img", {
|
|
947
964
|
src: e,
|
|
948
965
|
alt: `Screenshot ${t + 1}`,
|
|
949
966
|
className: "size-full object-cover"
|
|
950
967
|
})
|
|
951
|
-
}, t)), /* @__PURE__ */
|
|
968
|
+
}, t)), /* @__PURE__ */ p("div", { className: "flex-shrink-0 w-2" })]
|
|
952
969
|
})]
|
|
953
970
|
})
|
|
954
971
|
}),
|
|
955
|
-
/* @__PURE__ */
|
|
972
|
+
/* @__PURE__ */ m("main", {
|
|
956
973
|
className: "mx-auto max-w-7xl px-6 py-8",
|
|
957
974
|
children: [
|
|
958
|
-
/* @__PURE__ */
|
|
975
|
+
/* @__PURE__ */ m(Ce, {
|
|
959
976
|
className: "mb-6",
|
|
960
977
|
children: [
|
|
961
978
|
"Everything you need to decide whether to install ",
|
|
@@ -963,7 +980,7 @@ var Ee = (e, t) => ({
|
|
|
963
980
|
": what it does, screenshots, pricing, the permissions and integrations it needs, and real customer reviews. When you're ready, install it (free apps) or buy it, then add it to a workspace — and leave a review once you've used it."
|
|
964
981
|
]
|
|
965
982
|
}),
|
|
966
|
-
/* @__PURE__ */
|
|
983
|
+
/* @__PURE__ */ p(Se, {
|
|
967
984
|
className: "mb-8",
|
|
968
985
|
storageKey: "store-product-detail",
|
|
969
986
|
steps: [
|
|
@@ -972,13 +989,13 @@ var Ee = (e, t) => ({
|
|
|
972
989
|
label: "Install this app",
|
|
973
990
|
description: "It’s free — add it to a workspace in a couple of clicks.",
|
|
974
991
|
onClick: B,
|
|
975
|
-
done:
|
|
992
|
+
done: v
|
|
976
993
|
} : {
|
|
977
994
|
id: "buy",
|
|
978
995
|
label: W ? "Install to a workspace" : "Buy or add to cart",
|
|
979
996
|
description: W ? "You already own this — install it where you need it." : "Purchase now, or add it to your cart to check out later.",
|
|
980
997
|
onClick: W ? B : ft,
|
|
981
|
-
done:
|
|
998
|
+
done: v
|
|
982
999
|
},
|
|
983
1000
|
...J.length > 0 ? [{
|
|
984
1001
|
id: "permissions",
|
|
@@ -994,66 +1011,66 @@ var Ee = (e, t) => ({
|
|
|
994
1011
|
}
|
|
995
1012
|
]
|
|
996
1013
|
}),
|
|
997
|
-
/* @__PURE__ */
|
|
1014
|
+
/* @__PURE__ */ m("div", {
|
|
998
1015
|
className: "flex flex-col gap-8 lg:flex-row",
|
|
999
|
-
children: [/* @__PURE__ */
|
|
1016
|
+
children: [/* @__PURE__ */ m("div", {
|
|
1000
1017
|
className: "flex-1 lg:max-w-3xl",
|
|
1001
1018
|
children: [
|
|
1002
|
-
/* @__PURE__ */
|
|
1019
|
+
/* @__PURE__ */ m("section", {
|
|
1003
1020
|
className: "mb-8",
|
|
1004
1021
|
children: [
|
|
1005
|
-
/* @__PURE__ */
|
|
1022
|
+
/* @__PURE__ */ p("div", {
|
|
1006
1023
|
className: "mb-4 flex items-center justify-between text-left",
|
|
1007
|
-
children: /* @__PURE__ */
|
|
1024
|
+
children: /* @__PURE__ */ p("h2", {
|
|
1008
1025
|
className: "text-lg font-medium text-text-primary",
|
|
1009
1026
|
children: "About this app"
|
|
1010
1027
|
})
|
|
1011
1028
|
}),
|
|
1012
|
-
/* @__PURE__ */
|
|
1029
|
+
/* @__PURE__ */ m("div", {
|
|
1013
1030
|
className: "text-sm leading-relaxed text-text-secondary",
|
|
1014
|
-
children: [/* @__PURE__ */
|
|
1015
|
-
className:
|
|
1016
|
-
children: /* @__PURE__ */
|
|
1017
|
-
}), ((K.longDescription || K.description)?.length ?? 0) > 200 && /* @__PURE__ */
|
|
1031
|
+
children: [/* @__PURE__ */ p("div", {
|
|
1032
|
+
className: x ? "" : "line-clamp-4",
|
|
1033
|
+
children: /* @__PURE__ */ p(ie, { children: K.longDescription || K.description || "No description available." })
|
|
1034
|
+
}), ((K.longDescription || K.description)?.length ?? 0) > 200 && /* @__PURE__ */ p("button", {
|
|
1018
1035
|
type: "button",
|
|
1019
|
-
onClick: () =>
|
|
1036
|
+
onClick: () => qe(!x),
|
|
1020
1037
|
className: "cursor-pointer mt-3 text-sm font-medium text-text-link",
|
|
1021
|
-
children:
|
|
1038
|
+
children: x ? "Show less" : "Show more"
|
|
1022
1039
|
})]
|
|
1023
1040
|
}),
|
|
1024
|
-
K.tags && K.tags.length > 0 && /* @__PURE__ */
|
|
1041
|
+
K.tags && K.tags.length > 0 && /* @__PURE__ */ p("div", {
|
|
1025
1042
|
className: "mt-4 flex flex-wrap gap-2",
|
|
1026
|
-
children: K.tags.map((e) => /* @__PURE__ */
|
|
1043
|
+
children: K.tags.map((e) => /* @__PURE__ */ p("span", {
|
|
1027
1044
|
className: "rounded-full border border-border-seam px-3 py-1.5 text-xs text-text-muted transition-colors hover:bg-bg-sunken",
|
|
1028
1045
|
children: e
|
|
1029
1046
|
}, e))
|
|
1030
1047
|
})
|
|
1031
1048
|
]
|
|
1032
1049
|
}),
|
|
1033
|
-
/* @__PURE__ */
|
|
1050
|
+
/* @__PURE__ */ m("section", {
|
|
1034
1051
|
id: "ratings-reviews",
|
|
1035
1052
|
className: "mb-8 scroll-mt-6",
|
|
1036
1053
|
children: [
|
|
1037
|
-
/* @__PURE__ */
|
|
1054
|
+
/* @__PURE__ */ p("div", {
|
|
1038
1055
|
className: "mb-4 flex items-center justify-between text-left",
|
|
1039
|
-
children: /* @__PURE__ */
|
|
1056
|
+
children: /* @__PURE__ */ p("h2", {
|
|
1040
1057
|
className: "text-lg font-medium text-text-primary",
|
|
1041
1058
|
children: "Ratings & Reviews"
|
|
1042
1059
|
})
|
|
1043
1060
|
}),
|
|
1044
|
-
/* @__PURE__ */
|
|
1061
|
+
/* @__PURE__ */ m(h, {
|
|
1045
1062
|
treatment: "insight",
|
|
1046
1063
|
className: "p-5",
|
|
1047
|
-
children: [V && V.length > 0 ? /* @__PURE__ */
|
|
1064
|
+
children: [V && V.length > 0 ? /* @__PURE__ */ m("div", {
|
|
1048
1065
|
className: "flex items-start gap-8",
|
|
1049
|
-
children: [/* @__PURE__ */
|
|
1066
|
+
children: [/* @__PURE__ */ m("div", {
|
|
1050
1067
|
className: "text-center",
|
|
1051
1068
|
children: [
|
|
1052
|
-
/* @__PURE__ */
|
|
1069
|
+
/* @__PURE__ */ p("p", {
|
|
1053
1070
|
className: "text-5xl font-light tabular-nums text-text-primary",
|
|
1054
1071
|
children: (K.rating || 0).toFixed(1)
|
|
1055
1072
|
}),
|
|
1056
|
-
/* @__PURE__ */
|
|
1073
|
+
/* @__PURE__ */ p("div", {
|
|
1057
1074
|
className: "my-2 flex justify-center gap-0.5",
|
|
1058
1075
|
children: [
|
|
1059
1076
|
1,
|
|
@@ -1061,21 +1078,21 @@ var Ee = (e, t) => ({
|
|
|
1061
1078
|
3,
|
|
1062
1079
|
4,
|
|
1063
1080
|
5
|
|
1064
|
-
].map((e) => /* @__PURE__ */
|
|
1081
|
+
].map((e) => /* @__PURE__ */ p(u, { className: `size-4 ${e <= Math.round(K.rating || 0) ? "fill-current text-status-warning-text" : "text-text-muted"}` }, e))
|
|
1065
1082
|
}),
|
|
1066
|
-
/* @__PURE__ */
|
|
1083
|
+
/* @__PURE__ */ m("p", {
|
|
1067
1084
|
className: "text-sm text-text-muted",
|
|
1068
1085
|
children: [n(xt || K.reviewCount), " reviews"]
|
|
1069
1086
|
})
|
|
1070
1087
|
]
|
|
1071
|
-
}), St.length > 0 && /* @__PURE__ */
|
|
1088
|
+
}), St.length > 0 && /* @__PURE__ */ p("div", {
|
|
1072
1089
|
className: "flex-1 space-y-1.5",
|
|
1073
|
-
children: St.map((e) => /* @__PURE__ */
|
|
1090
|
+
children: St.map((e) => /* @__PURE__ */ p(Ee, { ...e }, e.stars))
|
|
1074
1091
|
})]
|
|
1075
|
-
}) : /* @__PURE__ */
|
|
1092
|
+
}) : /* @__PURE__ */ m("div", {
|
|
1076
1093
|
className: "flex flex-col items-center justify-center py-6 text-center",
|
|
1077
1094
|
children: [
|
|
1078
|
-
/* @__PURE__ */
|
|
1095
|
+
/* @__PURE__ */ p("div", {
|
|
1079
1096
|
className: "mb-3 flex gap-0.5",
|
|
1080
1097
|
children: [
|
|
1081
1098
|
1,
|
|
@@ -1083,37 +1100,37 @@ var Ee = (e, t) => ({
|
|
|
1083
1100
|
3,
|
|
1084
1101
|
4,
|
|
1085
1102
|
5
|
|
1086
|
-
].map((e) => /* @__PURE__ */
|
|
1103
|
+
].map((e) => /* @__PURE__ */ p(u, { className: "size-5 text-border-default" }, e))
|
|
1087
1104
|
}),
|
|
1088
|
-
/* @__PURE__ */
|
|
1105
|
+
/* @__PURE__ */ p("p", {
|
|
1089
1106
|
className: "font-medium text-text-primary",
|
|
1090
1107
|
children: "No reviews yet"
|
|
1091
1108
|
}),
|
|
1092
|
-
/* @__PURE__ */
|
|
1109
|
+
/* @__PURE__ */ p("p", {
|
|
1093
1110
|
className: "mt-1 text-sm text-text-muted",
|
|
1094
1111
|
children: "Be the first to share your experience with this app."
|
|
1095
1112
|
})
|
|
1096
1113
|
]
|
|
1097
|
-
}), /* @__PURE__ */
|
|
1114
|
+
}), /* @__PURE__ */ m("div", {
|
|
1098
1115
|
className: "mt-6 border-t border-border-seam pt-4",
|
|
1099
|
-
children: [
|
|
1100
|
-
role:
|
|
1101
|
-
className: `mb-3 rounded-lg px-3 py-2 text-sm ${
|
|
1102
|
-
children:
|
|
1103
|
-
}),
|
|
1116
|
+
children: [Qe && /* @__PURE__ */ p("p", {
|
|
1117
|
+
role: $e === "success" ? "status" : "alert",
|
|
1118
|
+
className: `mb-3 rounded-lg px-3 py-2 text-sm ${$e === "success" ? "bg-status-success-bg-subtle text-status-success-text" : "bg-status-error-bg-subtle text-status-error-text"}`,
|
|
1119
|
+
children: Qe
|
|
1120
|
+
}), v || I?.userReview ? /* @__PURE__ */ m("div", {
|
|
1104
1121
|
className: "space-y-4",
|
|
1105
|
-
children: [/* @__PURE__ */
|
|
1122
|
+
children: [/* @__PURE__ */ p("button", {
|
|
1106
1123
|
type: "button",
|
|
1107
|
-
onClick: () =>
|
|
1124
|
+
onClick: () => O ? k(!1) : _t(),
|
|
1108
1125
|
className: "w-full cursor-pointer py-2 text-center text-sm font-medium text-text-primary transition-colors hover:text-text-link",
|
|
1109
|
-
children: I?.userReview ?
|
|
1110
|
-
}),
|
|
1126
|
+
children: I?.userReview ? O ? "Cancel review editing" : "Edit your review" : O ? "Cancel review" : "Write a Review"
|
|
1127
|
+
}), O && /* @__PURE__ */ m("div", {
|
|
1111
1128
|
className: "rounded-xl border border-border-seam bg-bg-sunken p-4",
|
|
1112
1129
|
children: [
|
|
1113
|
-
/* @__PURE__ */
|
|
1130
|
+
/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1114
1131
|
className: "text-sm font-medium text-text-primary",
|
|
1115
1132
|
children: "Your rating"
|
|
1116
|
-
}), /* @__PURE__ */
|
|
1133
|
+
}), /* @__PURE__ */ p("div", {
|
|
1117
1134
|
className: "mt-2 flex flex-wrap gap-2",
|
|
1118
1135
|
children: [
|
|
1119
1136
|
1,
|
|
@@ -1121,29 +1138,29 @@ var Ee = (e, t) => ({
|
|
|
1121
1138
|
3,
|
|
1122
1139
|
4,
|
|
1123
1140
|
5
|
|
1124
|
-
].map((e) => /* @__PURE__ */
|
|
1141
|
+
].map((e) => /* @__PURE__ */ m("button", {
|
|
1125
1142
|
type: "button",
|
|
1126
1143
|
onClick: () => P(e),
|
|
1127
1144
|
className: `cursor-pointer rounded-full border px-3 py-1.5 text-sm transition-colors ${N === e ? "border-action-primary-border bg-action-primary-bg text-action-primary-text" : "border-border-default bg-bg-surface text-text-primary hover:bg-bg-surface"}`,
|
|
1128
1145
|
children: [e, " ★"]
|
|
1129
1146
|
}, e))
|
|
1130
1147
|
})] }),
|
|
1131
|
-
/* @__PURE__ */
|
|
1148
|
+
/* @__PURE__ */ m("label", {
|
|
1132
1149
|
className: "mt-4 block text-sm font-medium text-text-primary",
|
|
1133
|
-
children: ["Title", /* @__PURE__ */
|
|
1150
|
+
children: ["Title", /* @__PURE__ */ p("input", {
|
|
1134
1151
|
"aria-label": "Review title",
|
|
1135
|
-
value:
|
|
1136
|
-
onChange: (e) =>
|
|
1152
|
+
value: A,
|
|
1153
|
+
onChange: (e) => j(e.target.value),
|
|
1137
1154
|
className: "mt-2 w-full rounded-lg border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary outline-none focus:border-action-primary-border",
|
|
1138
1155
|
placeholder: "Summarize your experience"
|
|
1139
1156
|
})]
|
|
1140
1157
|
}),
|
|
1141
|
-
/* @__PURE__ */
|
|
1158
|
+
/* @__PURE__ */ m("label", {
|
|
1142
1159
|
className: "mt-4 block text-sm font-medium text-text-primary",
|
|
1143
|
-
children: ["Review", /* @__PURE__ */
|
|
1160
|
+
children: ["Review", /* @__PURE__ */ p("textarea", {
|
|
1144
1161
|
"aria-label": "Review body",
|
|
1145
|
-
value:
|
|
1146
|
-
onChange: (e) =>
|
|
1162
|
+
value: M,
|
|
1163
|
+
onChange: (e) => et(e.target.value),
|
|
1147
1164
|
rows: 4,
|
|
1148
1165
|
required: !0,
|
|
1149
1166
|
"aria-required": "true",
|
|
@@ -1151,130 +1168,130 @@ var Ee = (e, t) => ({
|
|
|
1151
1168
|
placeholder: "What worked well? What should improve?"
|
|
1152
1169
|
})]
|
|
1153
1170
|
}),
|
|
1154
|
-
/* @__PURE__ */
|
|
1171
|
+
/* @__PURE__ */ m("div", {
|
|
1155
1172
|
className: "mt-4 flex flex-wrap gap-3",
|
|
1156
|
-
children: [/* @__PURE__ */
|
|
1173
|
+
children: [/* @__PURE__ */ p("button", {
|
|
1157
1174
|
type: "button",
|
|
1158
1175
|
onClick: vt,
|
|
1159
|
-
disabled:
|
|
1176
|
+
disabled: Be || He,
|
|
1160
1177
|
className: "cursor-pointer rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",
|
|
1161
|
-
children:
|
|
1162
|
-
}), I?.userReview && /* @__PURE__ */
|
|
1178
|
+
children: Be || He ? "Saving..." : I?.userReview ? "Update Review" : "Submit Review"
|
|
1179
|
+
}), I?.userReview && /* @__PURE__ */ p("button", {
|
|
1163
1180
|
type: "button",
|
|
1164
1181
|
onClick: yt,
|
|
1165
|
-
disabled:
|
|
1182
|
+
disabled: We,
|
|
1166
1183
|
className: "cursor-pointer rounded-lg border border-status-error-border px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-60",
|
|
1167
|
-
children:
|
|
1184
|
+
children: We ? "Removing..." : "Delete Review"
|
|
1168
1185
|
})]
|
|
1169
1186
|
})
|
|
1170
1187
|
]
|
|
1171
1188
|
})]
|
|
1172
|
-
}) : /* @__PURE__ */
|
|
1189
|
+
}) : /* @__PURE__ */ p("p", {
|
|
1173
1190
|
className: "text-center text-sm text-text-muted",
|
|
1174
1191
|
children: "Install this app to leave a review."
|
|
1175
1192
|
})]
|
|
1176
1193
|
})]
|
|
1177
1194
|
}),
|
|
1178
|
-
V && V.length > 0 && /* @__PURE__ */
|
|
1195
|
+
V && V.length > 0 && /* @__PURE__ */ m("div", {
|
|
1179
1196
|
className: "mt-4 space-y-3",
|
|
1180
|
-
children: [/* @__PURE__ */
|
|
1197
|
+
children: [/* @__PURE__ */ p("ul", {
|
|
1181
1198
|
className: "space-y-3",
|
|
1182
|
-
children: (
|
|
1199
|
+
children: (S ? V : V.slice(0, 2)).map((e) => /* @__PURE__ */ p("li", { children: /* @__PURE__ */ p(De, {
|
|
1183
1200
|
review: e,
|
|
1184
1201
|
onMarkHelpful: bt,
|
|
1185
|
-
markingHelpful:
|
|
1202
|
+
markingHelpful: Ke && tt === e.id
|
|
1186
1203
|
}) }, e.id))
|
|
1187
|
-
}), V.length > 2 && /* @__PURE__ */
|
|
1204
|
+
}), V.length > 2 && /* @__PURE__ */ p("button", {
|
|
1188
1205
|
type: "button",
|
|
1189
|
-
onClick: () =>
|
|
1206
|
+
onClick: () => Je(!S),
|
|
1190
1207
|
className: "cursor-pointer text-sm font-medium text-text-link",
|
|
1191
|
-
children:
|
|
1208
|
+
children: S ? "Show less" : `Show all ${V.length} reviews`
|
|
1192
1209
|
})]
|
|
1193
1210
|
}),
|
|
1194
|
-
(!V || V.length === 0) && /* @__PURE__ */
|
|
1211
|
+
(!V || V.length === 0) && /* @__PURE__ */ p("p", {
|
|
1195
1212
|
className: "mt-4 text-sm text-text-muted",
|
|
1196
1213
|
children: "No reviews yet. Be the first to review!"
|
|
1197
1214
|
})
|
|
1198
1215
|
]
|
|
1199
1216
|
}),
|
|
1200
|
-
J.length > 0 && /* @__PURE__ */
|
|
1217
|
+
J.length > 0 && /* @__PURE__ */ m("section", {
|
|
1201
1218
|
id: "about-permissions",
|
|
1202
1219
|
className: "mb-8 scroll-mt-6",
|
|
1203
|
-
children: [/* @__PURE__ */
|
|
1220
|
+
children: [/* @__PURE__ */ p("h2", {
|
|
1204
1221
|
className: "mb-4 text-lg font-medium text-text-primary",
|
|
1205
1222
|
children: "Required Permissions"
|
|
1206
|
-
}), /* @__PURE__ */
|
|
1223
|
+
}), /* @__PURE__ */ p("div", {
|
|
1207
1224
|
className: "space-y-2",
|
|
1208
|
-
children: J.map((e) => /* @__PURE__ */
|
|
1225
|
+
children: J.map((e) => /* @__PURE__ */ m("div", {
|
|
1209
1226
|
className: "flex items-center gap-3 rounded-lg bg-bg-surface px-4 py-3",
|
|
1210
|
-
children: [/* @__PURE__ */
|
|
1227
|
+
children: [/* @__PURE__ */ p(l, { className: "size-5 text-status-success-text" }), /* @__PURE__ */ p("span", {
|
|
1211
1228
|
className: "text-sm text-text-primary",
|
|
1212
1229
|
children: e
|
|
1213
1230
|
})]
|
|
1214
1231
|
}, e))
|
|
1215
1232
|
})]
|
|
1216
1233
|
}),
|
|
1217
|
-
Ct.length > 0 && /* @__PURE__ */
|
|
1234
|
+
Ct.length > 0 && /* @__PURE__ */ m("section", {
|
|
1218
1235
|
className: "mb-8",
|
|
1219
|
-
children: [/* @__PURE__ */
|
|
1236
|
+
children: [/* @__PURE__ */ p("h2", {
|
|
1220
1237
|
className: "mb-4 text-lg font-medium text-text-primary",
|
|
1221
1238
|
children: "Integrations"
|
|
1222
|
-
}), /* @__PURE__ */
|
|
1239
|
+
}), /* @__PURE__ */ p("div", {
|
|
1223
1240
|
className: "flex flex-wrap gap-2",
|
|
1224
|
-
children: Ct.map((e) => /* @__PURE__ */
|
|
1241
|
+
children: Ct.map((e) => /* @__PURE__ */ p("span", {
|
|
1225
1242
|
className: "rounded-lg bg-bg-surface px-4 py-2 text-sm font-medium text-text-primary",
|
|
1226
1243
|
children: e
|
|
1227
1244
|
}, e))
|
|
1228
1245
|
})]
|
|
1229
1246
|
}),
|
|
1230
|
-
/* @__PURE__ */
|
|
1247
|
+
/* @__PURE__ */ m("section", {
|
|
1231
1248
|
className: "mb-8",
|
|
1232
|
-
children: [/* @__PURE__ */
|
|
1249
|
+
children: [/* @__PURE__ */ p("h2", {
|
|
1233
1250
|
className: "mb-4 text-lg font-medium text-text-primary",
|
|
1234
1251
|
children: "Additional Information"
|
|
1235
|
-
}), /* @__PURE__ */
|
|
1252
|
+
}), /* @__PURE__ */ m(h, {
|
|
1236
1253
|
treatment: "metric",
|
|
1237
1254
|
className: "grid grid-cols-2 gap-6 p-5 md:grid-cols-3",
|
|
1238
1255
|
children: [
|
|
1239
|
-
K.manifestVersion && /* @__PURE__ */
|
|
1256
|
+
K.manifestVersion && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1240
1257
|
className: "text-xs text-text-muted",
|
|
1241
1258
|
children: "Version"
|
|
1242
|
-
}), /* @__PURE__ */
|
|
1259
|
+
}), /* @__PURE__ */ p("p", {
|
|
1243
1260
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1244
1261
|
children: K.manifestVersion
|
|
1245
1262
|
})] }),
|
|
1246
|
-
/* @__PURE__ */
|
|
1263
|
+
/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1247
1264
|
className: "text-xs text-text-muted",
|
|
1248
1265
|
children: "Type"
|
|
1249
|
-
}), /* @__PURE__ */
|
|
1266
|
+
}), /* @__PURE__ */ p("p", {
|
|
1250
1267
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1251
1268
|
children: K.type
|
|
1252
1269
|
})] }),
|
|
1253
|
-
K.publishedAt && /* @__PURE__ */
|
|
1270
|
+
K.publishedAt && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1254
1271
|
className: "text-xs text-text-muted",
|
|
1255
1272
|
children: "Published"
|
|
1256
|
-
}), /* @__PURE__ */
|
|
1273
|
+
}), /* @__PURE__ */ p("p", {
|
|
1257
1274
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1258
1275
|
children: new Date(K.publishedAt).toLocaleDateString()
|
|
1259
1276
|
})] }),
|
|
1260
|
-
/* @__PURE__ */
|
|
1277
|
+
/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1261
1278
|
className: "text-xs text-text-muted",
|
|
1262
1279
|
children: "Updated"
|
|
1263
|
-
}), /* @__PURE__ */
|
|
1280
|
+
}), /* @__PURE__ */ p("p", {
|
|
1264
1281
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1265
1282
|
children: new Date(K.updatedAt).toLocaleDateString()
|
|
1266
1283
|
})] }),
|
|
1267
|
-
K.license && /* @__PURE__ */
|
|
1284
|
+
K.license && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1268
1285
|
className: "text-xs text-text-muted",
|
|
1269
1286
|
children: "License"
|
|
1270
|
-
}), /* @__PURE__ */
|
|
1287
|
+
}), /* @__PURE__ */ p("p", {
|
|
1271
1288
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1272
1289
|
children: K.license
|
|
1273
1290
|
})] }),
|
|
1274
|
-
K.minPlatformVersion && /* @__PURE__ */
|
|
1291
|
+
K.minPlatformVersion && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
1275
1292
|
className: "text-xs text-text-muted",
|
|
1276
1293
|
children: "Min Platform Version"
|
|
1277
|
-
}), /* @__PURE__ */
|
|
1294
|
+
}), /* @__PURE__ */ p("p", {
|
|
1278
1295
|
className: "mt-1 text-sm font-medium text-text-primary",
|
|
1279
1296
|
children: K.minPlatformVersion
|
|
1280
1297
|
})] })
|
|
@@ -1282,32 +1299,32 @@ var Ee = (e, t) => ({
|
|
|
1282
1299
|
})]
|
|
1283
1300
|
})
|
|
1284
1301
|
]
|
|
1285
|
-
}), /* @__PURE__ */
|
|
1302
|
+
}), /* @__PURE__ */ m("div", {
|
|
1286
1303
|
className: "w-full lg:w-80",
|
|
1287
1304
|
children: [
|
|
1288
|
-
(K.documentationUrl || K.repositoryUrl || R?.email) && /* @__PURE__ */
|
|
1305
|
+
(K.documentationUrl || K.repositoryUrl || R?.email) && /* @__PURE__ */ m(h, {
|
|
1289
1306
|
className: "mb-6 p-4",
|
|
1290
|
-
children: [/* @__PURE__ */
|
|
1307
|
+
children: [/* @__PURE__ */ p("h3", {
|
|
1291
1308
|
className: "font-medium text-text-primary",
|
|
1292
1309
|
children: "App support"
|
|
1293
|
-
}), /* @__PURE__ */
|
|
1310
|
+
}), /* @__PURE__ */ m("div", {
|
|
1294
1311
|
className: "mt-3 space-y-2 text-sm",
|
|
1295
1312
|
children: [
|
|
1296
|
-
K.documentationUrl && /* @__PURE__ */
|
|
1313
|
+
K.documentationUrl && /* @__PURE__ */ p("a", {
|
|
1297
1314
|
href: K.documentationUrl,
|
|
1298
1315
|
target: "_blank",
|
|
1299
1316
|
rel: "noreferrer",
|
|
1300
1317
|
className: "block text-text-link hover:underline",
|
|
1301
1318
|
children: "Documentation"
|
|
1302
1319
|
}),
|
|
1303
|
-
K.repositoryUrl && /* @__PURE__ */
|
|
1320
|
+
K.repositoryUrl && /* @__PURE__ */ p("a", {
|
|
1304
1321
|
href: K.repositoryUrl,
|
|
1305
1322
|
target: "_blank",
|
|
1306
1323
|
rel: "noreferrer",
|
|
1307
1324
|
className: "block text-text-link hover:underline",
|
|
1308
1325
|
children: "Source repository"
|
|
1309
1326
|
}),
|
|
1310
|
-
R?.email && /* @__PURE__ */
|
|
1327
|
+
R?.email && /* @__PURE__ */ p("a", {
|
|
1311
1328
|
href: `mailto:${R.email}`,
|
|
1312
1329
|
className: "block text-text-link hover:underline",
|
|
1313
1330
|
children: "Contact publisher"
|
|
@@ -1315,66 +1332,81 @@ var Ee = (e, t) => ({
|
|
|
1315
1332
|
]
|
|
1316
1333
|
})]
|
|
1317
1334
|
}),
|
|
1318
|
-
R && /* @__PURE__ */ p(
|
|
1335
|
+
R && /* @__PURE__ */ p(h, {
|
|
1319
1336
|
className: "mb-6 p-4",
|
|
1320
|
-
children:
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1337
|
+
children: (() => {
|
|
1338
|
+
let e = R.developerOrganization, t = e?.name || R.name, n = e?.logoUrl || R.logoUrl, r = e?.description || R.bio, i = e?.isVerified || R.isVerified;
|
|
1339
|
+
return /* @__PURE__ */ m(f, { children: [
|
|
1340
|
+
/* @__PURE__ */ m("div", {
|
|
1341
|
+
className: "flex items-center gap-2.5",
|
|
1342
|
+
children: [n ? /* @__PURE__ */ p("img", {
|
|
1343
|
+
src: n,
|
|
1344
|
+
alt: t,
|
|
1345
|
+
className: "size-8 rounded-lg object-cover"
|
|
1346
|
+
}) : /* @__PURE__ */ p("div", {
|
|
1347
|
+
className: "flex size-8 items-center justify-center rounded-lg bg-bg-sunken text-sm font-bold text-text-muted",
|
|
1348
|
+
children: t.charAt(0)
|
|
1349
|
+
}), /* @__PURE__ */ p("div", {
|
|
1350
|
+
className: "flex-1 min-w-0",
|
|
1351
|
+
children: /* @__PURE__ */ m("div", {
|
|
1352
|
+
className: "flex items-center gap-1.5",
|
|
1353
|
+
children: [/* @__PURE__ */ p("span", {
|
|
1354
|
+
className: "font-medium text-text-primary truncate",
|
|
1355
|
+
children: t
|
|
1356
|
+
}), i && /* @__PURE__ */ p(l, { className: "size-3.5 text-status-success-text shrink-0" })]
|
|
1357
|
+
})
|
|
1358
|
+
})]
|
|
1359
|
+
}),
|
|
1360
|
+
r && /* @__PURE__ */ p("p", {
|
|
1361
|
+
className: "mt-2 text-sm text-text-muted",
|
|
1362
|
+
children: r
|
|
1363
|
+
}),
|
|
1364
|
+
R.websiteUrl && /* @__PURE__ */ p("a", {
|
|
1365
|
+
href: R.websiteUrl,
|
|
1366
|
+
target: "_blank",
|
|
1367
|
+
rel: "noreferrer",
|
|
1368
|
+
className: "mt-3 inline-block text-sm text-text-link hover:underline",
|
|
1369
|
+
children: "Visit website"
|
|
1370
|
+
})
|
|
1371
|
+
] });
|
|
1372
|
+
})()
|
|
1341
1373
|
}),
|
|
1342
|
-
H && H.length > 0 && /* @__PURE__ */
|
|
1374
|
+
H && H.length > 0 && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("div", {
|
|
1343
1375
|
className: "mb-4 flex items-center justify-between text-left",
|
|
1344
|
-
children: /* @__PURE__ */
|
|
1376
|
+
children: /* @__PURE__ */ p("span", {
|
|
1345
1377
|
className: "font-medium text-text-primary",
|
|
1346
1378
|
children: "Similar apps"
|
|
1347
1379
|
})
|
|
1348
|
-
}), /* @__PURE__ */
|
|
1380
|
+
}), /* @__PURE__ */ p("div", {
|
|
1349
1381
|
className: "space-y-3",
|
|
1350
|
-
children: H.slice(0, 4).map((e) => /* @__PURE__ */
|
|
1382
|
+
children: H.slice(0, 4).map((e) => /* @__PURE__ */ m("button", {
|
|
1351
1383
|
type: "button",
|
|
1352
|
-
onClick: () =>
|
|
1384
|
+
onClick: () => d(`${g}/marketplace/product/${e.id}`),
|
|
1353
1385
|
className: "flex w-full cursor-pointer items-center gap-3 rounded-lg p-2 text-left transition-colors hover:bg-bg-sunken",
|
|
1354
|
-
children: [e.icon ? /* @__PURE__ */
|
|
1386
|
+
children: [e.icon ? /* @__PURE__ */ p("img", {
|
|
1355
1387
|
src: e.icon,
|
|
1356
1388
|
alt: e.name,
|
|
1357
1389
|
className: "size-12 rounded-xl object-cover"
|
|
1358
|
-
}) : /* @__PURE__ */
|
|
1390
|
+
}) : /* @__PURE__ */ p("div", {
|
|
1359
1391
|
className: "flex size-12 items-center justify-center rounded-xl bg-bg-sunken text-lg font-bold text-text-muted",
|
|
1360
1392
|
children: e.name.charAt(0)
|
|
1361
|
-
}), /* @__PURE__ */
|
|
1393
|
+
}), /* @__PURE__ */ m("div", {
|
|
1362
1394
|
className: "flex-1 overflow-hidden",
|
|
1363
1395
|
children: [
|
|
1364
|
-
/* @__PURE__ */
|
|
1396
|
+
/* @__PURE__ */ p("p", {
|
|
1365
1397
|
className: "truncate text-sm font-medium text-text-primary",
|
|
1366
1398
|
children: e.name
|
|
1367
1399
|
}),
|
|
1368
|
-
/* @__PURE__ */
|
|
1400
|
+
/* @__PURE__ */ p("p", {
|
|
1369
1401
|
className: "text-xs text-text-muted",
|
|
1370
1402
|
children: R?.name || "Unknown"
|
|
1371
1403
|
}),
|
|
1372
|
-
(e.reviewCount ?? 0) > 0 && /* @__PURE__ */
|
|
1404
|
+
(e.reviewCount ?? 0) > 0 && /* @__PURE__ */ m("div", {
|
|
1373
1405
|
className: "flex items-center gap-1",
|
|
1374
|
-
children: [/* @__PURE__ */
|
|
1406
|
+
children: [/* @__PURE__ */ p("span", {
|
|
1375
1407
|
className: "text-xs text-text-muted",
|
|
1376
1408
|
children: (e.rating || 0).toFixed(1)
|
|
1377
|
-
}), /* @__PURE__ */
|
|
1409
|
+
}), /* @__PURE__ */ p(u, { className: "size-3 fill-current text-status-warning-text" })]
|
|
1378
1410
|
})
|
|
1379
1411
|
]
|
|
1380
1412
|
})]
|
|
@@ -1385,7 +1417,7 @@ var Ee = (e, t) => ({
|
|
|
1385
1417
|
})
|
|
1386
1418
|
]
|
|
1387
1419
|
}),
|
|
1388
|
-
K && /* @__PURE__ */
|
|
1420
|
+
K && /* @__PURE__ */ p(ae, {
|
|
1389
1421
|
isOpen: rt,
|
|
1390
1422
|
onClose: () => it(!1),
|
|
1391
1423
|
app: {
|
|
@@ -1406,6 +1438,6 @@ var Ee = (e, t) => ({
|
|
|
1406
1438
|
});
|
|
1407
1439
|
};
|
|
1408
1440
|
//#endregion
|
|
1409
|
-
export {
|
|
1441
|
+
export { Ae as ProductDetailPage };
|
|
1410
1442
|
|
|
1411
1443
|
//# sourceMappingURL=ProductDetailPage.js.map
|