@burdenoff/microfe-store 2026.703.1 → 2026.703.2

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