@burdenoff/website-sdk 2026.719.4 → 2026.719.6
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 +18 -0
- package/dist/content/index.d.ts +18 -0
- package/dist/content/index.js +488 -96
- package/dist/content/index.js.map +1 -1
- package/dist/content/index.mjs +489 -97
- package/dist/content/index.mjs.map +1 -1
- package/dist/index.js +488 -96
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +488 -96
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/content/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { createContext, useState, useCallback, useEffect,
|
|
2
|
+
import { createContext, useState, useCallback, useEffect, useMemo, useContext } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { Helmet } from 'react-helmet-async';
|
|
5
5
|
import { History, Search, ChevronLeft, ChevronRight } from 'lucide-react';
|
|
@@ -779,6 +779,18 @@ function BlogPostPage(props) {
|
|
|
779
779
|
] });
|
|
780
780
|
}
|
|
781
781
|
var CASE_STUDY_TAG = "case-study";
|
|
782
|
+
var ANIMATION_STYLES = `
|
|
783
|
+
@keyframes csFadeUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
|
|
784
|
+
@keyframes csFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
|
|
785
|
+
.cs-fade-up { animation: csFadeUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) both; }
|
|
786
|
+
.cs-float { animation: csFloat 7s ease-in-out infinite; }
|
|
787
|
+
@media (prefers-reduced-motion: reduce) {
|
|
788
|
+
.cs-fade-up, .cs-float { animation: none !important; }
|
|
789
|
+
}
|
|
790
|
+
`;
|
|
791
|
+
function AnimationStyles() {
|
|
792
|
+
return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: ANIMATION_STYLES } });
|
|
793
|
+
}
|
|
782
794
|
var CASE_STUDIES_QUERY = `
|
|
783
795
|
query CaseStudies($productId: String!, $limit: Int, $offset: Int) {
|
|
784
796
|
publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
|
|
@@ -825,91 +837,355 @@ var CASE_STUDY_QUERY = `
|
|
|
825
837
|
}
|
|
826
838
|
}
|
|
827
839
|
`;
|
|
828
|
-
function
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
|
|
840
|
+
function formatDate(value) {
|
|
841
|
+
if (!value) return "";
|
|
842
|
+
const d = new Date(value);
|
|
843
|
+
if (Number.isNaN(d.getTime())) return "";
|
|
844
|
+
return d.toLocaleDateString("en-US", {
|
|
834
845
|
year: "numeric",
|
|
835
846
|
month: "long",
|
|
836
847
|
day: "numeric"
|
|
837
|
-
})
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
function Thumbnail({
|
|
851
|
+
src,
|
|
852
|
+
alt,
|
|
853
|
+
className = ""
|
|
854
|
+
}) {
|
|
838
855
|
const [imgError, setImgError] = useState(false);
|
|
856
|
+
if (src && !imgError) {
|
|
857
|
+
return /* @__PURE__ */ jsx(
|
|
858
|
+
"img",
|
|
859
|
+
{
|
|
860
|
+
src,
|
|
861
|
+
alt,
|
|
862
|
+
className,
|
|
863
|
+
loading: "lazy",
|
|
864
|
+
onError: () => setImgError(true)
|
|
865
|
+
}
|
|
866
|
+
);
|
|
867
|
+
}
|
|
868
|
+
return /* @__PURE__ */ jsx(
|
|
869
|
+
"div",
|
|
870
|
+
{
|
|
871
|
+
className: `flex items-center justify-center bg-gradient-to-br from-muted/60 to-muted ${className}`,
|
|
872
|
+
"aria-hidden": "true",
|
|
873
|
+
children: /* @__PURE__ */ jsx(
|
|
874
|
+
"svg",
|
|
875
|
+
{
|
|
876
|
+
className: "w-12 h-12 text-muted-foreground/25",
|
|
877
|
+
fill: "none",
|
|
878
|
+
viewBox: "0 0 24 24",
|
|
879
|
+
stroke: "currentColor",
|
|
880
|
+
children: /* @__PURE__ */ jsx(
|
|
881
|
+
"path",
|
|
882
|
+
{
|
|
883
|
+
strokeLinecap: "round",
|
|
884
|
+
strokeLinejoin: "round",
|
|
885
|
+
strokeWidth: 1.5,
|
|
886
|
+
d: "M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"
|
|
887
|
+
}
|
|
888
|
+
)
|
|
889
|
+
}
|
|
890
|
+
)
|
|
891
|
+
}
|
|
892
|
+
);
|
|
893
|
+
}
|
|
894
|
+
function MetaRow({
|
|
895
|
+
post,
|
|
896
|
+
className = ""
|
|
897
|
+
}) {
|
|
898
|
+
const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
|
|
899
|
+
return /* @__PURE__ */ jsxs(
|
|
900
|
+
"div",
|
|
901
|
+
{
|
|
902
|
+
className: `flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground ${className}`,
|
|
903
|
+
children: [
|
|
904
|
+
post.author && /* @__PURE__ */ jsx("span", { className: "font-medium", children: post.author }),
|
|
905
|
+
post.author && formattedDate && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
906
|
+
formattedDate && /* @__PURE__ */ jsx("span", { children: formattedDate }),
|
|
907
|
+
post.readingTime ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
908
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
909
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
910
|
+
post.readingTime,
|
|
911
|
+
" min read"
|
|
912
|
+
] })
|
|
913
|
+
] }) : null
|
|
914
|
+
]
|
|
915
|
+
}
|
|
916
|
+
);
|
|
917
|
+
}
|
|
918
|
+
function FeaturedCard({
|
|
919
|
+
post,
|
|
920
|
+
basePath
|
|
921
|
+
}) {
|
|
839
922
|
return /* @__PURE__ */ jsxs(
|
|
840
923
|
"a",
|
|
841
924
|
{
|
|
842
925
|
href: `${basePath}/${post.slug}`,
|
|
843
|
-
className: "group
|
|
926
|
+
className: "group relative grid md:grid-cols-2 gap-0 overflow-hidden rounded-2xl border bg-card shadow-sm transition-all duration-300 hover:-translate-y-1 hover:shadow-xl hover:border-primary/40",
|
|
844
927
|
children: [
|
|
845
|
-
|
|
846
|
-
|
|
928
|
+
/* @__PURE__ */ jsxs("div", { className: "relative aspect-[16/10] md:aspect-auto md:h-full overflow-hidden", children: [
|
|
929
|
+
/* @__PURE__ */ jsx(
|
|
930
|
+
Thumbnail,
|
|
931
|
+
{
|
|
932
|
+
src: post.thumbnail,
|
|
933
|
+
alt: post.title,
|
|
934
|
+
className: "w-full h-full min-h-[220px] object-cover transition-transform duration-500 group-hover:scale-[1.04]"
|
|
935
|
+
}
|
|
936
|
+
),
|
|
937
|
+
/* @__PURE__ */ jsxs("span", { className: "absolute top-4 left-4 inline-flex items-center gap-1 rounded-full bg-primary px-2.5 py-1 text-xs font-semibold text-primary-foreground shadow-sm", children: [
|
|
938
|
+
/* @__PURE__ */ jsx(
|
|
939
|
+
"svg",
|
|
940
|
+
{
|
|
941
|
+
className: "h-3 w-3",
|
|
942
|
+
viewBox: "0 0 20 20",
|
|
943
|
+
fill: "currentColor",
|
|
944
|
+
"aria-hidden": "true",
|
|
945
|
+
children: /* @__PURE__ */ jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.286 3.957a1 1 0 00.95.69h4.162c.969 0 1.371 1.24.588 1.81l-3.368 2.447a1 1 0 00-.364 1.118l1.287 3.957c.3.921-.755 1.688-1.54 1.118l-3.367-2.447a1 1 0 00-1.176 0l-3.367 2.447c-.784.57-1.838-.197-1.539-1.118l1.286-3.957a1 1 0 00-.363-1.118L2.98 9.384c-.783-.57-.38-1.81.588-1.81h4.162a1 1 0 00.95-.69l1.286-3.957z" })
|
|
946
|
+
}
|
|
947
|
+
),
|
|
948
|
+
"Featured"
|
|
949
|
+
] })
|
|
950
|
+
] }),
|
|
951
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center p-6 sm:p-8", children: [
|
|
952
|
+
post.category && /* @__PURE__ */ jsx("span", { className: "mb-3 inline-block w-fit rounded-full bg-primary/10 px-2.5 py-1 text-xs font-medium text-primary", children: post.category }),
|
|
953
|
+
/* @__PURE__ */ jsx("h3", { className: "text-xl sm:text-2xl font-bold text-foreground transition-colors group-hover:text-primary line-clamp-3", children: post.title }),
|
|
954
|
+
/* @__PURE__ */ jsx("p", { className: "mt-3 text-sm sm:text-base text-muted-foreground line-clamp-3", children: post.excerpt || post.seoDescription || "" }),
|
|
955
|
+
/* @__PURE__ */ jsx(MetaRow, { post, className: "mt-5" }),
|
|
956
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-5 inline-flex items-center gap-1 text-sm font-semibold text-primary", children: [
|
|
957
|
+
"Read the story",
|
|
958
|
+
/* @__PURE__ */ jsx(
|
|
959
|
+
"svg",
|
|
960
|
+
{
|
|
961
|
+
className: "h-4 w-4 transition-transform duration-300 group-hover:translate-x-1",
|
|
962
|
+
viewBox: "0 0 20 20",
|
|
963
|
+
fill: "currentColor",
|
|
964
|
+
"aria-hidden": "true",
|
|
965
|
+
children: /* @__PURE__ */ jsx(
|
|
966
|
+
"path",
|
|
967
|
+
{
|
|
968
|
+
fillRule: "evenodd",
|
|
969
|
+
d: "M7.293 4.293a1 1 0 011.414 0l5 5a1 1 0 010 1.414l-5 5a1 1 0 01-1.414-1.414L11.586 10 7.293 5.707a1 1 0 010-1.414z",
|
|
970
|
+
clipRule: "evenodd"
|
|
971
|
+
}
|
|
972
|
+
)
|
|
973
|
+
}
|
|
974
|
+
)
|
|
975
|
+
] })
|
|
976
|
+
] })
|
|
977
|
+
]
|
|
978
|
+
}
|
|
979
|
+
);
|
|
980
|
+
}
|
|
981
|
+
function CaseStudyCard({
|
|
982
|
+
post,
|
|
983
|
+
basePath = "/case-studies"
|
|
984
|
+
}) {
|
|
985
|
+
return /* @__PURE__ */ jsxs(
|
|
986
|
+
"a",
|
|
987
|
+
{
|
|
988
|
+
href: `${basePath}/${post.slug}`,
|
|
989
|
+
className: "group flex flex-col overflow-hidden rounded-xl border bg-card transition-all duration-300 hover:-translate-y-1 hover:shadow-lg hover:border-primary/40",
|
|
990
|
+
children: [
|
|
991
|
+
/* @__PURE__ */ jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
992
|
+
Thumbnail,
|
|
847
993
|
{
|
|
848
994
|
src: post.thumbnail,
|
|
849
995
|
alt: post.title,
|
|
850
|
-
className: "w-full h-full object-cover group-hover:scale-105
|
|
851
|
-
loading: "lazy",
|
|
852
|
-
onError: () => setImgError(true)
|
|
996
|
+
className: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
853
997
|
}
|
|
854
|
-
) })
|
|
998
|
+
) }),
|
|
999
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col p-5 sm:p-6", children: [
|
|
1000
|
+
post.category && /* @__PURE__ */ jsx("span", { className: "mb-3 inline-block w-fit rounded-full bg-primary/10 px-2.5 py-1 text-xs font-medium text-primary", children: post.category }),
|
|
1001
|
+
/* @__PURE__ */ jsx("h3", { className: "mb-2 text-lg font-semibold text-foreground transition-colors group-hover:text-primary line-clamp-2", children: post.title }),
|
|
1002
|
+
/* @__PURE__ */ jsx("p", { className: "mb-4 text-sm text-muted-foreground line-clamp-3", children: post.excerpt || post.seoDescription || "" }),
|
|
1003
|
+
/* @__PURE__ */ jsx(MetaRow, { post, className: "mt-auto" })
|
|
1004
|
+
] })
|
|
1005
|
+
]
|
|
1006
|
+
}
|
|
1007
|
+
);
|
|
1008
|
+
}
|
|
1009
|
+
function EmptyState({
|
|
1010
|
+
productLabel,
|
|
1011
|
+
title,
|
|
1012
|
+
subtitle,
|
|
1013
|
+
contactHref,
|
|
1014
|
+
contactLabel,
|
|
1015
|
+
exploreHref,
|
|
1016
|
+
exploreLabel
|
|
1017
|
+
}) {
|
|
1018
|
+
const highlights = [
|
|
1019
|
+
{
|
|
1020
|
+
title: "Real outcomes, real teams",
|
|
1021
|
+
body: `We're partnering with our earliest adopters right now. As they ship results with ${productLabel}, their stories will land here \u2014 measured and unembellished.`,
|
|
1022
|
+
icon: /* @__PURE__ */ jsx(
|
|
1023
|
+
"path",
|
|
1024
|
+
{
|
|
1025
|
+
strokeLinecap: "round",
|
|
1026
|
+
strokeLinejoin: "round",
|
|
1027
|
+
strokeWidth: 1.5,
|
|
1028
|
+
d: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"
|
|
1029
|
+
}
|
|
1030
|
+
)
|
|
1031
|
+
},
|
|
1032
|
+
{
|
|
1033
|
+
title: "See it on your use case",
|
|
1034
|
+
body: `Want to know how ${productLabel} would work for your team? We'll walk you through exactly what to expect \u2014 no pitch, just specifics.`,
|
|
1035
|
+
icon: /* @__PURE__ */ jsx(
|
|
1036
|
+
"path",
|
|
1037
|
+
{
|
|
1038
|
+
strokeLinecap: "round",
|
|
1039
|
+
strokeLinejoin: "round",
|
|
1040
|
+
strokeWidth: 1.5,
|
|
1041
|
+
d: "M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z M15 12a3 3 0 11-6 0 3 3 0 016 0z"
|
|
1042
|
+
}
|
|
1043
|
+
)
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
title: "Be the first story",
|
|
1047
|
+
body: `Building something with ${productLabel} worth talking about? Tell us \u2014 the best early stories become the case studies featured on this page.`,
|
|
1048
|
+
icon: /* @__PURE__ */ jsx(
|
|
1049
|
+
"path",
|
|
1050
|
+
{
|
|
1051
|
+
strokeLinecap: "round",
|
|
1052
|
+
strokeLinejoin: "round",
|
|
1053
|
+
strokeWidth: 1.5,
|
|
1054
|
+
d: "M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"
|
|
1055
|
+
}
|
|
1056
|
+
)
|
|
1057
|
+
}
|
|
1058
|
+
];
|
|
1059
|
+
return /* @__PURE__ */ jsxs("div", { className: "cs-fade-up mx-auto max-w-4xl", children: [
|
|
1060
|
+
/* @__PURE__ */ jsxs("div", { className: "relative overflow-hidden rounded-3xl border bg-card px-6 py-14 text-center sm:px-12 sm:py-16", children: [
|
|
1061
|
+
/* @__PURE__ */ jsx(
|
|
1062
|
+
"div",
|
|
1063
|
+
{
|
|
1064
|
+
className: "pointer-events-none absolute -top-24 -right-16 h-64 w-64 rounded-full bg-primary/10 blur-3xl",
|
|
1065
|
+
"aria-hidden": "true"
|
|
1066
|
+
}
|
|
1067
|
+
),
|
|
1068
|
+
/* @__PURE__ */ jsx(
|
|
1069
|
+
"div",
|
|
1070
|
+
{
|
|
1071
|
+
className: "pointer-events-none absolute -bottom-24 -left-16 h-64 w-64 rounded-full bg-primary/5 blur-3xl",
|
|
1072
|
+
"aria-hidden": "true"
|
|
1073
|
+
}
|
|
1074
|
+
),
|
|
1075
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1076
|
+
/* @__PURE__ */ jsx("div", { className: "cs-float mx-auto flex h-20 w-20 items-center justify-center rounded-2xl bg-primary/10 text-primary ring-1 ring-primary/20", children: /* @__PURE__ */ jsx(
|
|
855
1077
|
"svg",
|
|
856
1078
|
{
|
|
857
|
-
className: "
|
|
1079
|
+
className: "h-10 w-10",
|
|
858
1080
|
fill: "none",
|
|
859
1081
|
viewBox: "0 0 24 24",
|
|
860
1082
|
stroke: "currentColor",
|
|
1083
|
+
"aria-hidden": "true",
|
|
861
1084
|
children: /* @__PURE__ */ jsx(
|
|
862
1085
|
"path",
|
|
863
1086
|
{
|
|
864
1087
|
strokeLinecap: "round",
|
|
865
1088
|
strokeLinejoin: "round",
|
|
866
1089
|
strokeWidth: 1.5,
|
|
867
|
-
d: "
|
|
1090
|
+
d: "M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z"
|
|
868
1091
|
}
|
|
869
1092
|
)
|
|
870
1093
|
}
|
|
871
1094
|
) }),
|
|
872
|
-
/* @__PURE__ */
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
/* @__PURE__ */
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
1095
|
+
/* @__PURE__ */ jsx("h2", { className: "mt-8 text-2xl font-bold tracking-tight text-foreground sm:text-3xl", children: title }),
|
|
1096
|
+
/* @__PURE__ */ jsx("p", { className: "mx-auto mt-4 max-w-2xl text-base leading-relaxed text-muted-foreground sm:text-lg", children: subtitle }),
|
|
1097
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row", children: [
|
|
1098
|
+
/* @__PURE__ */ jsxs(
|
|
1099
|
+
"a",
|
|
1100
|
+
{
|
|
1101
|
+
href: contactHref,
|
|
1102
|
+
className: "inline-flex w-full items-center justify-center gap-2 rounded-lg bg-primary px-6 py-3 text-sm font-semibold text-primary-foreground shadow-sm transition-all hover:opacity-90 hover:shadow-md sm:w-auto",
|
|
1103
|
+
children: [
|
|
1104
|
+
contactLabel,
|
|
1105
|
+
/* @__PURE__ */ jsx(
|
|
1106
|
+
"svg",
|
|
1107
|
+
{
|
|
1108
|
+
className: "h-4 w-4",
|
|
1109
|
+
viewBox: "0 0 20 20",
|
|
1110
|
+
fill: "currentColor",
|
|
1111
|
+
"aria-hidden": "true",
|
|
1112
|
+
children: /* @__PURE__ */ jsx(
|
|
1113
|
+
"path",
|
|
1114
|
+
{
|
|
1115
|
+
fillRule: "evenodd",
|
|
1116
|
+
d: "M7.293 4.293a1 1 0 011.414 0l5 5a1 1 0 010 1.414l-5 5a1 1 0 01-1.414-1.414L11.586 10 7.293 5.707a1 1 0 010-1.414z",
|
|
1117
|
+
clipRule: "evenodd"
|
|
1118
|
+
}
|
|
1119
|
+
)
|
|
1120
|
+
}
|
|
1121
|
+
)
|
|
1122
|
+
]
|
|
1123
|
+
}
|
|
1124
|
+
),
|
|
1125
|
+
/* @__PURE__ */ jsx(
|
|
1126
|
+
"a",
|
|
1127
|
+
{
|
|
1128
|
+
href: exploreHref,
|
|
1129
|
+
className: "inline-flex w-full items-center justify-center gap-2 rounded-lg border border-border bg-background px-6 py-3 text-sm font-semibold text-foreground transition-colors hover:bg-muted sm:w-auto",
|
|
1130
|
+
children: exploreLabel
|
|
1131
|
+
}
|
|
1132
|
+
)
|
|
888
1133
|
] })
|
|
889
|
-
]
|
|
890
|
-
}
|
|
891
|
-
|
|
1134
|
+
] })
|
|
1135
|
+
] }),
|
|
1136
|
+
/* @__PURE__ */ jsx("div", { className: "mt-8 grid gap-4 sm:grid-cols-3", children: highlights.map((h) => /* @__PURE__ */ jsxs(
|
|
1137
|
+
"div",
|
|
1138
|
+
{
|
|
1139
|
+
className: "rounded-2xl border bg-card/60 p-5 text-left transition-colors hover:border-primary/30",
|
|
1140
|
+
children: [
|
|
1141
|
+
/* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(
|
|
1142
|
+
"svg",
|
|
1143
|
+
{
|
|
1144
|
+
className: "h-5 w-5",
|
|
1145
|
+
fill: "none",
|
|
1146
|
+
viewBox: "0 0 24 24",
|
|
1147
|
+
stroke: "currentColor",
|
|
1148
|
+
"aria-hidden": "true",
|
|
1149
|
+
children: h.icon
|
|
1150
|
+
}
|
|
1151
|
+
) }),
|
|
1152
|
+
/* @__PURE__ */ jsx("h3", { className: "mt-4 text-sm font-semibold text-foreground", children: h.title }),
|
|
1153
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm leading-relaxed text-muted-foreground", children: h.body })
|
|
1154
|
+
]
|
|
1155
|
+
},
|
|
1156
|
+
h.title
|
|
1157
|
+
)) })
|
|
1158
|
+
] });
|
|
892
1159
|
}
|
|
893
1160
|
function CaseStudiesListPage(props) {
|
|
894
1161
|
const {
|
|
895
1162
|
productName,
|
|
1163
|
+
eyebrow = "Customer Stories",
|
|
896
1164
|
heroTitle = "Case Studies",
|
|
897
|
-
heroSubtitle = "Real-world stories of teams building with our platform",
|
|
1165
|
+
heroSubtitle = "Real-world stories of teams building with our platform.",
|
|
898
1166
|
caseStudyBasePath = "/case-studies",
|
|
899
1167
|
className = "",
|
|
900
1168
|
seoTitle,
|
|
901
1169
|
seoDescription,
|
|
902
|
-
seoKeywords
|
|
1170
|
+
seoKeywords,
|
|
1171
|
+
contactHref = "/contact",
|
|
1172
|
+
contactLabel = "Get in touch",
|
|
1173
|
+
exploreHref = "/features",
|
|
1174
|
+
exploreLabel = "Explore the product",
|
|
1175
|
+
emptyTitle,
|
|
1176
|
+
emptySubtitle
|
|
903
1177
|
} = props;
|
|
904
1178
|
const client = useWebSDK();
|
|
905
1179
|
const config = useWebSDKConfig();
|
|
906
1180
|
const { product } = useProduct();
|
|
907
1181
|
const resolvedProductId = product?.id || config.productId;
|
|
1182
|
+
const productLabel = product?.name || productName || "our platform";
|
|
908
1183
|
const [posts, setPosts] = useState([]);
|
|
909
1184
|
const [total, setTotal] = useState(0);
|
|
910
1185
|
const [loading, setLoading] = useState(true);
|
|
911
1186
|
const [error, setError] = useState(null);
|
|
912
1187
|
const [offset, setOffset] = useState(0);
|
|
1188
|
+
const [activeCategory, setActiveCategory] = useState("All");
|
|
913
1189
|
const limit = 12;
|
|
914
1190
|
const fetchPosts = useCallback(async () => {
|
|
915
1191
|
if (!resolvedProductId) return;
|
|
@@ -922,6 +1198,7 @@ function CaseStudiesListPage(props) {
|
|
|
922
1198
|
});
|
|
923
1199
|
if (result.errors?.length) {
|
|
924
1200
|
setError(result.errors[0]?.message ?? "Failed to load case studies");
|
|
1201
|
+
setPosts([]);
|
|
925
1202
|
return;
|
|
926
1203
|
}
|
|
927
1204
|
const caseStudies = (result.data?.publicContentPages?.items || []).filter(
|
|
@@ -931,7 +1208,8 @@ function CaseStudiesListPage(props) {
|
|
|
931
1208
|
setTotal(result.data?.publicContentPages?.total || 0);
|
|
932
1209
|
setError(null);
|
|
933
1210
|
} catch {
|
|
934
|
-
setError("
|
|
1211
|
+
setError("load-failed");
|
|
1212
|
+
setPosts([]);
|
|
935
1213
|
} finally {
|
|
936
1214
|
setLoading(false);
|
|
937
1215
|
}
|
|
@@ -939,9 +1217,25 @@ function CaseStudiesListPage(props) {
|
|
|
939
1217
|
useEffect(() => {
|
|
940
1218
|
fetchPosts();
|
|
941
1219
|
}, [fetchPosts]);
|
|
942
|
-
const
|
|
943
|
-
|
|
944
|
-
|
|
1220
|
+
const categories = useMemo(() => {
|
|
1221
|
+
const set = /* @__PURE__ */ new Set();
|
|
1222
|
+
posts.forEach((p) => {
|
|
1223
|
+
if (p.category) set.add(p.category);
|
|
1224
|
+
});
|
|
1225
|
+
return ["All", ...Array.from(set)];
|
|
1226
|
+
}, [posts]);
|
|
1227
|
+
const visiblePosts = useMemo(() => {
|
|
1228
|
+
if (activeCategory === "All") return posts;
|
|
1229
|
+
return posts.filter((p) => p.category === activeCategory);
|
|
1230
|
+
}, [posts, activeCategory]);
|
|
1231
|
+
const featuredPosts = visiblePosts.filter((p) => p.featured);
|
|
1232
|
+
const regularPosts = visiblePosts.filter((p) => !p.featured);
|
|
1233
|
+
const hasContent = !loading && !error && posts.length > 0;
|
|
1234
|
+
const showEmpty = !loading && (error !== null || posts.length === 0);
|
|
1235
|
+
const resolvedEmptyTitle = emptyTitle ?? "Case studies are on the way";
|
|
1236
|
+
const resolvedEmptySubtitle = emptySubtitle ?? `${productLabel} is early in its journey, and we'd rather show you real, measurable results than filler. We're working closely with our first teams now \u2014 their stories will be published here soon. In the meantime, we'd love to show you what's possible.`;
|
|
1237
|
+
return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, "data-cs": "case-studies-v2", children: [
|
|
1238
|
+
/* @__PURE__ */ jsx(AnimationStyles, {}),
|
|
945
1239
|
seoTitle && /* @__PURE__ */ jsx(
|
|
946
1240
|
PageHead,
|
|
947
1241
|
{
|
|
@@ -951,35 +1245,69 @@ function CaseStudiesListPage(props) {
|
|
|
951
1245
|
keywords: seoKeywords
|
|
952
1246
|
}
|
|
953
1247
|
),
|
|
954
|
-
/* @__PURE__ */
|
|
955
|
-
/* @__PURE__ */ jsx(
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1248
|
+
/* @__PURE__ */ jsxs("section", { className: "relative overflow-hidden", children: [
|
|
1249
|
+
/* @__PURE__ */ jsx(
|
|
1250
|
+
"div",
|
|
1251
|
+
{
|
|
1252
|
+
className: "pointer-events-none absolute inset-x-0 -top-32 mx-auto h-72 max-w-3xl rounded-full bg-primary/10 blur-3xl",
|
|
1253
|
+
"aria-hidden": "true"
|
|
1254
|
+
}
|
|
1255
|
+
),
|
|
1256
|
+
/* @__PURE__ */ jsx("div", { className: "relative mx-auto max-w-7xl px-4 py-16 sm:px-6 sm:py-20 md:py-24 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-3xl text-center", children: [
|
|
1257
|
+
/* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2 rounded-full border border-primary/20 bg-primary/10 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-primary", children: [
|
|
1258
|
+
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-primary" }),
|
|
1259
|
+
eyebrow
|
|
1260
|
+
] }),
|
|
1261
|
+
/* @__PURE__ */ jsx("h1", { className: "mt-5 text-3xl font-bold tracking-tight text-foreground sm:text-4xl md:text-5xl", children: heroTitle }),
|
|
1262
|
+
/* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: heroSubtitle })
|
|
1263
|
+
] }) })
|
|
1264
|
+
] }),
|
|
1265
|
+
/* @__PURE__ */ jsx("section", { className: "pb-20 sm:pb-24", children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8", children: loading ? /* @__PURE__ */ jsx("div", { className: "grid gap-6 sm:gap-8 md:grid-cols-2 lg:grid-cols-3", children: [1, 2, 3, 4, 5, 6].map((i) => /* @__PURE__ */ jsxs(
|
|
959
1266
|
"div",
|
|
960
1267
|
{
|
|
961
|
-
className: "
|
|
1268
|
+
className: "overflow-hidden rounded-xl border bg-card animate-pulse",
|
|
962
1269
|
children: [
|
|
963
1270
|
/* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted" }),
|
|
964
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
965
|
-
/* @__PURE__ */ jsx("div", { className: "h-4
|
|
966
|
-
/* @__PURE__ */ jsx("div", { className: "h-6
|
|
967
|
-
/* @__PURE__ */ jsx("div", { className: "h-4 bg-muted
|
|
968
|
-
/* @__PURE__ */ jsx("div", { className: "h-4
|
|
1271
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3 p-6", children: [
|
|
1272
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-1/4 rounded bg-muted" }),
|
|
1273
|
+
/* @__PURE__ */ jsx("div", { className: "h-6 w-3/4 rounded bg-muted" }),
|
|
1274
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 rounded bg-muted" }),
|
|
1275
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-1/2 rounded bg-muted" })
|
|
969
1276
|
] })
|
|
970
1277
|
]
|
|
971
1278
|
},
|
|
972
1279
|
i
|
|
973
|
-
)) }) :
|
|
974
|
-
|
|
975
|
-
|
|
1280
|
+
)) }) : showEmpty ? /* @__PURE__ */ jsx(
|
|
1281
|
+
EmptyState,
|
|
1282
|
+
{
|
|
1283
|
+
productLabel,
|
|
1284
|
+
title: resolvedEmptyTitle,
|
|
1285
|
+
subtitle: resolvedEmptySubtitle,
|
|
1286
|
+
contactHref,
|
|
1287
|
+
contactLabel,
|
|
1288
|
+
exploreHref,
|
|
1289
|
+
exploreLabel
|
|
1290
|
+
}
|
|
1291
|
+
) : hasContent ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1292
|
+
categories.length > 2 && /* @__PURE__ */ jsx("div", { className: "mb-10 flex flex-wrap justify-center gap-2", children: categories.map((cat) => /* @__PURE__ */ jsx(
|
|
1293
|
+
"button",
|
|
1294
|
+
{
|
|
1295
|
+
type: "button",
|
|
1296
|
+
onClick: () => setActiveCategory(cat),
|
|
1297
|
+
className: `rounded-full border px-4 py-1.5 text-sm font-medium transition-colors ${activeCategory === cat ? "border-primary bg-primary text-primary-foreground" : "border-border bg-background text-muted-foreground hover:border-primary/40 hover:text-foreground"}`,
|
|
1298
|
+
children: cat
|
|
1299
|
+
},
|
|
1300
|
+
cat
|
|
1301
|
+
)) }),
|
|
1302
|
+
featuredPosts.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-10 grid gap-6 sm:gap-8 lg:grid-cols-2", children: featuredPosts.map((post) => /* @__PURE__ */ jsx(
|
|
1303
|
+
FeaturedCard,
|
|
976
1304
|
{
|
|
977
1305
|
post,
|
|
978
1306
|
basePath: caseStudyBasePath
|
|
979
1307
|
},
|
|
980
1308
|
post.id
|
|
981
1309
|
)) }),
|
|
982
|
-
/* @__PURE__ */ jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3
|
|
1310
|
+
regularPosts.length > 0 && /* @__PURE__ */ jsx("div", { className: "grid gap-6 sm:gap-8 md:grid-cols-2 lg:grid-cols-3", children: regularPosts.map((post) => /* @__PURE__ */ jsx(
|
|
983
1311
|
CaseStudyCard,
|
|
984
1312
|
{
|
|
985
1313
|
post,
|
|
@@ -987,13 +1315,13 @@ function CaseStudiesListPage(props) {
|
|
|
987
1315
|
},
|
|
988
1316
|
post.id
|
|
989
1317
|
)) }),
|
|
990
|
-
total > limit && /* @__PURE__ */ jsxs("div", { className: "flex justify-center gap-4
|
|
1318
|
+
activeCategory === "All" && total > limit && /* @__PURE__ */ jsxs("div", { className: "mt-14 flex justify-center gap-4", children: [
|
|
991
1319
|
/* @__PURE__ */ jsx(
|
|
992
1320
|
"button",
|
|
993
1321
|
{
|
|
994
1322
|
onClick: () => setOffset(Math.max(0, offset - limit)),
|
|
995
1323
|
disabled: offset === 0,
|
|
996
|
-
className: "px-5 py-2.5 text-sm font-medium
|
|
1324
|
+
className: "rounded-lg border px-5 py-2.5 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-40",
|
|
997
1325
|
children: "Previous"
|
|
998
1326
|
}
|
|
999
1327
|
),
|
|
@@ -1002,12 +1330,29 @@ function CaseStudiesListPage(props) {
|
|
|
1002
1330
|
{
|
|
1003
1331
|
onClick: () => setOffset(offset + limit),
|
|
1004
1332
|
disabled: offset + limit >= total,
|
|
1005
|
-
className: "px-5 py-2.5 text-sm font-medium
|
|
1333
|
+
className: "rounded-lg border px-5 py-2.5 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-40",
|
|
1006
1334
|
children: "Next"
|
|
1007
1335
|
}
|
|
1008
1336
|
)
|
|
1337
|
+
] }),
|
|
1338
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-16 overflow-hidden rounded-2xl border bg-gradient-to-br from-primary/10 via-card to-card p-8 text-center sm:p-10", children: [
|
|
1339
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground sm:text-2xl", children: "Want results like these?" }),
|
|
1340
|
+
/* @__PURE__ */ jsxs("p", { className: "mx-auto mt-2 max-w-xl text-sm text-muted-foreground sm:text-base", children: [
|
|
1341
|
+
"Tell us about your goals and we\u2019ll show you exactly how",
|
|
1342
|
+
" ",
|
|
1343
|
+
productLabel,
|
|
1344
|
+
" can help."
|
|
1345
|
+
] }),
|
|
1346
|
+
/* @__PURE__ */ jsx(
|
|
1347
|
+
"a",
|
|
1348
|
+
{
|
|
1349
|
+
href: contactHref,
|
|
1350
|
+
className: "mt-6 inline-flex items-center justify-center gap-2 rounded-lg bg-primary px-6 py-3 text-sm font-semibold text-primary-foreground shadow-sm transition-all hover:opacity-90 hover:shadow-md",
|
|
1351
|
+
children: contactLabel
|
|
1352
|
+
}
|
|
1353
|
+
)
|
|
1009
1354
|
] })
|
|
1010
|
-
] }) }) })
|
|
1355
|
+
] }) : null }) })
|
|
1011
1356
|
] });
|
|
1012
1357
|
}
|
|
1013
1358
|
function CaseStudyPage(props) {
|
|
@@ -1015,12 +1360,15 @@ function CaseStudyPage(props) {
|
|
|
1015
1360
|
productName,
|
|
1016
1361
|
caseStudiesListUrl = "/case-studies",
|
|
1017
1362
|
backLabel = "Back to Case Studies",
|
|
1363
|
+
contactHref = "/contact",
|
|
1364
|
+
contactLabel = "Get in touch",
|
|
1018
1365
|
className = ""
|
|
1019
1366
|
} = props;
|
|
1020
1367
|
const client = useWebSDK();
|
|
1021
1368
|
const config = useWebSDKConfig();
|
|
1022
1369
|
const { product } = useProduct();
|
|
1023
1370
|
const resolvedProductId = product?.id || config.productId;
|
|
1371
|
+
const productLabel = product?.name || productName || "our team";
|
|
1024
1372
|
const [post, setPost] = useState(null);
|
|
1025
1373
|
const [loading, setLoading] = useState(true);
|
|
1026
1374
|
const [error, setError] = useState(null);
|
|
@@ -1049,36 +1397,64 @@ function CaseStudyPage(props) {
|
|
|
1049
1397
|
fetchPost();
|
|
1050
1398
|
}, [client, slug, resolvedProductId]);
|
|
1051
1399
|
if (loading) {
|
|
1052
|
-
return /* @__PURE__ */ jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsx("div", { className: "max-w-4xl
|
|
1053
|
-
/* @__PURE__ */ jsx("div", { className: "h-8
|
|
1054
|
-
/* @__PURE__ */ jsx("div", { className: "h-4
|
|
1055
|
-
/* @__PURE__ */ jsx("div", { className: "aspect-[16/9] bg-muted
|
|
1056
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-3", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsx("div", { className: "h-4 bg-muted
|
|
1400
|
+
return /* @__PURE__ */ jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-4xl px-4 py-24 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "animate-pulse space-y-6", children: [
|
|
1401
|
+
/* @__PURE__ */ jsx("div", { className: "h-8 w-2/3 rounded bg-muted" }),
|
|
1402
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-1/3 rounded bg-muted" }),
|
|
1403
|
+
/* @__PURE__ */ jsx("div", { className: "aspect-[16/9] rounded-xl bg-muted" }),
|
|
1404
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-3", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsx("div", { className: "h-4 rounded bg-muted" }, i)) })
|
|
1057
1405
|
] }) }) });
|
|
1058
1406
|
}
|
|
1059
1407
|
if (error || !post) {
|
|
1060
|
-
return /* @__PURE__ */ jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxs("div", { className: "max-w-
|
|
1061
|
-
/* @__PURE__ */ jsx("
|
|
1062
|
-
|
|
1063
|
-
/* @__PURE__ */ jsxs(
|
|
1064
|
-
"a",
|
|
1408
|
+
return /* @__PURE__ */ jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-2xl px-4 py-24 text-center sm:px-6 lg:px-8", children: [
|
|
1409
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(
|
|
1410
|
+
"svg",
|
|
1065
1411
|
{
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1412
|
+
className: "h-8 w-8",
|
|
1413
|
+
fill: "none",
|
|
1414
|
+
viewBox: "0 0 24 24",
|
|
1415
|
+
stroke: "currentColor",
|
|
1416
|
+
"aria-hidden": "true",
|
|
1417
|
+
children: /* @__PURE__ */ jsx(
|
|
1418
|
+
"path",
|
|
1419
|
+
{
|
|
1420
|
+
strokeLinecap: "round",
|
|
1421
|
+
strokeLinejoin: "round",
|
|
1422
|
+
strokeWidth: 1.5,
|
|
1423
|
+
d: "M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"
|
|
1424
|
+
}
|
|
1425
|
+
)
|
|
1072
1426
|
}
|
|
1073
|
-
)
|
|
1427
|
+
) }),
|
|
1428
|
+
/* @__PURE__ */ jsx("h1", { className: "mt-6 text-2xl font-bold text-foreground", children: "Case study not found" }),
|
|
1429
|
+
/* @__PURE__ */ jsxs("p", { className: "mx-auto mt-3 max-w-md text-muted-foreground", children: [
|
|
1430
|
+
"This story isn\u2019t available yet \u2014 but there\u2019s plenty more to explore, and we\u2019re always happy to talk through what ",
|
|
1431
|
+
productLabel,
|
|
1432
|
+
" can do."
|
|
1433
|
+
] }),
|
|
1434
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row", children: [
|
|
1435
|
+
/* @__PURE__ */ jsxs(
|
|
1436
|
+
"a",
|
|
1437
|
+
{
|
|
1438
|
+
href: caseStudiesListUrl,
|
|
1439
|
+
className: "inline-flex items-center justify-center rounded-lg border px-5 py-2.5 text-sm font-semibold text-foreground transition-colors hover:bg-muted",
|
|
1440
|
+
children: [
|
|
1441
|
+
"\u2190 ",
|
|
1442
|
+
backLabel
|
|
1443
|
+
]
|
|
1444
|
+
}
|
|
1445
|
+
),
|
|
1446
|
+
/* @__PURE__ */ jsx(
|
|
1447
|
+
"a",
|
|
1448
|
+
{
|
|
1449
|
+
href: contactHref,
|
|
1450
|
+
className: "inline-flex items-center justify-center rounded-lg bg-primary px-5 py-2.5 text-sm font-semibold text-primary-foreground transition-all hover:opacity-90",
|
|
1451
|
+
children: contactLabel
|
|
1452
|
+
}
|
|
1453
|
+
)
|
|
1454
|
+
] })
|
|
1074
1455
|
] }) });
|
|
1075
1456
|
}
|
|
1076
|
-
const
|
|
1077
|
-
const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
|
|
1078
|
-
year: "numeric",
|
|
1079
|
-
month: "long",
|
|
1080
|
-
day: "numeric"
|
|
1081
|
-
}) : "";
|
|
1457
|
+
const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
|
|
1082
1458
|
return /* @__PURE__ */ jsxs("div", { className: `w-full ${className}`, children: [
|
|
1083
1459
|
/* @__PURE__ */ jsx(
|
|
1084
1460
|
PageHead,
|
|
@@ -1089,41 +1465,57 @@ function CaseStudyPage(props) {
|
|
|
1089
1465
|
keywords: post.seoKeywords || ""
|
|
1090
1466
|
}
|
|
1091
1467
|
),
|
|
1092
|
-
/* @__PURE__ */ jsxs("article", { className: "max-w-4xl
|
|
1468
|
+
/* @__PURE__ */ jsxs("article", { className: "mx-auto max-w-4xl px-4 py-16 sm:px-6 sm:py-20 lg:px-8", children: [
|
|
1093
1469
|
/* @__PURE__ */ jsxs(
|
|
1094
1470
|
"a",
|
|
1095
1471
|
{
|
|
1096
1472
|
href: caseStudiesListUrl,
|
|
1097
|
-
className: "inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground
|
|
1473
|
+
className: "mb-8 inline-flex items-center gap-1 text-sm text-muted-foreground transition-colors hover:text-foreground",
|
|
1098
1474
|
children: [
|
|
1099
1475
|
"\u2190 ",
|
|
1100
1476
|
backLabel
|
|
1101
1477
|
]
|
|
1102
1478
|
}
|
|
1103
1479
|
),
|
|
1104
|
-
post.category && /* @__PURE__ */ jsx("span", { className: "inline-block
|
|
1105
|
-
/* @__PURE__ */ jsx("h1", { className: "
|
|
1106
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 text-sm text-muted-foreground
|
|
1480
|
+
post.category && /* @__PURE__ */ jsx("span", { className: "mb-4 inline-block rounded-full bg-primary/10 px-2.5 py-1 text-xs font-medium text-primary", children: post.category }),
|
|
1481
|
+
/* @__PURE__ */ jsx("h1", { className: "mb-4 text-3xl font-bold tracking-tight text-foreground sm:text-4xl md:text-5xl", children: post.title }),
|
|
1482
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-8 flex flex-wrap items-center gap-3 text-sm text-muted-foreground", children: [
|
|
1107
1483
|
post.author && /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: post.author }),
|
|
1108
1484
|
post.author && formattedDate && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
1109
1485
|
formattedDate && /* @__PURE__ */ jsx("span", { children: formattedDate }),
|
|
1110
|
-
post.readingTime
|
|
1486
|
+
post.readingTime ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1111
1487
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
1112
1488
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
1113
1489
|
post.readingTime,
|
|
1114
1490
|
" min read"
|
|
1115
1491
|
] })
|
|
1116
|
-
] })
|
|
1492
|
+
] }) : null
|
|
1117
1493
|
] }),
|
|
1118
|
-
post.thumbnail && /* @__PURE__ */ jsx("div", { className: "aspect-[16/9]
|
|
1494
|
+
post.thumbnail && /* @__PURE__ */ jsx("div", { className: "mb-10 aspect-[16/9] overflow-hidden rounded-xl", children: /* @__PURE__ */ jsx(
|
|
1119
1495
|
"img",
|
|
1120
1496
|
{
|
|
1121
1497
|
src: post.thumbnail,
|
|
1122
1498
|
alt: post.title,
|
|
1123
|
-
className: "
|
|
1499
|
+
className: "h-full w-full object-cover"
|
|
1124
1500
|
}
|
|
1125
1501
|
) }),
|
|
1126
|
-
/* @__PURE__ */ jsx("div", { className: "prose prose-gray dark:prose-invert
|
|
1502
|
+
/* @__PURE__ */ jsx("div", { className: "prose prose-gray max-w-none dark:prose-invert", children: /* @__PURE__ */ jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
|
|
1503
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-14 rounded-2xl border bg-gradient-to-br from-primary/10 via-card to-card p-8 text-center", children: [
|
|
1504
|
+
/* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground", children: [
|
|
1505
|
+
"Curious what ",
|
|
1506
|
+
productLabel,
|
|
1507
|
+
" could do for you?"
|
|
1508
|
+
] }),
|
|
1509
|
+
/* @__PURE__ */ jsx("p", { className: "mx-auto mt-2 max-w-lg text-sm text-muted-foreground", children: "We\u2019re happy to walk you through it \u2014 no pressure, just a conversation about your goals." }),
|
|
1510
|
+
/* @__PURE__ */ jsx(
|
|
1511
|
+
"a",
|
|
1512
|
+
{
|
|
1513
|
+
href: contactHref,
|
|
1514
|
+
className: "mt-6 inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-semibold text-primary-foreground shadow-sm transition-all hover:opacity-90 hover:shadow-md",
|
|
1515
|
+
children: contactLabel
|
|
1516
|
+
}
|
|
1517
|
+
)
|
|
1518
|
+
] })
|
|
1127
1519
|
] })
|
|
1128
1520
|
] });
|
|
1129
1521
|
}
|
|
@@ -1218,7 +1610,7 @@ var CHANGELOG_ENTRY_QUERY = `
|
|
|
1218
1610
|
}
|
|
1219
1611
|
}
|
|
1220
1612
|
`;
|
|
1221
|
-
function
|
|
1613
|
+
function formatDate2(value) {
|
|
1222
1614
|
if (!value) return "";
|
|
1223
1615
|
return new Date(value).toLocaleDateString("en-US", {
|
|
1224
1616
|
year: "numeric",
|
|
@@ -1340,7 +1732,7 @@ function CmsTimeline(props) {
|
|
|
1340
1732
|
),
|
|
1341
1733
|
/* @__PURE__ */ jsxs("div", { className: "p-6 sm:p-8", children: [
|
|
1342
1734
|
/* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mb-2", children: [
|
|
1343
|
-
entry.publishedAt && /* @__PURE__ */ jsx("time", { dateTime: entry.publishedAt, children:
|
|
1735
|
+
entry.publishedAt && /* @__PURE__ */ jsx("time", { dateTime: entry.publishedAt, children: formatDate2(entry.publishedAt || entry.lastUpdated) }),
|
|
1344
1736
|
entry.author && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1345
1737
|
" \xB7 ",
|
|
1346
1738
|
entry.author
|
|
@@ -1484,7 +1876,7 @@ function EntriesTimeline(props) {
|
|
|
1484
1876
|
{
|
|
1485
1877
|
className: "text-xs text-muted-foreground",
|
|
1486
1878
|
dateTime: entry.date,
|
|
1487
|
-
children:
|
|
1879
|
+
children: formatDate2(entry.date)
|
|
1488
1880
|
}
|
|
1489
1881
|
)
|
|
1490
1882
|
] }),
|