@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.
@@ -480,19 +480,21 @@ function BlogCard({
480
480
  month: "long",
481
481
  day: "numeric"
482
482
  }) : "";
483
+ const [imgError, setImgError] = useState(false);
483
484
  return /* @__PURE__ */ jsxs(
484
485
  "a",
485
486
  {
486
487
  href: `${basePath}/${post.slug}`,
487
488
  className: "group block bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300",
488
489
  children: [
489
- post.thumbnail ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsx(
490
+ post.thumbnail && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsx(
490
491
  "img",
491
492
  {
492
493
  src: post.thumbnail,
493
494
  alt: post.title,
494
495
  className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
495
- loading: "lazy"
496
+ loading: "lazy",
497
+ onError: () => setImgError(true)
496
498
  }
497
499
  ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
498
500
  "svg",
@@ -654,7 +656,12 @@ function BlogListPage(props) {
654
656
  ] });
655
657
  }
656
658
  function BlogPostPage(props) {
657
- const { productName, blogListUrl = "/blog", className = "" } = props;
659
+ const {
660
+ productName,
661
+ blogListUrl = "/blog",
662
+ backLabel = "Back to Blog",
663
+ className = ""
664
+ } = props;
658
665
  const client = useWebSDK();
659
666
  const config = useWebSDKConfig();
660
667
  const { product } = useProduct();
@@ -698,12 +705,15 @@ function BlogPostPage(props) {
698
705
  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: [
699
706
  /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold mb-4", children: "Post not found" }),
700
707
  /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-6", children: error || "This blog post doesn't exist or has been removed." }),
701
- /* @__PURE__ */ jsx(
708
+ /* @__PURE__ */ jsxs(
702
709
  "a",
703
710
  {
704
711
  href: blogListUrl,
705
712
  className: "text-primary hover:underline font-medium",
706
- children: "\u2190 Back to Blog"
713
+ children: [
714
+ "\u2190 ",
715
+ backLabel
716
+ ]
707
717
  }
708
718
  )
709
719
  ] }) });
@@ -725,12 +735,15 @@ function BlogPostPage(props) {
725
735
  }
726
736
  ),
727
737
  /* @__PURE__ */ jsxs("article", { className: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16 sm:py-20", children: [
728
- /* @__PURE__ */ jsx(
738
+ /* @__PURE__ */ jsxs(
729
739
  "a",
730
740
  {
731
741
  href: blogListUrl,
732
742
  className: "inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground mb-8 transition-colors",
733
- children: "\u2190 Back to Blog"
743
+ children: [
744
+ "\u2190 ",
745
+ backLabel
746
+ ]
734
747
  }
735
748
  ),
736
749
  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 }),
@@ -783,6 +796,29 @@ var PRESS_KIT_QUERY = `
783
796
  }
784
797
  }
785
798
  `;
799
+ var PRESS_RELEASES_QUERY = `
800
+ query PublicPressReleases($productId: String!, $limit: Int, $offset: Int) {
801
+ publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
802
+ items {
803
+ id
804
+ title
805
+ slug
806
+ lastUpdated
807
+ tags
808
+ seoDescription
809
+ excerpt
810
+ thumbnail
811
+ author
812
+ publishedAt
813
+ readingTime
814
+ featured
815
+ category
816
+ }
817
+ total
818
+ hasMore
819
+ }
820
+ }
821
+ `;
786
822
  var CATEGORY_ORDER = [
787
823
  "LOGO",
788
824
  "BANNER",
@@ -807,7 +843,154 @@ function formatBytes(bytes) {
807
843
  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
808
844
  return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
809
845
  }
810
- function AssetCard({ asset }) {
846
+ function isImageAsset(a) {
847
+ return (a.mimeType || "").startsWith("image/");
848
+ }
849
+ async function downloadAsset(e, asset) {
850
+ e.preventDefault();
851
+ const openInTab = () => window.open(asset.fileUrl, "_blank", "noopener,noreferrer");
852
+ const name = asset.fileName || asset.fileUrl.split("/").pop()?.split("?")[0] || asset.title || "download";
853
+ try {
854
+ const res = await fetch(asset.fileUrl, { mode: "cors" });
855
+ if (!res.ok) {
856
+ openInTab();
857
+ return;
858
+ }
859
+ const blob = await res.blob();
860
+ const objUrl = URL.createObjectURL(blob);
861
+ const a = document.createElement("a");
862
+ a.href = objUrl;
863
+ a.download = name;
864
+ document.body.appendChild(a);
865
+ a.click();
866
+ a.remove();
867
+ URL.revokeObjectURL(objUrl);
868
+ } catch {
869
+ openInTab();
870
+ }
871
+ }
872
+ function PressKitLightbox({
873
+ asset,
874
+ onClose
875
+ }) {
876
+ useEffect(() => {
877
+ if (!asset) return;
878
+ const onKey = (e) => {
879
+ if (e.key === "Escape") onClose();
880
+ };
881
+ document.addEventListener("keydown", onKey);
882
+ const prevOverflow = document.body.style.overflow;
883
+ document.body.style.overflow = "hidden";
884
+ return () => {
885
+ document.removeEventListener("keydown", onKey);
886
+ document.body.style.overflow = prevOverflow;
887
+ };
888
+ }, [asset, onClose]);
889
+ if (!asset) return null;
890
+ const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
891
+ const size = formatBytes(asset.fileSize);
892
+ return /* @__PURE__ */ jsx(
893
+ "div",
894
+ {
895
+ role: "dialog",
896
+ "aria-modal": "true",
897
+ "aria-label": `${asset.title} preview`,
898
+ onClick: onClose,
899
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4 sm:p-8",
900
+ children: /* @__PURE__ */ jsxs(
901
+ "div",
902
+ {
903
+ onClick: (e) => e.stopPropagation(),
904
+ className: "relative flex max-h-full w-full max-w-4xl flex-col overflow-hidden rounded-xl border bg-card shadow-2xl",
905
+ children: [
906
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4 border-b p-4", children: [
907
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
908
+ /* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-semibold text-foreground", children: asset.title }),
909
+ /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
910
+ ext,
911
+ size ? ` \xB7 ${size}` : ""
912
+ ] })
913
+ ] }),
914
+ /* @__PURE__ */ jsx(
915
+ "button",
916
+ {
917
+ type: "button",
918
+ onClick: onClose,
919
+ "aria-label": "Close preview",
920
+ className: "shrink-0 rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
921
+ children: /* @__PURE__ */ jsx(
922
+ "svg",
923
+ {
924
+ className: "h-5 w-5",
925
+ fill: "none",
926
+ viewBox: "0 0 24 24",
927
+ stroke: "currentColor",
928
+ strokeWidth: 2,
929
+ children: /* @__PURE__ */ jsx(
930
+ "path",
931
+ {
932
+ strokeLinecap: "round",
933
+ strokeLinejoin: "round",
934
+ d: "M6 18L18 6M6 6l12 12"
935
+ }
936
+ )
937
+ }
938
+ )
939
+ }
940
+ )
941
+ ] }),
942
+ /* @__PURE__ */ jsx("div", { className: "flex flex-1 items-center justify-center overflow-auto bg-muted/20 p-4", children: /* @__PURE__ */ jsx(
943
+ "img",
944
+ {
945
+ src: asset.fileUrl,
946
+ alt: asset.title,
947
+ className: "max-h-[70vh] w-auto max-w-full object-contain"
948
+ }
949
+ ) }),
950
+ /* @__PURE__ */ jsx("div", { className: "flex justify-end border-t p-4", children: /* @__PURE__ */ jsxs(
951
+ "a",
952
+ {
953
+ href: asset.fileUrl,
954
+ target: "_blank",
955
+ rel: "noopener noreferrer",
956
+ download: true,
957
+ onClick: (e) => {
958
+ void downloadAsset(e, asset);
959
+ },
960
+ 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",
961
+ children: [
962
+ /* @__PURE__ */ jsx(
963
+ "svg",
964
+ {
965
+ className: "h-4 w-4",
966
+ fill: "none",
967
+ viewBox: "0 0 24 24",
968
+ stroke: "currentColor",
969
+ strokeWidth: 2,
970
+ children: /* @__PURE__ */ jsx(
971
+ "path",
972
+ {
973
+ strokeLinecap: "round",
974
+ strokeLinejoin: "round",
975
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
976
+ }
977
+ )
978
+ }
979
+ ),
980
+ "Download"
981
+ ]
982
+ }
983
+ ) })
984
+ ]
985
+ }
986
+ )
987
+ }
988
+ );
989
+ }
990
+ function AssetCard({
991
+ asset,
992
+ onPreview
993
+ }) {
811
994
  const date = asset.updatedAt ? new Date(asset.updatedAt).toLocaleDateString("en-US", {
812
995
  year: "numeric",
813
996
  month: "short",
@@ -815,33 +998,55 @@ function AssetCard({ asset }) {
815
998
  }) : "";
816
999
  const ext = (asset.mimeType || "file").split("/").pop()?.toUpperCase() || "FILE";
817
1000
  const size = formatBytes(asset.fileSize);
1001
+ const [imgError, setImgError] = useState(false);
1002
+ const thumb = asset.thumbnailUrl && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
1003
+ "img",
1004
+ {
1005
+ src: asset.thumbnailUrl,
1006
+ alt: asset.title,
1007
+ className: "w-full h-full object-contain group-hover:scale-105 transition-transform duration-300",
1008
+ loading: "lazy",
1009
+ onError: () => setImgError(true)
1010
+ }
1011
+ ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
1012
+ "svg",
1013
+ {
1014
+ className: "w-12 h-12 text-muted-foreground/20",
1015
+ fill: "none",
1016
+ viewBox: "0 0 24 24",
1017
+ stroke: "currentColor",
1018
+ children: /* @__PURE__ */ jsx(
1019
+ "path",
1020
+ {
1021
+ strokeLinecap: "round",
1022
+ strokeLinejoin: "round",
1023
+ strokeWidth: 1.5,
1024
+ 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"
1025
+ }
1026
+ )
1027
+ }
1028
+ ) });
818
1029
  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: [
819
- asset.thumbnailUrl ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
820
- "img",
1030
+ onPreview && isImageAsset(asset) ? /* @__PURE__ */ jsx(
1031
+ "button",
821
1032
  {
822
- src: asset.thumbnailUrl,
823
- alt: asset.title,
824
- className: "w-full h-full object-contain group-hover:scale-105 transition-transform duration-300",
825
- loading: "lazy"
1033
+ type: "button",
1034
+ onClick: () => onPreview(asset),
1035
+ "aria-label": `Preview ${asset.title}`,
1036
+ className: "block w-full text-left cursor-zoom-in",
1037
+ children: thumb
826
1038
  }
827
- ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
828
- "svg",
1039
+ ) : /* @__PURE__ */ jsx(
1040
+ "a",
829
1041
  {
830
- className: "w-12 h-12 text-muted-foreground/20",
831
- fill: "none",
832
- viewBox: "0 0 24 24",
833
- stroke: "currentColor",
834
- children: /* @__PURE__ */ jsx(
835
- "path",
836
- {
837
- strokeLinecap: "round",
838
- strokeLinejoin: "round",
839
- strokeWidth: 1.5,
840
- 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"
841
- }
842
- )
1042
+ href: asset.fileUrl,
1043
+ target: "_blank",
1044
+ rel: "noopener noreferrer",
1045
+ "aria-label": `Open ${asset.title}`,
1046
+ className: "block",
1047
+ children: thumb
843
1048
  }
844
- ) }),
1049
+ ),
845
1050
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5", children: [
846
1051
  /* @__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 }),
847
1052
  /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-foreground mb-1 line-clamp-2", children: asset.title }),
@@ -865,6 +1070,9 @@ function AssetCard({ asset }) {
865
1070
  target: "_blank",
866
1071
  rel: "noopener noreferrer",
867
1072
  download: true,
1073
+ onClick: (e) => {
1074
+ void downloadAsset(e, asset);
1075
+ },
868
1076
  className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline",
869
1077
  children: [
870
1078
  /* @__PURE__ */ jsx(
@@ -893,6 +1101,71 @@ function AssetCard({ asset }) {
893
1101
  ] })
894
1102
  ] });
895
1103
  }
1104
+ function PressReleaseCard({
1105
+ release,
1106
+ basePath
1107
+ }) {
1108
+ const date = release.publishedAt || release.lastUpdated;
1109
+ const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
1110
+ year: "numeric",
1111
+ month: "long",
1112
+ day: "numeric"
1113
+ }) : "";
1114
+ const [imgError, setImgError] = useState(false);
1115
+ return /* @__PURE__ */ jsxs(
1116
+ "a",
1117
+ {
1118
+ href: `${basePath}/${release.slug}`,
1119
+ className: "group flex flex-col bg-card border rounded-xl overflow-hidden hover:shadow-lg hover:border-primary/30 transition-all duration-300",
1120
+ children: [
1121
+ release.thumbnail && !imgError ? /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden bg-muted/30", children: /* @__PURE__ */ jsx(
1122
+ "img",
1123
+ {
1124
+ src: release.thumbnail,
1125
+ alt: release.title,
1126
+ className: "w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
1127
+ loading: "lazy",
1128
+ onError: () => setImgError(true)
1129
+ }
1130
+ ) }) : /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted/50 flex items-center justify-center", children: /* @__PURE__ */ jsx(
1131
+ "svg",
1132
+ {
1133
+ className: "w-12 h-12 text-muted-foreground/20",
1134
+ fill: "none",
1135
+ viewBox: "0 0 24 24",
1136
+ stroke: "currentColor",
1137
+ children: /* @__PURE__ */ jsx(
1138
+ "path",
1139
+ {
1140
+ strokeLinecap: "round",
1141
+ strokeLinejoin: "round",
1142
+ strokeWidth: 1.5,
1143
+ 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"
1144
+ }
1145
+ )
1146
+ }
1147
+ ) }),
1148
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 p-5 sm:p-6", children: [
1149
+ 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 }),
1150
+ /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-foreground mb-2 group-hover:text-primary transition-colors line-clamp-2", children: release.title }),
1151
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mb-4 line-clamp-3", children: release.excerpt || release.seoDescription || "" }),
1152
+ /* @__PURE__ */ jsxs("div", { className: "mt-auto flex items-center gap-3 text-xs text-muted-foreground", children: [
1153
+ release.author && /* @__PURE__ */ jsx("span", { className: "font-medium", children: release.author }),
1154
+ release.author && formattedDate && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
1155
+ formattedDate && /* @__PURE__ */ jsx("span", { children: formattedDate }),
1156
+ release.readingTime ? /* @__PURE__ */ jsxs(Fragment, { children: [
1157
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
1158
+ /* @__PURE__ */ jsxs("span", { children: [
1159
+ release.readingTime,
1160
+ " min read"
1161
+ ] })
1162
+ ] }) : null
1163
+ ] })
1164
+ ] })
1165
+ ]
1166
+ }
1167
+ );
1168
+ }
896
1169
  function PressKitPage(props) {
897
1170
  const {
898
1171
  productName,
@@ -903,7 +1176,10 @@ function PressKitPage(props) {
903
1176
  className = "",
904
1177
  seoTitle,
905
1178
  seoDescription,
906
- seoKeywords
1179
+ seoKeywords,
1180
+ showPressReleases = true,
1181
+ pressReleaseBasePath = "/press",
1182
+ pressReleasesTitle = "Press Releases"
907
1183
  } = props;
908
1184
  const client = useWebSDK();
909
1185
  const config = useWebSDKConfig();
@@ -914,6 +1190,9 @@ function PressKitPage(props) {
914
1190
  const [loading, setLoading] = useState(true);
915
1191
  const [error, setError] = useState(null);
916
1192
  const [activeCategory, setActiveCategory] = useState("ALL");
1193
+ const [releases, setReleases] = useState([]);
1194
+ const [releasesLoading, setReleasesLoading] = useState(true);
1195
+ const [preview, setPreview] = useState(null);
917
1196
  const fetchAssets = useCallback(async () => {
918
1197
  if (!resolvedProductId) {
919
1198
  setLoading(false);
@@ -951,6 +1230,48 @@ function PressKitPage(props) {
951
1230
  useEffect(() => {
952
1231
  fetchAssets();
953
1232
  }, [fetchAssets]);
1233
+ const fetchReleases = useCallback(async () => {
1234
+ if (!resolvedProductId || !showPressReleases) {
1235
+ setReleasesLoading(false);
1236
+ return;
1237
+ }
1238
+ setReleasesLoading(true);
1239
+ try {
1240
+ const PAGE_SIZE = 100;
1241
+ const MAX_PAGES = 10;
1242
+ const all = [];
1243
+ let offset = 0;
1244
+ for (let pageNum = 0; pageNum < MAX_PAGES; pageNum++) {
1245
+ const result = await client.query(PRESS_RELEASES_QUERY, {
1246
+ productId: resolvedProductId,
1247
+ limit: PAGE_SIZE,
1248
+ offset
1249
+ });
1250
+ if (result.errors?.length) {
1251
+ setReleases([]);
1252
+ return;
1253
+ }
1254
+ const page = result.data?.publicContentPages;
1255
+ const items = page?.items || [];
1256
+ all.push(...items);
1257
+ if (!page?.hasMore || items.length === 0) break;
1258
+ offset += PAGE_SIZE;
1259
+ }
1260
+ const pressOnly = all.filter((p) => p.tags?.includes("press")).sort((a, b) => {
1261
+ const da = new Date(a.publishedAt || a.lastUpdated || 0).getTime();
1262
+ const db = new Date(b.publishedAt || b.lastUpdated || 0).getTime();
1263
+ return db - da;
1264
+ });
1265
+ setReleases(pressOnly);
1266
+ } catch {
1267
+ setReleases([]);
1268
+ } finally {
1269
+ setReleasesLoading(false);
1270
+ }
1271
+ }, [client, resolvedProductId, showPressReleases]);
1272
+ useEffect(() => {
1273
+ fetchReleases();
1274
+ }, [fetchReleases]);
954
1275
  const presentCategories = CATEGORY_ORDER.filter(
955
1276
  (c) => assets.some((a) => a.category === c)
956
1277
  );
@@ -993,6 +1314,31 @@ function PressKitPage(props) {
993
1314
  )
994
1315
  ] })
995
1316
  ] }) }) }),
1317
+ 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: [
1318
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-foreground mb-6", children: pressReleasesTitle }),
1319
+ /* @__PURE__ */ jsx("div", { className: "grid sm:grid-cols-2 lg:grid-cols-3 gap-6", children: releasesLoading ? [1, 2, 3].map((i) => /* @__PURE__ */ jsxs(
1320
+ "div",
1321
+ {
1322
+ className: "bg-card border rounded-xl overflow-hidden animate-pulse",
1323
+ children: [
1324
+ /* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted" }),
1325
+ /* @__PURE__ */ jsxs("div", { className: "p-5 space-y-3", children: [
1326
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/4" }),
1327
+ /* @__PURE__ */ jsx("div", { className: "h-5 bg-muted rounded w-3/4" }),
1328
+ /* @__PURE__ */ jsx("div", { className: "h-4 bg-muted rounded w-1/2" })
1329
+ ] })
1330
+ ]
1331
+ },
1332
+ i
1333
+ )) : releases.map((r) => /* @__PURE__ */ jsx(
1334
+ PressReleaseCard,
1335
+ {
1336
+ release: r,
1337
+ basePath: pressReleaseBasePath
1338
+ },
1339
+ r.id
1340
+ )) })
1341
+ ] }) }),
996
1342
  /* @__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(
997
1343
  "div",
998
1344
  {
@@ -1037,7 +1383,7 @@ function PressKitPage(props) {
1037
1383
  }) }),
1038
1384
  grouped.map((group) => /* @__PURE__ */ jsxs("div", { className: "mb-12", children: [
1039
1385
  /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-foreground mb-5", children: CATEGORY_LABELS[group.cat] ?? group.cat }),
1040
- /* @__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)) })
1386
+ /* @__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)) })
1041
1387
  ] }, group.cat)),
1042
1388
  contactEmail && /* @__PURE__ */ jsxs("div", { className: "mt-8 border-t pt-10 text-center", children: [
1043
1389
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-foreground mb-2", children: "Media Contact" }),
@@ -1054,7 +1400,8 @@ function PressKitPage(props) {
1054
1400
  )
1055
1401
  ] })
1056
1402
  ] })
1057
- ] }) }) })
1403
+ ] }) }) }),
1404
+ /* @__PURE__ */ jsx(PressKitLightbox, { asset: preview, onClose: () => setPreview(null) })
1058
1405
  ] });
1059
1406
  }
1060
1407