@burdenoff/website-sdk 2026.518.4 → 2026.520.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/content/index.d.mts +16 -0
- package/dist/content/index.d.ts +16 -0
- package/dist/content/index.js +380 -33
- package/dist/content/index.js.map +1 -1
- package/dist/content/index.mjs +380 -33
- package/dist/content/index.mjs.map +1 -1
- package/dist/index.js +380 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +380 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2986,19 +2986,21 @@ function BlogCard({
|
|
|
2986
2986
|
month: "long",
|
|
2987
2987
|
day: "numeric"
|
|
2988
2988
|
}) : "";
|
|
2989
|
+
const [imgError, setImgError] = useState(false);
|
|
2989
2990
|
return /* @__PURE__ */ jsxs(
|
|
2990
2991
|
"a",
|
|
2991
2992
|
{
|
|
2992
2993
|
href: `${basePath}/${post.slug}`,
|
|
2993
2994
|
className: "group block bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300",
|
|
2994
2995
|
children: [
|
|
2995
|
-
post.thumbnail ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
2996
|
+
post.thumbnail && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
2996
2997
|
"img",
|
|
2997
2998
|
{
|
|
2998
2999
|
src: post.thumbnail,
|
|
2999
3000
|
alt: post.title,
|
|
3000
3001
|
className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
|
|
3001
|
-
loading: "lazy"
|
|
3002
|
+
loading: "lazy",
|
|
3003
|
+
onError: () => setImgError(true)
|
|
3002
3004
|
}
|
|
3003
3005
|
) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
3004
3006
|
"svg",
|
|
@@ -3160,7 +3162,12 @@ function BlogListPage(props) {
|
|
|
3160
3162
|
] });
|
|
3161
3163
|
}
|
|
3162
3164
|
function BlogPostPage(props) {
|
|
3163
|
-
const {
|
|
3165
|
+
const {
|
|
3166
|
+
productName,
|
|
3167
|
+
blogListUrl = "/blog",
|
|
3168
|
+
backLabel = "Back to Blog",
|
|
3169
|
+
className = ""
|
|
3170
|
+
} = props;
|
|
3164
3171
|
const client = useWebSDK();
|
|
3165
3172
|
const config = useWebSDKConfig();
|
|
3166
3173
|
const { product } = useProduct();
|
|
@@ -3204,12 +3211,15 @@ function BlogPostPage(props) {
|
|
|
3204
3211
|
return /* @__PURE__ */ jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxs("div", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-24 text-center", children: [
|
|
3205
3212
|
/* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold mb-4", children: "Post not found" }),
|
|
3206
3213
|
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-6", children: error || "This blog post doesn't exist or has been removed." }),
|
|
3207
|
-
/* @__PURE__ */
|
|
3214
|
+
/* @__PURE__ */ jsxs(
|
|
3208
3215
|
"a",
|
|
3209
3216
|
{
|
|
3210
3217
|
href: blogListUrl,
|
|
3211
3218
|
className: "text-primary hover:underline font-medium",
|
|
3212
|
-
children:
|
|
3219
|
+
children: [
|
|
3220
|
+
"\u2190 ",
|
|
3221
|
+
backLabel
|
|
3222
|
+
]
|
|
3213
3223
|
}
|
|
3214
3224
|
)
|
|
3215
3225
|
] }) });
|
|
@@ -3231,12 +3241,15 @@ function BlogPostPage(props) {
|
|
|
3231
3241
|
}
|
|
3232
3242
|
),
|
|
3233
3243
|
/* @__PURE__ */ jsxs("article", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16 sm:py-20", children: [
|
|
3234
|
-
/* @__PURE__ */
|
|
3244
|
+
/* @__PURE__ */ jsxs(
|
|
3235
3245
|
"a",
|
|
3236
3246
|
{
|
|
3237
3247
|
href: blogListUrl,
|
|
3238
3248
|
className: "inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground mb-8 transition-colors",
|
|
3239
|
-
children:
|
|
3249
|
+
children: [
|
|
3250
|
+
"\u2190 ",
|
|
3251
|
+
backLabel
|
|
3252
|
+
]
|
|
3240
3253
|
}
|
|
3241
3254
|
),
|
|
3242
3255
|
post.category && /* @__PURE__ */ jsx("span", { className: "inline-block text-xs font-medium text-primary bg-primary/10 px-2.5 py-1 rounded-full mb-4", children: post.category }),
|
|
@@ -3289,6 +3302,29 @@ var PRESS_KIT_QUERY = `
|
|
|
3289
3302
|
}
|
|
3290
3303
|
}
|
|
3291
3304
|
`;
|
|
3305
|
+
var PRESS_RELEASES_QUERY = `
|
|
3306
|
+
query PublicPressReleases($productId: String!, $limit: Int, $offset: Int) {
|
|
3307
|
+
publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
|
|
3308
|
+
items {
|
|
3309
|
+
id
|
|
3310
|
+
title
|
|
3311
|
+
slug
|
|
3312
|
+
lastUpdated
|
|
3313
|
+
tags
|
|
3314
|
+
seoDescription
|
|
3315
|
+
excerpt
|
|
3316
|
+
thumbnail
|
|
3317
|
+
author
|
|
3318
|
+
publishedAt
|
|
3319
|
+
readingTime
|
|
3320
|
+
featured
|
|
3321
|
+
category
|
|
3322
|
+
}
|
|
3323
|
+
total
|
|
3324
|
+
hasMore
|
|
3325
|
+
}
|
|
3326
|
+
}
|
|
3327
|
+
`;
|
|
3292
3328
|
var CATEGORY_ORDER = [
|
|
3293
3329
|
"LOGO",
|
|
3294
3330
|
"BANNER",
|
|
@@ -3313,7 +3349,154 @@ function formatBytes(bytes) {
|
|
|
3313
3349
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
|
|
3314
3350
|
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
3315
3351
|
}
|
|
3316
|
-
function
|
|
3352
|
+
function isImageAsset(a) {
|
|
3353
|
+
return (a.mimeType || "").startsWith("image/");
|
|
3354
|
+
}
|
|
3355
|
+
async function downloadAsset(e, asset) {
|
|
3356
|
+
e.preventDefault();
|
|
3357
|
+
const openInTab = () => window.open(asset.fileUrl, "_blank", "noopener,noreferrer");
|
|
3358
|
+
const name = asset.fileName || asset.fileUrl.split("/").pop()?.split("?")[0] || asset.title || "download";
|
|
3359
|
+
try {
|
|
3360
|
+
const res = await fetch(asset.fileUrl, { mode: "cors" });
|
|
3361
|
+
if (!res.ok) {
|
|
3362
|
+
openInTab();
|
|
3363
|
+
return;
|
|
3364
|
+
}
|
|
3365
|
+
const blob = await res.blob();
|
|
3366
|
+
const objUrl = URL.createObjectURL(blob);
|
|
3367
|
+
const a = document.createElement("a");
|
|
3368
|
+
a.href = objUrl;
|
|
3369
|
+
a.download = name;
|
|
3370
|
+
document.body.appendChild(a);
|
|
3371
|
+
a.click();
|
|
3372
|
+
a.remove();
|
|
3373
|
+
URL.revokeObjectURL(objUrl);
|
|
3374
|
+
} catch {
|
|
3375
|
+
openInTab();
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3378
|
+
function PressKitLightbox({
|
|
3379
|
+
asset,
|
|
3380
|
+
onClose
|
|
3381
|
+
}) {
|
|
3382
|
+
useEffect(() => {
|
|
3383
|
+
if (!asset) return;
|
|
3384
|
+
const onKey = (e) => {
|
|
3385
|
+
if (e.key === "Escape") onClose();
|
|
3386
|
+
};
|
|
3387
|
+
document.addEventListener("keydown", onKey);
|
|
3388
|
+
const prevOverflow = document.body.style.overflow;
|
|
3389
|
+
document.body.style.overflow = "hidden";
|
|
3390
|
+
return () => {
|
|
3391
|
+
document.removeEventListener("keydown", onKey);
|
|
3392
|
+
document.body.style.overflow = prevOverflow;
|
|
3393
|
+
};
|
|
3394
|
+
}, [asset, onClose]);
|
|
3395
|
+
if (!asset) return null;
|
|
3396
|
+
const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
|
|
3397
|
+
const size = formatBytes(asset.fileSize);
|
|
3398
|
+
return /* @__PURE__ */ jsx(
|
|
3399
|
+
"div",
|
|
3400
|
+
{
|
|
3401
|
+
role: "dialog",
|
|
3402
|
+
"aria-modal": "true",
|
|
3403
|
+
"aria-label": `${asset.title} preview`,
|
|
3404
|
+
onClick: onClose,
|
|
3405
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4 sm:p-8",
|
|
3406
|
+
children: /* @__PURE__ */ jsxs(
|
|
3407
|
+
"div",
|
|
3408
|
+
{
|
|
3409
|
+
onClick: (e) => e.stopPropagation(),
|
|
3410
|
+
className: "relative flex max-h-full w-full max-w-4xl flex-col overflow-hidden rounded-xl border bg-card shadow-2xl",
|
|
3411
|
+
children: [
|
|
3412
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4 border-b p-4", children: [
|
|
3413
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
3414
|
+
/* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-semibold text-foreground", children: asset.title }),
|
|
3415
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
3416
|
+
ext,
|
|
3417
|
+
size ? ` \xB7 ${size}` : ""
|
|
3418
|
+
] })
|
|
3419
|
+
] }),
|
|
3420
|
+
/* @__PURE__ */ jsx(
|
|
3421
|
+
"button",
|
|
3422
|
+
{
|
|
3423
|
+
type: "button",
|
|
3424
|
+
onClick: onClose,
|
|
3425
|
+
"aria-label": "Close preview",
|
|
3426
|
+
className: "shrink-0 rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
3427
|
+
children: /* @__PURE__ */ jsx(
|
|
3428
|
+
"svg",
|
|
3429
|
+
{
|
|
3430
|
+
className: "h-5 w-5",
|
|
3431
|
+
fill: "none",
|
|
3432
|
+
viewBox: "0 0 24 24",
|
|
3433
|
+
stroke: "currentColor",
|
|
3434
|
+
strokeWidth: 2,
|
|
3435
|
+
children: /* @__PURE__ */ jsx(
|
|
3436
|
+
"path",
|
|
3437
|
+
{
|
|
3438
|
+
strokeLinecap: "round",
|
|
3439
|
+
strokeLinejoin: "round",
|
|
3440
|
+
d: "M6 18L18 6M6 6l12 12"
|
|
3441
|
+
}
|
|
3442
|
+
)
|
|
3443
|
+
}
|
|
3444
|
+
)
|
|
3445
|
+
}
|
|
3446
|
+
)
|
|
3447
|
+
] }),
|
|
3448
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-1 items-center justify-center overflow-auto bg-muted/20 p-4", children: /* @__PURE__ */ jsx(
|
|
3449
|
+
"img",
|
|
3450
|
+
{
|
|
3451
|
+
src: asset.fileUrl,
|
|
3452
|
+
alt: asset.title,
|
|
3453
|
+
className: "max-h-[70vh] w-auto max-w-full object-contain"
|
|
3454
|
+
}
|
|
3455
|
+
) }),
|
|
3456
|
+
/* @__PURE__ */ jsx("div", { className: "flex justify-end border-t p-4", children: /* @__PURE__ */ jsxs(
|
|
3457
|
+
"a",
|
|
3458
|
+
{
|
|
3459
|
+
href: asset.fileUrl,
|
|
3460
|
+
target: "_blank",
|
|
3461
|
+
rel: "noopener noreferrer",
|
|
3462
|
+
download: true,
|
|
3463
|
+
onClick: (e) => {
|
|
3464
|
+
void downloadAsset(e, asset);
|
|
3465
|
+
},
|
|
3466
|
+
className: "inline-flex items-center gap-1.5 rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-opacity hover:opacity-90",
|
|
3467
|
+
children: [
|
|
3468
|
+
/* @__PURE__ */ jsx(
|
|
3469
|
+
"svg",
|
|
3470
|
+
{
|
|
3471
|
+
className: "h-4 w-4",
|
|
3472
|
+
fill: "none",
|
|
3473
|
+
viewBox: "0 0 24 24",
|
|
3474
|
+
stroke: "currentColor",
|
|
3475
|
+
strokeWidth: 2,
|
|
3476
|
+
children: /* @__PURE__ */ jsx(
|
|
3477
|
+
"path",
|
|
3478
|
+
{
|
|
3479
|
+
strokeLinecap: "round",
|
|
3480
|
+
strokeLinejoin: "round",
|
|
3481
|
+
d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
|
|
3482
|
+
}
|
|
3483
|
+
)
|
|
3484
|
+
}
|
|
3485
|
+
),
|
|
3486
|
+
"Download"
|
|
3487
|
+
]
|
|
3488
|
+
}
|
|
3489
|
+
) })
|
|
3490
|
+
]
|
|
3491
|
+
}
|
|
3492
|
+
)
|
|
3493
|
+
}
|
|
3494
|
+
);
|
|
3495
|
+
}
|
|
3496
|
+
function AssetCard({
|
|
3497
|
+
asset,
|
|
3498
|
+
onPreview
|
|
3499
|
+
}) {
|
|
3317
3500
|
const date = asset.updatedAt ? new Date(asset.updatedAt).toLocaleDateString("en-US", {
|
|
3318
3501
|
year: "numeric",
|
|
3319
3502
|
month: "short",
|
|
@@ -3321,33 +3504,55 @@ function AssetCard({ asset }) {
|
|
|
3321
3504
|
}) : "";
|
|
3322
3505
|
const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
|
|
3323
3506
|
const size = formatBytes(asset.fileSize);
|
|
3507
|
+
const [imgError, setImgError] = useState(false);
|
|
3508
|
+
const thumb = asset.thumbnailUrl && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
|
|
3509
|
+
"img",
|
|
3510
|
+
{
|
|
3511
|
+
src: asset.thumbnailUrl,
|
|
3512
|
+
alt: asset.title,
|
|
3513
|
+
className: "w-full h-full object-contain group-hover:scale-105 transition-transform duration-300",
|
|
3514
|
+
loading: "lazy",
|
|
3515
|
+
onError: () => setImgError(true)
|
|
3516
|
+
}
|
|
3517
|
+
) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
3518
|
+
"svg",
|
|
3519
|
+
{
|
|
3520
|
+
className: "w-12 h-12 text-muted-foreground/20",
|
|
3521
|
+
fill: "none",
|
|
3522
|
+
viewBox: "0 0 24 24",
|
|
3523
|
+
stroke: "currentColor",
|
|
3524
|
+
children: /* @__PURE__ */ jsx(
|
|
3525
|
+
"path",
|
|
3526
|
+
{
|
|
3527
|
+
strokeLinecap: "round",
|
|
3528
|
+
strokeLinejoin: "round",
|
|
3529
|
+
strokeWidth: 1.5,
|
|
3530
|
+
d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
|
|
3531
|
+
}
|
|
3532
|
+
)
|
|
3533
|
+
}
|
|
3534
|
+
) });
|
|
3324
3535
|
return /* @__PURE__ */ jsxs("div", { className: "group flex flex-col bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300", children: [
|
|
3325
|
-
|
|
3326
|
-
"
|
|
3536
|
+
onPreview && isImageAsset(asset) ? /* @__PURE__ */ jsx(
|
|
3537
|
+
"button",
|
|
3327
3538
|
{
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3539
|
+
type: "button",
|
|
3540
|
+
onClick: () => onPreview(asset),
|
|
3541
|
+
"aria-label": `Preview ${asset.title}`,
|
|
3542
|
+
className: "block w-full text-left cursor-zoom-in",
|
|
3543
|
+
children: thumb
|
|
3332
3544
|
}
|
|
3333
|
-
)
|
|
3334
|
-
"
|
|
3545
|
+
) : /* @__PURE__ */ jsx(
|
|
3546
|
+
"a",
|
|
3335
3547
|
{
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
{
|
|
3343
|
-
strokeLinecap: "round",
|
|
3344
|
-
strokeLinejoin: "round",
|
|
3345
|
-
strokeWidth: 1.5,
|
|
3346
|
-
d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
|
|
3347
|
-
}
|
|
3348
|
-
)
|
|
3548
|
+
href: asset.fileUrl,
|
|
3549
|
+
target: "_blank",
|
|
3550
|
+
rel: "noopener noreferrer",
|
|
3551
|
+
"aria-label": `Open ${asset.title}`,
|
|
3552
|
+
className: "block",
|
|
3553
|
+
children: thumb
|
|
3349
3554
|
}
|
|
3350
|
-
)
|
|
3555
|
+
),
|
|
3351
3556
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5", children: [
|
|
3352
3557
|
/* @__PURE__ */ jsx("span", { className: "inline-block self-start text-xs font-medium text-primary bg-primary/10 px-2.5 py-1 rounded-full mb-3", children: CATEGORY_LABELS[asset.category] ?? asset.category }),
|
|
3353
3558
|
/* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-foreground mb-1 line-clamp-2", children: asset.title }),
|
|
@@ -3371,6 +3576,9 @@ function AssetCard({ asset }) {
|
|
|
3371
3576
|
target: "_blank",
|
|
3372
3577
|
rel: "noopener noreferrer",
|
|
3373
3578
|
download: true,
|
|
3579
|
+
onClick: (e) => {
|
|
3580
|
+
void downloadAsset(e, asset);
|
|
3581
|
+
},
|
|
3374
3582
|
className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline",
|
|
3375
3583
|
children: [
|
|
3376
3584
|
/* @__PURE__ */ jsx(
|
|
@@ -3399,6 +3607,71 @@ function AssetCard({ asset }) {
|
|
|
3399
3607
|
] })
|
|
3400
3608
|
] });
|
|
3401
3609
|
}
|
|
3610
|
+
function PressReleaseCard({
|
|
3611
|
+
release,
|
|
3612
|
+
basePath
|
|
3613
|
+
}) {
|
|
3614
|
+
const date = release.publishedAt || release.lastUpdated;
|
|
3615
|
+
const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
|
|
3616
|
+
year: "numeric",
|
|
3617
|
+
month: "long",
|
|
3618
|
+
day: "numeric"
|
|
3619
|
+
}) : "";
|
|
3620
|
+
const [imgError, setImgError] = useState(false);
|
|
3621
|
+
return /* @__PURE__ */ jsxs(
|
|
3622
|
+
"a",
|
|
3623
|
+
{
|
|
3624
|
+
href: `${basePath}/${release.slug}`,
|
|
3625
|
+
className: "group flex flex-col bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300",
|
|
3626
|
+
children: [
|
|
3627
|
+
release.thumbnail && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
|
|
3628
|
+
"img",
|
|
3629
|
+
{
|
|
3630
|
+
src: release.thumbnail,
|
|
3631
|
+
alt: release.title,
|
|
3632
|
+
className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
|
|
3633
|
+
loading: "lazy",
|
|
3634
|
+
onError: () => setImgError(true)
|
|
3635
|
+
}
|
|
3636
|
+
) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
3637
|
+
"svg",
|
|
3638
|
+
{
|
|
3639
|
+
className: "w-12 h-12 text-muted-foreground/20",
|
|
3640
|
+
fill: "none",
|
|
3641
|
+
viewBox: "0 0 24 24",
|
|
3642
|
+
stroke: "currentColor",
|
|
3643
|
+
children: /* @__PURE__ */ jsx(
|
|
3644
|
+
"path",
|
|
3645
|
+
{
|
|
3646
|
+
strokeLinecap: "round",
|
|
3647
|
+
strokeLinejoin: "round",
|
|
3648
|
+
strokeWidth: 1.5,
|
|
3649
|
+
d: "M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m-1 13a2 2 0 01-2-2V7m3 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"
|
|
3650
|
+
}
|
|
3651
|
+
)
|
|
3652
|
+
}
|
|
3653
|
+
) }),
|
|
3654
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5 sm:p-6", children: [
|
|
3655
|
+
release.category && /* @__PURE__ */ jsx("span", { className: "inline-block self-start text-xs font-medium text-primary bg-primary/10 px-2.5 py-1 rounded-full mb-3", children: release.category }),
|
|
3656
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-foreground mb-2 group-hover:text-primary transition-colors line-clamp-2", children: release.title }),
|
|
3657
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-4 line-clamp-3", children: release.excerpt || release.seoDescription || "" }),
|
|
3658
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center gap-3 text-xs text-muted-foreground", children: [
|
|
3659
|
+
release.author && /* @__PURE__ */ jsx("span", { className: "font-medium", children: release.author }),
|
|
3660
|
+
release.author && formattedDate && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
3661
|
+
formattedDate && /* @__PURE__ */ jsx("span", { children: formattedDate }),
|
|
3662
|
+
release.readingTime ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3663
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
3664
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
3665
|
+
release.readingTime,
|
|
3666
|
+
" min read"
|
|
3667
|
+
] })
|
|
3668
|
+
] }) : null
|
|
3669
|
+
] })
|
|
3670
|
+
] })
|
|
3671
|
+
]
|
|
3672
|
+
}
|
|
3673
|
+
);
|
|
3674
|
+
}
|
|
3402
3675
|
function PressKitPage(props) {
|
|
3403
3676
|
const {
|
|
3404
3677
|
productName,
|
|
@@ -3409,7 +3682,10 @@ function PressKitPage(props) {
|
|
|
3409
3682
|
className = "",
|
|
3410
3683
|
seoTitle,
|
|
3411
3684
|
seoDescription,
|
|
3412
|
-
seoKeywords
|
|
3685
|
+
seoKeywords,
|
|
3686
|
+
showPressReleases = true,
|
|
3687
|
+
pressReleaseBasePath = "/press",
|
|
3688
|
+
pressReleasesTitle = "Press Releases"
|
|
3413
3689
|
} = props;
|
|
3414
3690
|
const client = useWebSDK();
|
|
3415
3691
|
const config = useWebSDKConfig();
|
|
@@ -3420,6 +3696,9 @@ function PressKitPage(props) {
|
|
|
3420
3696
|
const [loading, setLoading] = useState(true);
|
|
3421
3697
|
const [error, setError] = useState(null);
|
|
3422
3698
|
const [activeCategory, setActiveCategory] = useState("ALL");
|
|
3699
|
+
const [releases, setReleases] = useState([]);
|
|
3700
|
+
const [releasesLoading, setReleasesLoading] = useState(true);
|
|
3701
|
+
const [preview, setPreview] = useState(null);
|
|
3423
3702
|
const fetchAssets = useCallback(async () => {
|
|
3424
3703
|
if (!resolvedProductId) {
|
|
3425
3704
|
setLoading(false);
|
|
@@ -3457,6 +3736,48 @@ function PressKitPage(props) {
|
|
|
3457
3736
|
useEffect(() => {
|
|
3458
3737
|
fetchAssets();
|
|
3459
3738
|
}, [fetchAssets]);
|
|
3739
|
+
const fetchReleases = useCallback(async () => {
|
|
3740
|
+
if (!resolvedProductId || !showPressReleases) {
|
|
3741
|
+
setReleasesLoading(false);
|
|
3742
|
+
return;
|
|
3743
|
+
}
|
|
3744
|
+
setReleasesLoading(true);
|
|
3745
|
+
try {
|
|
3746
|
+
const PAGE_SIZE = 100;
|
|
3747
|
+
const MAX_PAGES = 10;
|
|
3748
|
+
const all = [];
|
|
3749
|
+
let offset = 0;
|
|
3750
|
+
for (let pageNum = 0; pageNum < MAX_PAGES; pageNum++) {
|
|
3751
|
+
const result = await client.query(PRESS_RELEASES_QUERY, {
|
|
3752
|
+
productId: resolvedProductId,
|
|
3753
|
+
limit: PAGE_SIZE,
|
|
3754
|
+
offset
|
|
3755
|
+
});
|
|
3756
|
+
if (result.errors?.length) {
|
|
3757
|
+
setReleases([]);
|
|
3758
|
+
return;
|
|
3759
|
+
}
|
|
3760
|
+
const page = result.data?.publicContentPages;
|
|
3761
|
+
const items = page?.items || [];
|
|
3762
|
+
all.push(...items);
|
|
3763
|
+
if (!page?.hasMore || items.length === 0) break;
|
|
3764
|
+
offset += PAGE_SIZE;
|
|
3765
|
+
}
|
|
3766
|
+
const pressOnly = all.filter((p) => p.tags?.includes("press")).sort((a, b) => {
|
|
3767
|
+
const da = new Date(a.publishedAt || a.lastUpdated || 0).getTime();
|
|
3768
|
+
const db = new Date(b.publishedAt || b.lastUpdated || 0).getTime();
|
|
3769
|
+
return db - da;
|
|
3770
|
+
});
|
|
3771
|
+
setReleases(pressOnly);
|
|
3772
|
+
} catch {
|
|
3773
|
+
setReleases([]);
|
|
3774
|
+
} finally {
|
|
3775
|
+
setReleasesLoading(false);
|
|
3776
|
+
}
|
|
3777
|
+
}, [client, resolvedProductId, showPressReleases]);
|
|
3778
|
+
useEffect(() => {
|
|
3779
|
+
fetchReleases();
|
|
3780
|
+
}, [fetchReleases]);
|
|
3460
3781
|
const presentCategories = CATEGORY_ORDER.filter(
|
|
3461
3782
|
(c) => assets.some((a) => a.category === c)
|
|
3462
3783
|
);
|
|
@@ -3499,6 +3820,31 @@ function PressKitPage(props) {
|
|
|
3499
3820
|
)
|
|
3500
3821
|
] })
|
|
3501
3822
|
] }) }) }),
|
|
3823
|
+
showPressReleases && (releasesLoading || releases.length > 0) && /* @__PURE__ */ jsx("section", { className: "pb-16 sm:pb-20", children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
3824
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-foreground mb-6", children: pressReleasesTitle }),
|
|
3825
|
+
/* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: releasesLoading ? [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(
|
|
3826
|
+
"div",
|
|
3827
|
+
{
|
|
3828
|
+
className: "bg-card border rounded-xl overflow-hidden animate-pulse",
|
|
3829
|
+
children: [
|
|
3830
|
+
/* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted" }),
|
|
3831
|
+
/* @__PURE__ */ jsxs("div", { className: "p-5 space-y-3", children: [
|
|
3832
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/4" }),
|
|
3833
|
+
/* @__PURE__ */ jsx("div", { className: "h-5 bg-muted rounded w-3/4" }),
|
|
3834
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/2" })
|
|
3835
|
+
] })
|
|
3836
|
+
]
|
|
3837
|
+
},
|
|
3838
|
+
i
|
|
3839
|
+
)) : releases.map((r) => /* @__PURE__ */ jsx(
|
|
3840
|
+
PressReleaseCard,
|
|
3841
|
+
{
|
|
3842
|
+
release: r,
|
|
3843
|
+
basePath: pressReleaseBasePath
|
|
3844
|
+
},
|
|
3845
|
+
r.id
|
|
3846
|
+
)) })
|
|
3847
|
+
] }) }),
|
|
3502
3848
|
/* @__PURE__ */ jsx("section", { className: "pb-16 sm:pb-20", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: loading ? /* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: [1, 2, 3, 4, 5, 6].map((i) => /* @__PURE__ */ jsxs(
|
|
3503
3849
|
"div",
|
|
3504
3850
|
{
|
|
@@ -3543,7 +3889,7 @@ function PressKitPage(props) {
|
|
|
3543
3889
|
}) }),
|
|
3544
3890
|
grouped.map((group) => /* @__PURE__ */ jsxs("div", { className: "mb-12", children: [
|
|
3545
3891
|
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-foreground mb-5", children: CATEGORY_LABELS[group.cat] ?? group.cat }),
|
|
3546
|
-
/* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: group.items.map((a) => /* @__PURE__ */ jsx(AssetCard, { asset: a }, a.id)) })
|
|
3892
|
+
/* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: group.items.map((a) => /* @__PURE__ */ jsx(AssetCard, { asset: a, onPreview: setPreview }, a.id)) })
|
|
3547
3893
|
] }, group.cat)),
|
|
3548
3894
|
contactEmail && /* @__PURE__ */ jsxs("div", { className: "mt-8 border-t pt-10 text-center", children: [
|
|
3549
3895
|
/* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-foreground mb-2", children: "Media Contact" }),
|
|
@@ -3560,7 +3906,8 @@ function PressKitPage(props) {
|
|
|
3560
3906
|
)
|
|
3561
3907
|
] })
|
|
3562
3908
|
] })
|
|
3563
|
-
] }) }) })
|
|
3909
|
+
] }) }) }),
|
|
3910
|
+
/* @__PURE__ */ jsx(PressKitLightbox, { asset: preview, onClose: () => setPreview(null) })
|
|
3564
3911
|
] });
|
|
3565
3912
|
}
|
|
3566
3913
|
|