@burdenoff/website-sdk 2026.710.1 → 2026.716.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.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +690 -84
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +690 -84
- package/dist/index.mjs.map +1 -1
- package/dist/product-card-Dm1zkFkm.d.mts +157 -0
- package/dist/product-card-Dm1zkFkm.d.ts +157 -0
- package/dist/store/index.d.mts +27 -154
- package/dist/store/index.d.ts +27 -154
- package/dist/store/index.js +834 -227
- package/dist/store/index.js.map +1 -1
- package/dist/store/index.mjs +835 -229
- package/dist/store/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6240,7 +6240,11 @@ function TypeBadge({ type }) {
|
|
|
6240
6240
|
return /* @__PURE__ */ jsx("span", { className: "inline-block text-xs px-2 py-0.5 rounded-full bg-primary/10 text-primary font-medium", children: labels[type] ?? type });
|
|
6241
6241
|
}
|
|
6242
6242
|
function ProductCard({ product, onClick, href }) {
|
|
6243
|
-
const priceLabel = formatPrice2(
|
|
6243
|
+
const priceLabel = formatPrice2(
|
|
6244
|
+
product.price,
|
|
6245
|
+
product.currency,
|
|
6246
|
+
product.pricingModel
|
|
6247
|
+
);
|
|
6244
6248
|
const inner = /* @__PURE__ */ jsxs("div", { className: "group bg-card border border-border rounded-xl p-4 flex flex-col gap-3 transition-all duration-200 hover:shadow-md hover:border-primary/30 cursor-pointer h-full", children: [
|
|
6245
6249
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
6246
6250
|
/* @__PURE__ */ jsx("div", { className: "w-12 h-12 rounded-lg bg-muted flex-shrink-0 overflow-hidden", children: product.icon ? /* @__PURE__ */ jsx(
|
|
@@ -6251,11 +6255,48 @@ function ProductCard({ product, onClick, href }) {
|
|
|
6251
6255
|
"aria-hidden": "true",
|
|
6252
6256
|
className: "w-full h-full object-cover"
|
|
6253
6257
|
}
|
|
6254
|
-
) : /* @__PURE__ */ jsx("div", { className: "w-full h-full flex items-center justify-center bg-gradient-to-br from-primary/15 to-primary/5", children: /* @__PURE__ */ jsxs(
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6258
|
+
) : /* @__PURE__ */ jsx("div", { className: "w-full h-full flex items-center justify-center bg-gradient-to-br from-primary/15 to-primary/5", children: /* @__PURE__ */ jsxs(
|
|
6259
|
+
"svg",
|
|
6260
|
+
{
|
|
6261
|
+
viewBox: "0 0 32 32",
|
|
6262
|
+
className: "w-8 h-8",
|
|
6263
|
+
fill: "none",
|
|
6264
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6265
|
+
"aria-hidden": "true",
|
|
6266
|
+
children: [
|
|
6267
|
+
/* @__PURE__ */ jsx(
|
|
6268
|
+
"polygon",
|
|
6269
|
+
{
|
|
6270
|
+
points: "16,4 28,10 16,16 4,10",
|
|
6271
|
+
className: "fill-primary/30",
|
|
6272
|
+
stroke: "currentColor",
|
|
6273
|
+
strokeWidth: "0.6",
|
|
6274
|
+
strokeOpacity: "0.35"
|
|
6275
|
+
}
|
|
6276
|
+
),
|
|
6277
|
+
/* @__PURE__ */ jsx(
|
|
6278
|
+
"polygon",
|
|
6279
|
+
{
|
|
6280
|
+
points: "4,10 16,16 16,28 4,22",
|
|
6281
|
+
className: "fill-primary/15",
|
|
6282
|
+
stroke: "currentColor",
|
|
6283
|
+
strokeWidth: "0.6",
|
|
6284
|
+
strokeOpacity: "0.35"
|
|
6285
|
+
}
|
|
6286
|
+
),
|
|
6287
|
+
/* @__PURE__ */ jsx(
|
|
6288
|
+
"polygon",
|
|
6289
|
+
{
|
|
6290
|
+
points: "28,10 16,16 16,28 28,22",
|
|
6291
|
+
className: "fill-primary/20",
|
|
6292
|
+
stroke: "currentColor",
|
|
6293
|
+
strokeWidth: "0.6",
|
|
6294
|
+
strokeOpacity: "0.35"
|
|
6295
|
+
}
|
|
6296
|
+
)
|
|
6297
|
+
]
|
|
6298
|
+
}
|
|
6299
|
+
) }) }),
|
|
6259
6300
|
/* @__PURE__ */ jsx(TypeBadge, { type: product.type })
|
|
6260
6301
|
] }),
|
|
6261
6302
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
@@ -6364,7 +6405,11 @@ function FeaturedHeroCard({
|
|
|
6364
6405
|
product,
|
|
6365
6406
|
onNavigate
|
|
6366
6407
|
}) {
|
|
6367
|
-
const priceLabel = formatPrice2(
|
|
6408
|
+
const priceLabel = formatPrice2(
|
|
6409
|
+
product.price,
|
|
6410
|
+
product.currency,
|
|
6411
|
+
product.pricingModel
|
|
6412
|
+
);
|
|
6368
6413
|
return /* @__PURE__ */ jsxs(
|
|
6369
6414
|
"button",
|
|
6370
6415
|
{
|
|
@@ -6373,28 +6418,155 @@ function FeaturedHeroCard({
|
|
|
6373
6418
|
className: "group w-full text-left h-full rounded-2xl border border-border bg-card overflow-hidden hover:border-primary/40 transition-all duration-300 hover:shadow-xl hover:shadow-primary/10 flex flex-col",
|
|
6374
6419
|
children: [
|
|
6375
6420
|
/* @__PURE__ */ jsxs("div", { className: "relative h-44 sm:h-52 bg-gradient-to-br from-primary/20 via-primary/8 to-background overflow-hidden flex-shrink-0", children: [
|
|
6376
|
-
product.bannerUrl ? /* @__PURE__ */ jsx(
|
|
6377
|
-
|
|
6378
|
-
|
|
6379
|
-
|
|
6380
|
-
|
|
6381
|
-
|
|
6382
|
-
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6421
|
+
product.bannerUrl ? /* @__PURE__ */ jsx(
|
|
6422
|
+
"img",
|
|
6423
|
+
{
|
|
6424
|
+
src: product.bannerUrl,
|
|
6425
|
+
alt: "",
|
|
6426
|
+
"aria-hidden": "true",
|
|
6427
|
+
className: "w-full h-full object-cover"
|
|
6428
|
+
}
|
|
6429
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6430
|
+
/* @__PURE__ */ jsxs(
|
|
6431
|
+
"svg",
|
|
6432
|
+
{
|
|
6433
|
+
className: "absolute inset-0 w-full h-full opacity-[0.07]",
|
|
6434
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6435
|
+
"aria-hidden": "true",
|
|
6436
|
+
children: [
|
|
6437
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
6438
|
+
"pattern",
|
|
6439
|
+
{
|
|
6440
|
+
id: "fg-hero-grid",
|
|
6441
|
+
width: "36",
|
|
6442
|
+
height: "36",
|
|
6443
|
+
patternUnits: "userSpaceOnUse",
|
|
6444
|
+
children: /* @__PURE__ */ jsx(
|
|
6445
|
+
"path",
|
|
6446
|
+
{
|
|
6447
|
+
d: "M 36 0 L 0 0 0 36",
|
|
6448
|
+
fill: "none",
|
|
6449
|
+
stroke: "currentColor",
|
|
6450
|
+
strokeWidth: "1"
|
|
6451
|
+
}
|
|
6452
|
+
)
|
|
6453
|
+
}
|
|
6454
|
+
) }),
|
|
6455
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: "url(#fg-hero-grid)" })
|
|
6456
|
+
]
|
|
6457
|
+
}
|
|
6458
|
+
),
|
|
6459
|
+
/* @__PURE__ */ jsx(
|
|
6460
|
+
"div",
|
|
6461
|
+
{
|
|
6462
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
6463
|
+
"aria-hidden": "true",
|
|
6464
|
+
children: /* @__PURE__ */ jsxs(
|
|
6465
|
+
"svg",
|
|
6466
|
+
{
|
|
6467
|
+
viewBox: "0 0 64 64",
|
|
6468
|
+
className: "w-20 h-20 opacity-25",
|
|
6469
|
+
fill: "none",
|
|
6470
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6471
|
+
children: [
|
|
6472
|
+
/* @__PURE__ */ jsx(
|
|
6473
|
+
"polygon",
|
|
6474
|
+
{
|
|
6475
|
+
points: "32,8 56,20 32,32 8,20",
|
|
6476
|
+
className: "fill-primary/40",
|
|
6477
|
+
stroke: "currentColor",
|
|
6478
|
+
strokeWidth: "1",
|
|
6479
|
+
strokeOpacity: "0.5"
|
|
6480
|
+
}
|
|
6481
|
+
),
|
|
6482
|
+
/* @__PURE__ */ jsx(
|
|
6483
|
+
"polygon",
|
|
6484
|
+
{
|
|
6485
|
+
points: "8,20 32,32 32,56 8,44",
|
|
6486
|
+
className: "fill-primary/20",
|
|
6487
|
+
stroke: "currentColor",
|
|
6488
|
+
strokeWidth: "1",
|
|
6489
|
+
strokeOpacity: "0.5"
|
|
6490
|
+
}
|
|
6491
|
+
),
|
|
6492
|
+
/* @__PURE__ */ jsx(
|
|
6493
|
+
"polygon",
|
|
6494
|
+
{
|
|
6495
|
+
points: "56,20 32,32 32,56 56,44",
|
|
6496
|
+
className: "fill-primary/30",
|
|
6497
|
+
stroke: "currentColor",
|
|
6498
|
+
strokeWidth: "1",
|
|
6499
|
+
strokeOpacity: "0.5"
|
|
6500
|
+
}
|
|
6501
|
+
)
|
|
6502
|
+
]
|
|
6503
|
+
}
|
|
6504
|
+
)
|
|
6505
|
+
}
|
|
6506
|
+
)
|
|
6386
6507
|
] }),
|
|
6387
6508
|
/* @__PURE__ */ jsx("span", { className: "absolute top-3 left-3 text-xs font-semibold px-2.5 py-1 rounded-full bg-primary text-primary-foreground shadow-sm", children: "Featured" }),
|
|
6388
|
-
/* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-4 w-14 h-14 rounded-xl shadow-lg overflow-hidden border-2 border-background", children: product.icon ? /* @__PURE__ */ jsx(
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6509
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-4 w-14 h-14 rounded-xl shadow-lg overflow-hidden border-2 border-background", children: product.icon ? /* @__PURE__ */ jsx(
|
|
6510
|
+
"img",
|
|
6511
|
+
{
|
|
6512
|
+
src: product.icon,
|
|
6513
|
+
alt: "",
|
|
6514
|
+
"aria-hidden": "true",
|
|
6515
|
+
className: "w-full h-full object-cover"
|
|
6516
|
+
}
|
|
6517
|
+
) : /* @__PURE__ */ jsx("div", { className: "w-full h-full bg-gradient-to-br from-primary/25 to-primary/10 flex items-center justify-center", children: /* @__PURE__ */ jsxs(
|
|
6518
|
+
"svg",
|
|
6519
|
+
{
|
|
6520
|
+
viewBox: "0 0 32 32",
|
|
6521
|
+
className: "w-8 h-8",
|
|
6522
|
+
fill: "none",
|
|
6523
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6524
|
+
"aria-hidden": "true",
|
|
6525
|
+
children: [
|
|
6526
|
+
/* @__PURE__ */ jsx(
|
|
6527
|
+
"polygon",
|
|
6528
|
+
{
|
|
6529
|
+
points: "16,4 28,10 16,16 4,10",
|
|
6530
|
+
className: "fill-primary/40",
|
|
6531
|
+
stroke: "currentColor",
|
|
6532
|
+
strokeWidth: "0.6",
|
|
6533
|
+
strokeOpacity: "0.4"
|
|
6534
|
+
}
|
|
6535
|
+
),
|
|
6536
|
+
/* @__PURE__ */ jsx(
|
|
6537
|
+
"polygon",
|
|
6538
|
+
{
|
|
6539
|
+
points: "4,10 16,16 16,28 4,22",
|
|
6540
|
+
className: "fill-primary/20",
|
|
6541
|
+
stroke: "currentColor",
|
|
6542
|
+
strokeWidth: "0.6",
|
|
6543
|
+
strokeOpacity: "0.4"
|
|
6544
|
+
}
|
|
6545
|
+
),
|
|
6546
|
+
/* @__PURE__ */ jsx(
|
|
6547
|
+
"polygon",
|
|
6548
|
+
{
|
|
6549
|
+
points: "28,10 16,16 16,28 28,22",
|
|
6550
|
+
className: "fill-primary/30",
|
|
6551
|
+
stroke: "currentColor",
|
|
6552
|
+
strokeWidth: "0.6",
|
|
6553
|
+
strokeOpacity: "0.4"
|
|
6554
|
+
}
|
|
6555
|
+
)
|
|
6556
|
+
]
|
|
6557
|
+
}
|
|
6558
|
+
) }) })
|
|
6393
6559
|
] }),
|
|
6394
6560
|
/* @__PURE__ */ jsxs("div", { className: "p-5 flex flex-col flex-1", children: [
|
|
6395
6561
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3 mb-2", children: [
|
|
6396
6562
|
/* @__PURE__ */ jsx("h3", { className: "text-base font-bold text-foreground group-hover:text-primary transition-colors line-clamp-1", children: product.name }),
|
|
6397
|
-
/* @__PURE__ */ jsx(
|
|
6563
|
+
/* @__PURE__ */ jsx(
|
|
6564
|
+
"span",
|
|
6565
|
+
{
|
|
6566
|
+
className: `text-sm font-bold flex-shrink-0 ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
|
|
6567
|
+
children: priceLabel
|
|
6568
|
+
}
|
|
6569
|
+
)
|
|
6398
6570
|
] }),
|
|
6399
6571
|
product.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground line-clamp-2 leading-relaxed flex-1", children: product.description }),
|
|
6400
6572
|
/* @__PURE__ */ jsxs("div", { className: "mt-3 flex items-center gap-2", children: [
|
|
@@ -6415,7 +6587,10 @@ function ScrollRow({
|
|
|
6415
6587
|
}) {
|
|
6416
6588
|
const ref = useRef(null);
|
|
6417
6589
|
function scroll(dir) {
|
|
6418
|
-
ref.current?.scrollBy({
|
|
6590
|
+
ref.current?.scrollBy({
|
|
6591
|
+
left: dir === "r" ? 272 : -272,
|
|
6592
|
+
behavior: "smooth"
|
|
6593
|
+
});
|
|
6419
6594
|
}
|
|
6420
6595
|
return /* @__PURE__ */ jsxs("div", { className: "relative group/row", children: [
|
|
6421
6596
|
/* @__PURE__ */ jsx(
|
|
@@ -6425,7 +6600,19 @@ function ScrollRow({
|
|
|
6425
6600
|
onClick: () => scroll("l"),
|
|
6426
6601
|
"aria-label": "Scroll left",
|
|
6427
6602
|
className: "absolute left-0 top-1/2 -translate-y-1/2 -translate-x-4 z-10 w-8 h-8 rounded-full bg-background border border-border shadow-md items-center justify-center text-muted-foreground hover:text-primary hover:border-primary/40 transition-all hidden sm:flex opacity-0 group-hover/row:opacity-100",
|
|
6428
|
-
children: /* @__PURE__ */ jsx(
|
|
6603
|
+
children: /* @__PURE__ */ jsx(
|
|
6604
|
+
"svg",
|
|
6605
|
+
{
|
|
6606
|
+
viewBox: "0 0 16 16",
|
|
6607
|
+
className: "w-4 h-4",
|
|
6608
|
+
fill: "none",
|
|
6609
|
+
stroke: "currentColor",
|
|
6610
|
+
strokeWidth: "1.5",
|
|
6611
|
+
strokeLinecap: "round",
|
|
6612
|
+
strokeLinejoin: "round",
|
|
6613
|
+
children: /* @__PURE__ */ jsx("path", { d: "M10 3L6 8l4 5" })
|
|
6614
|
+
}
|
|
6615
|
+
)
|
|
6429
6616
|
}
|
|
6430
6617
|
),
|
|
6431
6618
|
/* @__PURE__ */ jsx(
|
|
@@ -6434,7 +6621,13 @@ function ScrollRow({
|
|
|
6434
6621
|
ref,
|
|
6435
6622
|
className: "flex gap-3 overflow-x-auto pb-1 snap-x snap-mandatory",
|
|
6436
6623
|
style: { scrollbarWidth: "none", msOverflowStyle: "none" },
|
|
6437
|
-
children: products.map((product) => /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-56 snap-start", children: /* @__PURE__ */ jsx(
|
|
6624
|
+
children: products.map((product) => /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-56 snap-start", children: /* @__PURE__ */ jsx(
|
|
6625
|
+
ProductCard,
|
|
6626
|
+
{
|
|
6627
|
+
product,
|
|
6628
|
+
onClick: () => onProductClick(product)
|
|
6629
|
+
}
|
|
6630
|
+
) }, product.id))
|
|
6438
6631
|
}
|
|
6439
6632
|
),
|
|
6440
6633
|
/* @__PURE__ */ jsx(
|
|
@@ -6444,7 +6637,19 @@ function ScrollRow({
|
|
|
6444
6637
|
onClick: () => scroll("r"),
|
|
6445
6638
|
"aria-label": "Scroll right",
|
|
6446
6639
|
className: "absolute right-0 top-1/2 -translate-y-1/2 translate-x-4 z-10 w-8 h-8 rounded-full bg-background border border-border shadow-md items-center justify-center text-muted-foreground hover:text-primary hover:border-primary/40 transition-all hidden sm:flex opacity-0 group-hover/row:opacity-100",
|
|
6447
|
-
children: /* @__PURE__ */ jsx(
|
|
6640
|
+
children: /* @__PURE__ */ jsx(
|
|
6641
|
+
"svg",
|
|
6642
|
+
{
|
|
6643
|
+
viewBox: "0 0 16 16",
|
|
6644
|
+
className: "w-4 h-4",
|
|
6645
|
+
fill: "none",
|
|
6646
|
+
stroke: "currentColor",
|
|
6647
|
+
strokeWidth: "1.5",
|
|
6648
|
+
strokeLinecap: "round",
|
|
6649
|
+
strokeLinejoin: "round",
|
|
6650
|
+
children: /* @__PURE__ */ jsx("path", { d: "M6 3l4 5-4 5" })
|
|
6651
|
+
}
|
|
6652
|
+
)
|
|
6448
6653
|
}
|
|
6449
6654
|
)
|
|
6450
6655
|
] });
|
|
@@ -6599,16 +6804,65 @@ function StoreHomePage({
|
|
|
6599
6804
|
}
|
|
6600
6805
|
),
|
|
6601
6806
|
/* @__PURE__ */ jsxs("section", { className: "relative overflow-hidden pt-14 pb-12 sm:pt-20 sm:pb-16", children: [
|
|
6602
|
-
/* @__PURE__ */ jsx(
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
|
|
6807
|
+
/* @__PURE__ */ jsx(
|
|
6808
|
+
"div",
|
|
6809
|
+
{
|
|
6810
|
+
className: "absolute inset-0 bg-gradient-to-b from-background via-primary/[0.06] to-background pointer-events-none",
|
|
6811
|
+
"aria-hidden": "true"
|
|
6812
|
+
}
|
|
6813
|
+
),
|
|
6814
|
+
/* @__PURE__ */ jsxs(
|
|
6815
|
+
"svg",
|
|
6816
|
+
{
|
|
6817
|
+
className: "absolute inset-0 w-full h-full opacity-[0.035] pointer-events-none",
|
|
6818
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6819
|
+
"aria-hidden": "true",
|
|
6820
|
+
children: [
|
|
6821
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
6822
|
+
"pattern",
|
|
6823
|
+
{
|
|
6824
|
+
id: "store-home-grid",
|
|
6825
|
+
width: "40",
|
|
6826
|
+
height: "40",
|
|
6827
|
+
patternUnits: "userSpaceOnUse",
|
|
6828
|
+
children: /* @__PURE__ */ jsx(
|
|
6829
|
+
"path",
|
|
6830
|
+
{
|
|
6831
|
+
d: "M 40 0 L 0 0 0 40",
|
|
6832
|
+
fill: "none",
|
|
6833
|
+
stroke: "currentColor",
|
|
6834
|
+
strokeWidth: "1"
|
|
6835
|
+
}
|
|
6836
|
+
)
|
|
6837
|
+
}
|
|
6838
|
+
) }),
|
|
6839
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: "url(#store-home-grid)" })
|
|
6840
|
+
]
|
|
6841
|
+
}
|
|
6842
|
+
),
|
|
6843
|
+
/* @__PURE__ */ jsx(
|
|
6844
|
+
"div",
|
|
6845
|
+
{
|
|
6846
|
+
className: "absolute -top-16 left-1/3 w-80 h-80 rounded-full bg-primary/10 blur-3xl pointer-events-none",
|
|
6847
|
+
"aria-hidden": "true"
|
|
6848
|
+
}
|
|
6849
|
+
),
|
|
6850
|
+
/* @__PURE__ */ jsx(
|
|
6851
|
+
"div",
|
|
6852
|
+
{
|
|
6853
|
+
className: "absolute top-8 right-1/4 w-56 h-56 rounded-full bg-primary/8 blur-2xl pointer-events-none",
|
|
6854
|
+
"aria-hidden": "true"
|
|
6855
|
+
}
|
|
6856
|
+
),
|
|
6609
6857
|
/* @__PURE__ */ jsxs("div", { className: "relative max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center", children: [
|
|
6610
6858
|
/* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-primary mb-5", children: [
|
|
6611
|
-
/* @__PURE__ */ jsx(
|
|
6859
|
+
/* @__PURE__ */ jsx(
|
|
6860
|
+
"span",
|
|
6861
|
+
{
|
|
6862
|
+
className: "w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0",
|
|
6863
|
+
"aria-hidden": "true"
|
|
6864
|
+
}
|
|
6865
|
+
),
|
|
6612
6866
|
"Community Marketplace"
|
|
6613
6867
|
] }),
|
|
6614
6868
|
/* @__PURE__ */ jsx("h1", { className: "text-4xl sm:text-5xl md:text-6xl font-extrabold tracking-tight text-foreground mb-4 leading-[1.08]", children: resolvedTitle }),
|
|
@@ -6620,7 +6874,9 @@ function StoreHomePage({
|
|
|
6620
6874
|
onSubmit: (e) => {
|
|
6621
6875
|
e.preventDefault();
|
|
6622
6876
|
const q = new FormData(e.currentTarget).get("q");
|
|
6623
|
-
navigate(
|
|
6877
|
+
navigate(
|
|
6878
|
+
q.trim() ? `${browsePath}?q=${encodeURIComponent(q.trim())}` : browsePath
|
|
6879
|
+
);
|
|
6624
6880
|
},
|
|
6625
6881
|
children: [
|
|
6626
6882
|
/* @__PURE__ */ jsx(
|
|
@@ -6662,9 +6918,23 @@ function StoreHomePage({
|
|
|
6662
6918
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [...Array(4)].map((_, i) => /* @__PURE__ */ jsx(GridCardSkeleton, {}, i)) })
|
|
6663
6919
|
] }) : error ? /* @__PURE__ */ jsxs("div", { className: "py-16 text-center", children: [
|
|
6664
6920
|
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-4", children: error }),
|
|
6665
|
-
/* @__PURE__ */ jsx(
|
|
6921
|
+
/* @__PURE__ */ jsx(
|
|
6922
|
+
"button",
|
|
6923
|
+
{
|
|
6924
|
+
type: "button",
|
|
6925
|
+
onClick: () => window.location.reload(),
|
|
6926
|
+
className: "text-sm text-primary hover:underline",
|
|
6927
|
+
children: "Retry"
|
|
6928
|
+
}
|
|
6929
|
+
)
|
|
6666
6930
|
] }) : featuredItems.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[1fr_2fr] gap-4 items-start", children: [
|
|
6667
|
-
/* @__PURE__ */ jsx(
|
|
6931
|
+
/* @__PURE__ */ jsx(
|
|
6932
|
+
FeaturedHeroCard,
|
|
6933
|
+
{
|
|
6934
|
+
product: featuredItems[0],
|
|
6935
|
+
onNavigate: navigate
|
|
6936
|
+
}
|
|
6937
|
+
),
|
|
6668
6938
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: featuredItems.slice(1, 5).map((product) => /* @__PURE__ */ jsx(
|
|
6669
6939
|
ProductCard,
|
|
6670
6940
|
{
|
|
@@ -6685,7 +6955,13 @@ function StoreHomePage({
|
|
|
6685
6955
|
onNavigate: navigate
|
|
6686
6956
|
}
|
|
6687
6957
|
),
|
|
6688
|
-
loading ? /* @__PURE__ */ jsx("div", { className: "flex gap-3 overflow-hidden", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx(ScrollCardSkeleton, {}, i)) }) : /* @__PURE__ */ jsx(
|
|
6958
|
+
loading ? /* @__PURE__ */ jsx("div", { className: "flex gap-3 overflow-hidden", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx(ScrollCardSkeleton, {}, i)) }) : /* @__PURE__ */ jsx(
|
|
6959
|
+
ScrollRow,
|
|
6960
|
+
{
|
|
6961
|
+
products: popularItems,
|
|
6962
|
+
onProductClick: handleProductClick
|
|
6963
|
+
}
|
|
6964
|
+
)
|
|
6689
6965
|
] }),
|
|
6690
6966
|
(loading || freeItems.length > 0) && /* @__PURE__ */ jsxs("section", { children: [
|
|
6691
6967
|
/* @__PURE__ */ jsx(
|
|
@@ -6708,16 +6984,35 @@ function StoreHomePage({
|
|
|
6708
6984
|
] })
|
|
6709
6985
|
] }),
|
|
6710
6986
|
/* @__PURE__ */ jsxs("section", { className: "relative overflow-hidden border-t border-border", children: [
|
|
6711
|
-
/* @__PURE__ */ jsx(
|
|
6712
|
-
|
|
6987
|
+
/* @__PURE__ */ jsx(
|
|
6988
|
+
"div",
|
|
6989
|
+
{
|
|
6990
|
+
className: "absolute inset-0 bg-gradient-to-br from-primary/8 via-background to-primary/5 pointer-events-none",
|
|
6991
|
+
"aria-hidden": "true"
|
|
6992
|
+
}
|
|
6993
|
+
),
|
|
6994
|
+
/* @__PURE__ */ jsx(
|
|
6995
|
+
"div",
|
|
6996
|
+
{
|
|
6997
|
+
className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-80 h-40 rounded-full bg-primary/12 blur-3xl pointer-events-none",
|
|
6998
|
+
"aria-hidden": "true"
|
|
6999
|
+
}
|
|
7000
|
+
),
|
|
6713
7001
|
/* @__PURE__ */ jsxs("div", { className: "relative max-w-2xl mx-auto px-4 py-16 text-center", children: [
|
|
6714
7002
|
/* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1 rounded-full border border-primary/30 bg-primary/10 text-xs font-semibold text-primary mb-5", children: [
|
|
6715
|
-
/* @__PURE__ */ jsx(
|
|
7003
|
+
/* @__PURE__ */ jsx(
|
|
7004
|
+
"span",
|
|
7005
|
+
{
|
|
7006
|
+
className: "w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0",
|
|
7007
|
+
"aria-hidden": "true"
|
|
7008
|
+
}
|
|
7009
|
+
),
|
|
6716
7010
|
"Become a publisher"
|
|
6717
7011
|
] }),
|
|
6718
7012
|
/* @__PURE__ */ jsx("h2", { className: "text-2xl sm:text-3xl font-bold text-foreground mb-3", children: "Built something useful?" }),
|
|
6719
7013
|
/* @__PURE__ */ jsxs("p", { className: "text-muted-foreground mb-8 max-w-lg mx-auto leading-relaxed", children: [
|
|
6720
|
-
"Share your workflows, nodes, and integrations with
|
|
7014
|
+
"Share your workflows, nodes, and integrations with",
|
|
7015
|
+
" ",
|
|
6721
7016
|
productName ?? "the",
|
|
6722
7017
|
" community. Earn from your work or contribute for free."
|
|
6723
7018
|
] }),
|
|
@@ -6773,7 +7068,14 @@ var PRICING_OPTIONS = [
|
|
|
6773
7068
|
];
|
|
6774
7069
|
function parseUrlParams() {
|
|
6775
7070
|
if (typeof window === "undefined")
|
|
6776
|
-
return {
|
|
7071
|
+
return {
|
|
7072
|
+
q: "",
|
|
7073
|
+
type: "",
|
|
7074
|
+
pricingModel: "",
|
|
7075
|
+
category: "",
|
|
7076
|
+
sortBy: "RELEVANCE",
|
|
7077
|
+
featured: false
|
|
7078
|
+
};
|
|
6777
7079
|
const p = new URLSearchParams(window.location.search);
|
|
6778
7080
|
return {
|
|
6779
7081
|
q: p.get("q") ?? "",
|
|
@@ -6825,7 +7127,9 @@ function StoreBrowsePage({
|
|
|
6825
7127
|
const [featured, setFeatured] = useState(initial.featured);
|
|
6826
7128
|
const [offset, setOffset] = useState(0);
|
|
6827
7129
|
const [result, setResult] = useState(null);
|
|
6828
|
-
const [allProducts, setAllProducts] = useState(
|
|
7130
|
+
const [allProducts, setAllProducts] = useState(
|
|
7131
|
+
[]
|
|
7132
|
+
);
|
|
6829
7133
|
const [categories, setCategories] = useState([]);
|
|
6830
7134
|
const [loading, setLoading] = useState(true);
|
|
6831
7135
|
const [loadingMore, setLoadingMore] = useState(false);
|
|
@@ -6869,7 +7173,16 @@ function StoreBrowsePage({
|
|
|
6869
7173
|
return () => {
|
|
6870
7174
|
cancelled = true;
|
|
6871
7175
|
};
|
|
6872
|
-
}, [
|
|
7176
|
+
}, [
|
|
7177
|
+
client,
|
|
7178
|
+
search,
|
|
7179
|
+
type,
|
|
7180
|
+
pricingModel,
|
|
7181
|
+
category,
|
|
7182
|
+
sortBy,
|
|
7183
|
+
compatibleWith,
|
|
7184
|
+
featured
|
|
7185
|
+
]);
|
|
6873
7186
|
function loadMore() {
|
|
6874
7187
|
const nextOffset = offset + PAGE_SIZE;
|
|
6875
7188
|
setLoadingMore(true);
|
|
@@ -7045,7 +7358,8 @@ function StoreBrowsePage({
|
|
|
7045
7358
|
onClick: () => setFiltersOpen(!filtersOpen),
|
|
7046
7359
|
className: "lg:hidden h-10 px-4 rounded-lg border border-border bg-background text-sm text-foreground hover:bg-muted/50 transition-colors",
|
|
7047
7360
|
children: [
|
|
7048
|
-
"Filters
|
|
7361
|
+
"Filters",
|
|
7362
|
+
" ",
|
|
7049
7363
|
hasActiveFilters && /* @__PURE__ */ jsx("span", { className: "text-primary", children: "\u2022" })
|
|
7050
7364
|
]
|
|
7051
7365
|
}
|
|
@@ -7059,14 +7373,32 @@ function StoreBrowsePage({
|
|
|
7059
7373
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-4 flex-wrap", children: [
|
|
7060
7374
|
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: loading ? "Loading\u2026" : `${result?.totalCount ?? 0} results` }),
|
|
7061
7375
|
hasActiveFilters && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-1.5", children: [
|
|
7062
|
-
search && /* @__PURE__ */ jsx(
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7376
|
+
search && /* @__PURE__ */ jsx(
|
|
7377
|
+
Chip,
|
|
7378
|
+
{
|
|
7379
|
+
label: `"${search}"`,
|
|
7380
|
+
onRemove: () => {
|
|
7381
|
+
setSearch("");
|
|
7382
|
+
setInputValue("");
|
|
7383
|
+
}
|
|
7384
|
+
}
|
|
7385
|
+
),
|
|
7066
7386
|
type && /* @__PURE__ */ jsx(Chip, { label: type, onRemove: () => setType("") }),
|
|
7067
|
-
pricingModel && /* @__PURE__ */ jsx(
|
|
7387
|
+
pricingModel && /* @__PURE__ */ jsx(
|
|
7388
|
+
Chip,
|
|
7389
|
+
{
|
|
7390
|
+
label: pricingModel,
|
|
7391
|
+
onRemove: () => setPricingModel("")
|
|
7392
|
+
}
|
|
7393
|
+
),
|
|
7068
7394
|
category && /* @__PURE__ */ jsx(Chip, { label: category, onRemove: () => setCategory("") }),
|
|
7069
|
-
featured && /* @__PURE__ */ jsx(
|
|
7395
|
+
featured && /* @__PURE__ */ jsx(
|
|
7396
|
+
Chip,
|
|
7397
|
+
{
|
|
7398
|
+
label: "Featured",
|
|
7399
|
+
onRemove: () => setFeatured(false)
|
|
7400
|
+
}
|
|
7401
|
+
)
|
|
7070
7402
|
] })
|
|
7071
7403
|
] }),
|
|
7072
7404
|
loading ? /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-4", children: [...Array(12)].map((_, i) => /* @__PURE__ */ jsx(
|
|
@@ -7118,9 +7450,97 @@ function StoreBrowsePage({
|
|
|
7118
7450
|
function Chip({ label, onRemove }) {
|
|
7119
7451
|
return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs bg-primary/10 text-primary rounded-full px-2.5 py-0.5 font-medium", children: [
|
|
7120
7452
|
label,
|
|
7121
|
-
/* @__PURE__ */ jsx(
|
|
7453
|
+
/* @__PURE__ */ jsx(
|
|
7454
|
+
"button",
|
|
7455
|
+
{
|
|
7456
|
+
type: "button",
|
|
7457
|
+
onClick: onRemove,
|
|
7458
|
+
"aria-label": `Remove ${label}`,
|
|
7459
|
+
className: "hover:opacity-70",
|
|
7460
|
+
children: "\xD7"
|
|
7461
|
+
}
|
|
7462
|
+
)
|
|
7122
7463
|
] });
|
|
7123
7464
|
}
|
|
7465
|
+
function detectTheme() {
|
|
7466
|
+
if (typeof document === "undefined") return "light";
|
|
7467
|
+
const root = document.documentElement;
|
|
7468
|
+
return root.classList.contains("dark") || root.getAttribute("data-theme") === "dark" ? "dark" : "light";
|
|
7469
|
+
}
|
|
7470
|
+
function WorkflowEmbed({
|
|
7471
|
+
appUrl,
|
|
7472
|
+
productId,
|
|
7473
|
+
theme,
|
|
7474
|
+
clickToInteract = true,
|
|
7475
|
+
hideCta = false,
|
|
7476
|
+
className,
|
|
7477
|
+
onError
|
|
7478
|
+
}) {
|
|
7479
|
+
const iframeRef = useRef(null);
|
|
7480
|
+
const [status, setStatus] = useState("loading");
|
|
7481
|
+
const [interactive, setInteractive] = useState(!clickToInteract);
|
|
7482
|
+
const resolvedTheme = useMemo(() => theme ?? detectTheme(), [theme]);
|
|
7483
|
+
const src = useMemo(() => {
|
|
7484
|
+
const base = appUrl.replace(/\/+$/, "");
|
|
7485
|
+
const params = new URLSearchParams({
|
|
7486
|
+
productId,
|
|
7487
|
+
theme: resolvedTheme
|
|
7488
|
+
});
|
|
7489
|
+
if (hideCta) params.set("cta", "false");
|
|
7490
|
+
return `${base}/embed/workflow?${params.toString()}`;
|
|
7491
|
+
}, [appUrl, productId, resolvedTheme, hideCta]);
|
|
7492
|
+
useEffect(() => {
|
|
7493
|
+
const handler = (event) => {
|
|
7494
|
+
if (event.source !== iframeRef.current?.contentWindow) return;
|
|
7495
|
+
const data = event.data;
|
|
7496
|
+
if (data?.type === "fluidgrids:embed:loaded") setStatus("loaded");
|
|
7497
|
+
if (data?.type === "fluidgrids:embed:error") {
|
|
7498
|
+
setStatus("error");
|
|
7499
|
+
onError?.(data.message ?? "Failed to load workflow preview");
|
|
7500
|
+
}
|
|
7501
|
+
};
|
|
7502
|
+
window.addEventListener("message", handler);
|
|
7503
|
+
return () => window.removeEventListener("message", handler);
|
|
7504
|
+
}, [onError]);
|
|
7505
|
+
if (status === "error") return null;
|
|
7506
|
+
return /* @__PURE__ */ jsxs(
|
|
7507
|
+
"div",
|
|
7508
|
+
{
|
|
7509
|
+
className: `relative w-full overflow-hidden rounded-xl border border-border bg-muted ${className ?? ""}`,
|
|
7510
|
+
style: { aspectRatio: "16 / 9" },
|
|
7511
|
+
children: [
|
|
7512
|
+
status === "loading" && /* @__PURE__ */ jsx(
|
|
7513
|
+
"div",
|
|
7514
|
+
{
|
|
7515
|
+
className: "absolute inset-0 animate-pulse bg-muted",
|
|
7516
|
+
"aria-hidden": "true"
|
|
7517
|
+
}
|
|
7518
|
+
),
|
|
7519
|
+
/* @__PURE__ */ jsx(
|
|
7520
|
+
"iframe",
|
|
7521
|
+
{
|
|
7522
|
+
ref: iframeRef,
|
|
7523
|
+
src,
|
|
7524
|
+
title: "Workflow preview",
|
|
7525
|
+
loading: "lazy",
|
|
7526
|
+
className: "h-full w-full border-0",
|
|
7527
|
+
style: interactive ? void 0 : { pointerEvents: "none" }
|
|
7528
|
+
}
|
|
7529
|
+
),
|
|
7530
|
+
clickToInteract && !interactive && status === "loaded" && /* @__PURE__ */ jsx(
|
|
7531
|
+
"button",
|
|
7532
|
+
{
|
|
7533
|
+
type: "button",
|
|
7534
|
+
onClick: () => setInteractive(true),
|
|
7535
|
+
className: "absolute inset-0 flex items-end justify-center bg-transparent pb-4",
|
|
7536
|
+
"aria-label": "Click to explore the workflow",
|
|
7537
|
+
children: /* @__PURE__ */ jsx("span", { className: "rounded-full border border-border bg-background/90 px-4 py-1.5 text-xs font-medium text-foreground shadow-sm backdrop-blur transition-colors hover:bg-background", children: "Click to explore" })
|
|
7538
|
+
}
|
|
7539
|
+
)
|
|
7540
|
+
]
|
|
7541
|
+
}
|
|
7542
|
+
);
|
|
7543
|
+
}
|
|
7124
7544
|
var ANIM_STYLES = `
|
|
7125
7545
|
@keyframes sdFadeUp {
|
|
7126
7546
|
from { opacity: 0; transform: translateY(16px); }
|
|
@@ -7153,7 +7573,11 @@ var ANIM_STYLES = `
|
|
|
7153
7573
|
.sd-d5 { animation-delay: 320ms; }
|
|
7154
7574
|
.sd-d6 { animation-delay: 400ms; }
|
|
7155
7575
|
`;
|
|
7156
|
-
function RatingBar({
|
|
7576
|
+
function RatingBar({
|
|
7577
|
+
label,
|
|
7578
|
+
count,
|
|
7579
|
+
total
|
|
7580
|
+
}) {
|
|
7157
7581
|
const pct = total > 0 ? Math.round(count / total * 100) : 0;
|
|
7158
7582
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
|
|
7159
7583
|
/* @__PURE__ */ jsx("span", { className: "w-12 text-right shrink-0", children: label }),
|
|
@@ -7169,12 +7593,63 @@ function RatingBar({ label, count, total }) {
|
|
|
7169
7593
|
}
|
|
7170
7594
|
function IconBlock({ src }) {
|
|
7171
7595
|
return /* @__PURE__ */ jsxs("div", { className: "relative flex-shrink-0", children: [
|
|
7172
|
-
/* @__PURE__ */ jsx(
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7596
|
+
/* @__PURE__ */ jsx(
|
|
7597
|
+
"div",
|
|
7598
|
+
{
|
|
7599
|
+
className: "sd-gp absolute -inset-1.5 rounded-2xl bg-primary/30 blur-md pointer-events-none",
|
|
7600
|
+
"aria-hidden": "true"
|
|
7601
|
+
}
|
|
7602
|
+
),
|
|
7603
|
+
/* @__PURE__ */ jsx("div", { className: "sd-si relative w-20 h-20 rounded-2xl overflow-hidden shadow-lg ring-1 ring-border", children: src ? /* @__PURE__ */ jsx(
|
|
7604
|
+
"img",
|
|
7605
|
+
{
|
|
7606
|
+
src,
|
|
7607
|
+
alt: "",
|
|
7608
|
+
"aria-hidden": true,
|
|
7609
|
+
className: "w-full h-full object-cover"
|
|
7610
|
+
}
|
|
7611
|
+
) : /* @__PURE__ */ jsx("div", { className: "w-full h-full bg-gradient-to-br from-primary/25 to-primary/8 flex items-center justify-center", children: /* @__PURE__ */ jsxs(
|
|
7612
|
+
"svg",
|
|
7613
|
+
{
|
|
7614
|
+
viewBox: "0 0 40 40",
|
|
7615
|
+
className: "w-10 h-10",
|
|
7616
|
+
fill: "none",
|
|
7617
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
7618
|
+
"aria-hidden": "true",
|
|
7619
|
+
children: [
|
|
7620
|
+
/* @__PURE__ */ jsx(
|
|
7621
|
+
"polygon",
|
|
7622
|
+
{
|
|
7623
|
+
points: "20,4 34,11 20,18 6,11",
|
|
7624
|
+
className: "fill-primary/40",
|
|
7625
|
+
stroke: "currentColor",
|
|
7626
|
+
strokeWidth: "0.6",
|
|
7627
|
+
strokeOpacity: "0.4"
|
|
7628
|
+
}
|
|
7629
|
+
),
|
|
7630
|
+
/* @__PURE__ */ jsx(
|
|
7631
|
+
"polygon",
|
|
7632
|
+
{
|
|
7633
|
+
points: "6,11 20,18 20,34 6,27",
|
|
7634
|
+
className: "fill-primary/20",
|
|
7635
|
+
stroke: "currentColor",
|
|
7636
|
+
strokeWidth: "0.6",
|
|
7637
|
+
strokeOpacity: "0.4"
|
|
7638
|
+
}
|
|
7639
|
+
),
|
|
7640
|
+
/* @__PURE__ */ jsx(
|
|
7641
|
+
"polygon",
|
|
7642
|
+
{
|
|
7643
|
+
points: "34,11 20,18 20,34 34,27",
|
|
7644
|
+
className: "fill-primary/30",
|
|
7645
|
+
stroke: "currentColor",
|
|
7646
|
+
strokeWidth: "0.6",
|
|
7647
|
+
strokeOpacity: "0.4"
|
|
7648
|
+
}
|
|
7649
|
+
)
|
|
7650
|
+
]
|
|
7651
|
+
}
|
|
7652
|
+
) }) })
|
|
7178
7653
|
] });
|
|
7179
7654
|
}
|
|
7180
7655
|
function StoreProductDetailPage({
|
|
@@ -7190,6 +7665,7 @@ function StoreProductDetailPage({
|
|
|
7190
7665
|
const [error, setError] = useState(null);
|
|
7191
7666
|
const [activeScreenshot, setActiveScreenshot] = useState(0);
|
|
7192
7667
|
const [screenshotKey, setScreenshotKey] = useState(0);
|
|
7668
|
+
const [embedFailed, setEmbedFailed] = useState(false);
|
|
7193
7669
|
useEffect(() => {
|
|
7194
7670
|
if (!slug && !id) {
|
|
7195
7671
|
setError("Product not found.");
|
|
@@ -7243,11 +7719,30 @@ function StoreProductDetailPage({
|
|
|
7243
7719
|
if (error || !details) {
|
|
7244
7720
|
return /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 text-center", children: [
|
|
7245
7721
|
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-4", children: error ?? "Product not found." }),
|
|
7246
|
-
/* @__PURE__ */ jsx(
|
|
7722
|
+
/* @__PURE__ */ jsx(
|
|
7723
|
+
"button",
|
|
7724
|
+
{
|
|
7725
|
+
type: "button",
|
|
7726
|
+
onClick: () => navigate("/store"),
|
|
7727
|
+
className: "text-sm text-primary hover:underline",
|
|
7728
|
+
children: "Back to Store"
|
|
7729
|
+
}
|
|
7730
|
+
)
|
|
7247
7731
|
] });
|
|
7248
7732
|
}
|
|
7249
|
-
const {
|
|
7250
|
-
|
|
7733
|
+
const {
|
|
7734
|
+
product,
|
|
7735
|
+
publisher,
|
|
7736
|
+
reviews,
|
|
7737
|
+
reviewsCount,
|
|
7738
|
+
relatedProducts,
|
|
7739
|
+
ratingDistribution
|
|
7740
|
+
} = details;
|
|
7741
|
+
const priceLabel = formatPrice2(
|
|
7742
|
+
product.price,
|
|
7743
|
+
product.currency,
|
|
7744
|
+
product.pricingModel
|
|
7745
|
+
);
|
|
7251
7746
|
const screenshots = product.screenshots ?? [];
|
|
7252
7747
|
const totalRatings = ratingDistribution ? ratingDistribution.fiveStars + ratingDistribution.fourStars + ratingDistribution.threeStars + ratingDistribution.twoStars + ratingDistribution.oneStar : 0;
|
|
7253
7748
|
return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
|
|
@@ -7261,15 +7756,60 @@ function StoreProductDetailPage({
|
|
|
7261
7756
|
}
|
|
7262
7757
|
),
|
|
7263
7758
|
/* @__PURE__ */ jsxs("div", { className: "relative overflow-hidden", children: [
|
|
7264
|
-
/* @__PURE__ */ jsx(
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7759
|
+
/* @__PURE__ */ jsx(
|
|
7760
|
+
"div",
|
|
7761
|
+
{
|
|
7762
|
+
className: "absolute inset-0 bg-gradient-to-b from-primary/[0.07] via-background to-background pointer-events-none",
|
|
7763
|
+
"aria-hidden": "true"
|
|
7764
|
+
}
|
|
7765
|
+
),
|
|
7766
|
+
/* @__PURE__ */ jsxs(
|
|
7767
|
+
"svg",
|
|
7768
|
+
{
|
|
7769
|
+
className: "absolute inset-0 w-full h-full opacity-[0.04] pointer-events-none",
|
|
7770
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
7771
|
+
"aria-hidden": "true",
|
|
7772
|
+
children: [
|
|
7773
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
7774
|
+
"pattern",
|
|
7775
|
+
{
|
|
7776
|
+
id: "sd-grid",
|
|
7777
|
+
width: "40",
|
|
7778
|
+
height: "40",
|
|
7779
|
+
patternUnits: "userSpaceOnUse",
|
|
7780
|
+
children: /* @__PURE__ */ jsx(
|
|
7781
|
+
"path",
|
|
7782
|
+
{
|
|
7783
|
+
d: "M 40 0 L 0 0 0 40",
|
|
7784
|
+
fill: "none",
|
|
7785
|
+
stroke: "currentColor",
|
|
7786
|
+
strokeWidth: "1"
|
|
7787
|
+
}
|
|
7788
|
+
)
|
|
7789
|
+
}
|
|
7790
|
+
) }),
|
|
7791
|
+
/* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: "url(#sd-grid)" })
|
|
7792
|
+
]
|
|
7793
|
+
}
|
|
7794
|
+
),
|
|
7795
|
+
/* @__PURE__ */ jsx(
|
|
7796
|
+
"div",
|
|
7797
|
+
{
|
|
7798
|
+
className: "absolute -top-12 -left-12 w-72 h-72 rounded-full bg-primary/10 blur-3xl pointer-events-none",
|
|
7799
|
+
"aria-hidden": "true"
|
|
7800
|
+
}
|
|
7801
|
+
),
|
|
7270
7802
|
/* @__PURE__ */ jsxs("div", { className: "relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 pt-6 pb-8", children: [
|
|
7271
7803
|
/* @__PURE__ */ jsxs("nav", { className: "sd-fi text-sm text-muted-foreground mb-6 flex items-center gap-1.5 flex-wrap", children: [
|
|
7272
|
-
/* @__PURE__ */ jsx(
|
|
7804
|
+
/* @__PURE__ */ jsx(
|
|
7805
|
+
"button",
|
|
7806
|
+
{
|
|
7807
|
+
type: "button",
|
|
7808
|
+
onClick: () => navigate("/store"),
|
|
7809
|
+
className: "hover:text-primary transition-colors",
|
|
7810
|
+
children: "Store"
|
|
7811
|
+
}
|
|
7812
|
+
),
|
|
7273
7813
|
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u203A" }),
|
|
7274
7814
|
product.category && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7275
7815
|
/* @__PURE__ */ jsx(
|
|
@@ -7335,6 +7875,14 @@ function StoreProductDetailPage({
|
|
|
7335
7875
|
}
|
|
7336
7876
|
)
|
|
7337
7877
|
] }),
|
|
7878
|
+
product.type === "WORKFLOW" && !embedFailed && /* @__PURE__ */ jsx("div", { className: "sd-fu sd-d3 mb-8", children: /* @__PURE__ */ jsx(
|
|
7879
|
+
WorkflowEmbed,
|
|
7880
|
+
{
|
|
7881
|
+
appUrl: appLoginUrl,
|
|
7882
|
+
productId: product.id,
|
|
7883
|
+
onError: () => setEmbedFailed(true)
|
|
7884
|
+
}
|
|
7885
|
+
) }),
|
|
7338
7886
|
screenshots.length > 0 && /* @__PURE__ */ jsxs("div", { className: "sd-fu sd-d3 mb-8", children: [
|
|
7339
7887
|
/* @__PURE__ */ jsx("div", { className: "rounded-xl overflow-hidden bg-muted aspect-video mb-3 shadow-md", children: /* @__PURE__ */ jsx(
|
|
7340
7888
|
"img",
|
|
@@ -7351,7 +7899,14 @@ function StoreProductDetailPage({
|
|
|
7351
7899
|
type: "button",
|
|
7352
7900
|
onClick: () => switchScreenshot(i),
|
|
7353
7901
|
className: `w-20 h-14 rounded-lg overflow-hidden flex-shrink-0 border-2 transition-all duration-200 ${i === activeScreenshot ? "border-primary shadow-sm shadow-primary/20" : "border-transparent opacity-50 hover:opacity-80"}`,
|
|
7354
|
-
children: /* @__PURE__ */ jsx(
|
|
7902
|
+
children: /* @__PURE__ */ jsx(
|
|
7903
|
+
"img",
|
|
7904
|
+
{
|
|
7905
|
+
src,
|
|
7906
|
+
alt: `Thumbnail ${i + 1}`,
|
|
7907
|
+
className: "w-full h-full object-cover"
|
|
7908
|
+
}
|
|
7909
|
+
)
|
|
7355
7910
|
},
|
|
7356
7911
|
i
|
|
7357
7912
|
)) })
|
|
@@ -7363,7 +7918,14 @@ function StoreProductDetailPage({
|
|
|
7363
7918
|
publisher && /* @__PURE__ */ jsxs("div", { className: "sd-fu sd-d5 mb-8 p-4 rounded-xl border border-border bg-card hover:border-primary/30 transition-colors duration-300", children: [
|
|
7364
7919
|
/* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold text-foreground mb-3", children: "Publisher" }),
|
|
7365
7920
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7366
|
-
publisher.logoUrl ? /* @__PURE__ */ jsx(
|
|
7921
|
+
publisher.logoUrl ? /* @__PURE__ */ jsx(
|
|
7922
|
+
"img",
|
|
7923
|
+
{
|
|
7924
|
+
src: publisher.logoUrl,
|
|
7925
|
+
alt: publisher.name,
|
|
7926
|
+
className: "w-10 h-10 rounded-full object-cover"
|
|
7927
|
+
}
|
|
7928
|
+
) : /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center text-primary text-sm font-bold", children: publisher.name.charAt(0).toUpperCase() }),
|
|
7367
7929
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
7368
7930
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
7369
7931
|
/* @__PURE__ */ jsx("span", { className: "font-semibold text-foreground text-sm", children: publisher.name }),
|
|
@@ -7389,11 +7951,46 @@ function StoreProductDetailPage({
|
|
|
7389
7951
|
] })
|
|
7390
7952
|
] }),
|
|
7391
7953
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1.5 pt-1", children: [
|
|
7392
|
-
/* @__PURE__ */ jsx(
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7954
|
+
/* @__PURE__ */ jsx(
|
|
7955
|
+
RatingBar,
|
|
7956
|
+
{
|
|
7957
|
+
label: "5 \u2605",
|
|
7958
|
+
count: ratingDistribution.fiveStars,
|
|
7959
|
+
total: totalRatings
|
|
7960
|
+
}
|
|
7961
|
+
),
|
|
7962
|
+
/* @__PURE__ */ jsx(
|
|
7963
|
+
RatingBar,
|
|
7964
|
+
{
|
|
7965
|
+
label: "4 \u2605",
|
|
7966
|
+
count: ratingDistribution.fourStars,
|
|
7967
|
+
total: totalRatings
|
|
7968
|
+
}
|
|
7969
|
+
),
|
|
7970
|
+
/* @__PURE__ */ jsx(
|
|
7971
|
+
RatingBar,
|
|
7972
|
+
{
|
|
7973
|
+
label: "3 \u2605",
|
|
7974
|
+
count: ratingDistribution.threeStars,
|
|
7975
|
+
total: totalRatings
|
|
7976
|
+
}
|
|
7977
|
+
),
|
|
7978
|
+
/* @__PURE__ */ jsx(
|
|
7979
|
+
RatingBar,
|
|
7980
|
+
{
|
|
7981
|
+
label: "2 \u2605",
|
|
7982
|
+
count: ratingDistribution.twoStars,
|
|
7983
|
+
total: totalRatings
|
|
7984
|
+
}
|
|
7985
|
+
),
|
|
7986
|
+
/* @__PURE__ */ jsx(
|
|
7987
|
+
RatingBar,
|
|
7988
|
+
{
|
|
7989
|
+
label: "1 \u2605",
|
|
7990
|
+
count: ratingDistribution.oneStar,
|
|
7991
|
+
total: totalRatings
|
|
7992
|
+
}
|
|
7993
|
+
)
|
|
7397
7994
|
] })
|
|
7398
7995
|
] }),
|
|
7399
7996
|
/* @__PURE__ */ jsx("div", { className: "space-y-3", children: reviews.slice(0, 5).map((review, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -7408,11 +8005,14 @@ function StoreProductDetailPage({
|
|
|
7408
8005
|
] }),
|
|
7409
8006
|
review.title && /* @__PURE__ */ jsx("p", { className: "font-semibold text-sm text-foreground mb-1", children: review.title }),
|
|
7410
8007
|
review.comment && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground leading-relaxed", children: review.comment }),
|
|
7411
|
-
review.createdAt && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-2", children: new Date(review.createdAt).toLocaleDateString(
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
8008
|
+
review.createdAt && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-2", children: new Date(review.createdAt).toLocaleDateString(
|
|
8009
|
+
"en-US",
|
|
8010
|
+
{
|
|
8011
|
+
year: "numeric",
|
|
8012
|
+
month: "short",
|
|
8013
|
+
day: "numeric"
|
|
8014
|
+
}
|
|
8015
|
+
) })
|
|
7416
8016
|
]
|
|
7417
8017
|
},
|
|
7418
8018
|
review.id
|
|
@@ -7432,7 +8032,13 @@ function StoreProductDetailPage({
|
|
|
7432
8032
|
] }),
|
|
7433
8033
|
/* @__PURE__ */ jsx("aside", { className: "lg:sticky lg:top-24 self-start", children: /* @__PURE__ */ jsxs("div", { className: "sd-fu sd-d4 bg-card border border-border rounded-xl p-5 space-y-4 hover:border-primary/30 transition-colors duration-300 hover:shadow-lg hover:shadow-primary/5", children: [
|
|
7434
8034
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
7435
|
-
/* @__PURE__ */ jsx(
|
|
8035
|
+
/* @__PURE__ */ jsx(
|
|
8036
|
+
"div",
|
|
8037
|
+
{
|
|
8038
|
+
className: `text-3xl font-extrabold ${priceLabel === "Free" ? "text-emerald-500" : "text-foreground"}`,
|
|
8039
|
+
children: priceLabel
|
|
8040
|
+
}
|
|
8041
|
+
),
|
|
7436
8042
|
product.pricingModel === "SUBSCRIPTION" && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: "per month" })
|
|
7437
8043
|
] }),
|
|
7438
8044
|
/* @__PURE__ */ jsx(
|