@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/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 { productName, blogListUrl = "/blog", className = "" } = props;
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__ */ jsx(
3214
+ /* @__PURE__ */ jsxs(
3208
3215
  "a",
3209
3216
  {
3210
3217
  href: blogListUrl,
3211
3218
  className: "text-primary hover:underline font-medium",
3212
- children: "\u2190 Back to Blog"
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__ */ jsx(
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: "\u2190 Back to Blog"
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 AssetCard({ asset }) {
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
- asset.thumbnailUrl ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
3326
- "img",
3536
+ onPreview && isImageAsset(asset) ? /* @__PURE__ */ jsx(
3537
+ "button",
3327
3538
  {
3328
- src: asset.thumbnailUrl,
3329
- alt: asset.title,
3330
- className: "w-full h-full object-contain group-hover:scale-105 transition-transform duration-300",
3331
- loading: "lazy"
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
- ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
3334
- "svg",
3545
+ ) : /* @__PURE__ */ jsx(
3546
+ "a",
3335
3547
  {
3336
- className: "w-12 h-12 text-muted-foreground/20",
3337
- fill: "none",
3338
- viewBox: "0 0 24 24",
3339
- stroke: "currentColor",
3340
- children: /* @__PURE__ */ jsx(
3341
- "path",
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