@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/content/index.mjs
CHANGED
|
@@ -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 {
|
|
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__ */
|
|
708
|
+
/* @__PURE__ */ jsxs(
|
|
702
709
|
"a",
|
|
703
710
|
{
|
|
704
711
|
href: blogListUrl,
|
|
705
712
|
className: "text-primary hover:underline font-medium",
|
|
706
|
-
children:
|
|
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__ */
|
|
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:
|
|
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
|
|
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
|
-
|
|
820
|
-
"
|
|
1030
|
+
onPreview && isImageAsset(asset) ? /* @__PURE__ */ jsx(
|
|
1031
|
+
"button",
|
|
821
1032
|
{
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
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
|
-
)
|
|
828
|
-
"
|
|
1039
|
+
) : /* @__PURE__ */ jsx(
|
|
1040
|
+
"a",
|
|
829
1041
|
{
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
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
|
|