@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/index.js
CHANGED
|
@@ -4653,6 +4653,18 @@ function BlogPostPage(props) {
|
|
|
4653
4653
|
] });
|
|
4654
4654
|
}
|
|
4655
4655
|
var CASE_STUDY_TAG = "case-study";
|
|
4656
|
+
var ANIMATION_STYLES = `
|
|
4657
|
+
@keyframes csFadeUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
|
|
4658
|
+
@keyframes csFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
|
|
4659
|
+
.cs-fade-up { animation: csFadeUp 0.5s cubic-bezier(0.16, 1, 0.3, 1) both; }
|
|
4660
|
+
.cs-float { animation: csFloat 7s ease-in-out infinite; }
|
|
4661
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4662
|
+
.cs-fade-up, .cs-float { animation: none !important; }
|
|
4663
|
+
}
|
|
4664
|
+
`;
|
|
4665
|
+
function AnimationStyles() {
|
|
4666
|
+
return /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: ANIMATION_STYLES } });
|
|
4667
|
+
}
|
|
4656
4668
|
var CASE_STUDIES_QUERY = `
|
|
4657
4669
|
query CaseStudies($productId: String!, $limit: Int, $offset: Int) {
|
|
4658
4670
|
publicContentPages(productId: $productId, limit: $limit, offset: $offset) {
|
|
@@ -4699,91 +4711,355 @@ var CASE_STUDY_QUERY = `
|
|
|
4699
4711
|
}
|
|
4700
4712
|
}
|
|
4701
4713
|
`;
|
|
4702
|
-
function
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
|
|
4714
|
+
function formatDate(value) {
|
|
4715
|
+
if (!value) return "";
|
|
4716
|
+
const d = new Date(value);
|
|
4717
|
+
if (Number.isNaN(d.getTime())) return "";
|
|
4718
|
+
return d.toLocaleDateString("en-US", {
|
|
4708
4719
|
year: "numeric",
|
|
4709
4720
|
month: "long",
|
|
4710
4721
|
day: "numeric"
|
|
4711
|
-
})
|
|
4722
|
+
});
|
|
4723
|
+
}
|
|
4724
|
+
function Thumbnail({
|
|
4725
|
+
src,
|
|
4726
|
+
alt,
|
|
4727
|
+
className = ""
|
|
4728
|
+
}) {
|
|
4712
4729
|
const [imgError, setImgError] = React.useState(false);
|
|
4730
|
+
if (src && !imgError) {
|
|
4731
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4732
|
+
"img",
|
|
4733
|
+
{
|
|
4734
|
+
src,
|
|
4735
|
+
alt,
|
|
4736
|
+
className,
|
|
4737
|
+
loading: "lazy",
|
|
4738
|
+
onError: () => setImgError(true)
|
|
4739
|
+
}
|
|
4740
|
+
);
|
|
4741
|
+
}
|
|
4742
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4743
|
+
"div",
|
|
4744
|
+
{
|
|
4745
|
+
className: `flex items-center justify-center bg-gradient-to-br from-muted/60 to-muted ${className}`,
|
|
4746
|
+
"aria-hidden": "true",
|
|
4747
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4748
|
+
"svg",
|
|
4749
|
+
{
|
|
4750
|
+
className: "w-12 h-12 text-muted-foreground/25",
|
|
4751
|
+
fill: "none",
|
|
4752
|
+
viewBox: "0 0 24 24",
|
|
4753
|
+
stroke: "currentColor",
|
|
4754
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4755
|
+
"path",
|
|
4756
|
+
{
|
|
4757
|
+
strokeLinecap: "round",
|
|
4758
|
+
strokeLinejoin: "round",
|
|
4759
|
+
strokeWidth: 1.5,
|
|
4760
|
+
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"
|
|
4761
|
+
}
|
|
4762
|
+
)
|
|
4763
|
+
}
|
|
4764
|
+
)
|
|
4765
|
+
}
|
|
4766
|
+
);
|
|
4767
|
+
}
|
|
4768
|
+
function MetaRow({
|
|
4769
|
+
post,
|
|
4770
|
+
className = ""
|
|
4771
|
+
}) {
|
|
4772
|
+
const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
|
|
4773
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4774
|
+
"div",
|
|
4775
|
+
{
|
|
4776
|
+
className: `flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground ${className}`,
|
|
4777
|
+
children: [
|
|
4778
|
+
post.author && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: post.author }),
|
|
4779
|
+
post.author && formattedDate && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
4780
|
+
formattedDate && /* @__PURE__ */ jsxRuntime.jsx("span", { children: formattedDate }),
|
|
4781
|
+
post.readingTime ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4782
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
4783
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
4784
|
+
post.readingTime,
|
|
4785
|
+
" min read"
|
|
4786
|
+
] })
|
|
4787
|
+
] }) : null
|
|
4788
|
+
]
|
|
4789
|
+
}
|
|
4790
|
+
);
|
|
4791
|
+
}
|
|
4792
|
+
function FeaturedCard({
|
|
4793
|
+
post,
|
|
4794
|
+
basePath
|
|
4795
|
+
}) {
|
|
4713
4796
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4714
4797
|
"a",
|
|
4715
4798
|
{
|
|
4716
4799
|
href: `${basePath}/${post.slug}`,
|
|
4717
|
-
className: "group
|
|
4800
|
+
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",
|
|
4718
4801
|
children: [
|
|
4719
|
-
|
|
4720
|
-
|
|
4802
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative aspect-[16/10] md:aspect-auto md:h-full overflow-hidden", children: [
|
|
4803
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4804
|
+
Thumbnail,
|
|
4805
|
+
{
|
|
4806
|
+
src: post.thumbnail,
|
|
4807
|
+
alt: post.title,
|
|
4808
|
+
className: "w-full h-full min-h-[220px] object-cover transition-transform duration-500 group-hover:scale-[1.04]"
|
|
4809
|
+
}
|
|
4810
|
+
),
|
|
4811
|
+
/* @__PURE__ */ jsxRuntime.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: [
|
|
4812
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4813
|
+
"svg",
|
|
4814
|
+
{
|
|
4815
|
+
className: "h-3 w-3",
|
|
4816
|
+
viewBox: "0 0 20 20",
|
|
4817
|
+
fill: "currentColor",
|
|
4818
|
+
"aria-hidden": "true",
|
|
4819
|
+
children: /* @__PURE__ */ jsxRuntime.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" })
|
|
4820
|
+
}
|
|
4821
|
+
),
|
|
4822
|
+
"Featured"
|
|
4823
|
+
] })
|
|
4824
|
+
] }),
|
|
4825
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-center p-6 sm:p-8", children: [
|
|
4826
|
+
post.category && /* @__PURE__ */ jsxRuntime.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 }),
|
|
4827
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl sm:text-2xl font-bold text-foreground transition-colors group-hover:text-primary line-clamp-3", children: post.title }),
|
|
4828
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm sm:text-base text-muted-foreground line-clamp-3", children: post.excerpt || post.seoDescription || "" }),
|
|
4829
|
+
/* @__PURE__ */ jsxRuntime.jsx(MetaRow, { post, className: "mt-5" }),
|
|
4830
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "mt-5 inline-flex items-center gap-1 text-sm font-semibold text-primary", children: [
|
|
4831
|
+
"Read the story",
|
|
4832
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4833
|
+
"svg",
|
|
4834
|
+
{
|
|
4835
|
+
className: "h-4 w-4 transition-transform duration-300 group-hover:translate-x-1",
|
|
4836
|
+
viewBox: "0 0 20 20",
|
|
4837
|
+
fill: "currentColor",
|
|
4838
|
+
"aria-hidden": "true",
|
|
4839
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4840
|
+
"path",
|
|
4841
|
+
{
|
|
4842
|
+
fillRule: "evenodd",
|
|
4843
|
+
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",
|
|
4844
|
+
clipRule: "evenodd"
|
|
4845
|
+
}
|
|
4846
|
+
)
|
|
4847
|
+
}
|
|
4848
|
+
)
|
|
4849
|
+
] })
|
|
4850
|
+
] })
|
|
4851
|
+
]
|
|
4852
|
+
}
|
|
4853
|
+
);
|
|
4854
|
+
}
|
|
4855
|
+
function CaseStudyCard({
|
|
4856
|
+
post,
|
|
4857
|
+
basePath = "/case-studies"
|
|
4858
|
+
}) {
|
|
4859
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4860
|
+
"a",
|
|
4861
|
+
{
|
|
4862
|
+
href: `${basePath}/${post.slug}`,
|
|
4863
|
+
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",
|
|
4864
|
+
children: [
|
|
4865
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/9] overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4866
|
+
Thumbnail,
|
|
4721
4867
|
{
|
|
4722
4868
|
src: post.thumbnail,
|
|
4723
4869
|
alt: post.title,
|
|
4724
|
-
className: "w-full h-full object-cover group-hover:scale-105
|
|
4725
|
-
loading: "lazy",
|
|
4726
|
-
onError: () => setImgError(true)
|
|
4870
|
+
className: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
4727
4871
|
}
|
|
4728
|
-
) })
|
|
4872
|
+
) }),
|
|
4873
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col p-5 sm:p-6", children: [
|
|
4874
|
+
post.category && /* @__PURE__ */ jsxRuntime.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 }),
|
|
4875
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-lg font-semibold text-foreground transition-colors group-hover:text-primary line-clamp-2", children: post.title }),
|
|
4876
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-sm text-muted-foreground line-clamp-3", children: post.excerpt || post.seoDescription || "" }),
|
|
4877
|
+
/* @__PURE__ */ jsxRuntime.jsx(MetaRow, { post, className: "mt-auto" })
|
|
4878
|
+
] })
|
|
4879
|
+
]
|
|
4880
|
+
}
|
|
4881
|
+
);
|
|
4882
|
+
}
|
|
4883
|
+
function EmptyState({
|
|
4884
|
+
productLabel,
|
|
4885
|
+
title,
|
|
4886
|
+
subtitle,
|
|
4887
|
+
contactHref,
|
|
4888
|
+
contactLabel,
|
|
4889
|
+
exploreHref,
|
|
4890
|
+
exploreLabel
|
|
4891
|
+
}) {
|
|
4892
|
+
const highlights = [
|
|
4893
|
+
{
|
|
4894
|
+
title: "Real outcomes, real teams",
|
|
4895
|
+
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.`,
|
|
4896
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4897
|
+
"path",
|
|
4898
|
+
{
|
|
4899
|
+
strokeLinecap: "round",
|
|
4900
|
+
strokeLinejoin: "round",
|
|
4901
|
+
strokeWidth: 1.5,
|
|
4902
|
+
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"
|
|
4903
|
+
}
|
|
4904
|
+
)
|
|
4905
|
+
},
|
|
4906
|
+
{
|
|
4907
|
+
title: "See it on your use case",
|
|
4908
|
+
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.`,
|
|
4909
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4910
|
+
"path",
|
|
4911
|
+
{
|
|
4912
|
+
strokeLinecap: "round",
|
|
4913
|
+
strokeLinejoin: "round",
|
|
4914
|
+
strokeWidth: 1.5,
|
|
4915
|
+
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"
|
|
4916
|
+
}
|
|
4917
|
+
)
|
|
4918
|
+
},
|
|
4919
|
+
{
|
|
4920
|
+
title: "Be the first story",
|
|
4921
|
+
body: `Building something with ${productLabel} worth talking about? Tell us \u2014 the best early stories become the case studies featured on this page.`,
|
|
4922
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4923
|
+
"path",
|
|
4924
|
+
{
|
|
4925
|
+
strokeLinecap: "round",
|
|
4926
|
+
strokeLinejoin: "round",
|
|
4927
|
+
strokeWidth: 1.5,
|
|
4928
|
+
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"
|
|
4929
|
+
}
|
|
4930
|
+
)
|
|
4931
|
+
}
|
|
4932
|
+
];
|
|
4933
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cs-fade-up mx-auto max-w-4xl", children: [
|
|
4934
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden rounded-3xl border bg-card px-6 py-14 text-center sm:px-12 sm:py-16", children: [
|
|
4935
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4936
|
+
"div",
|
|
4937
|
+
{
|
|
4938
|
+
className: "pointer-events-none absolute -top-24 -right-16 h-64 w-64 rounded-full bg-primary/10 blur-3xl",
|
|
4939
|
+
"aria-hidden": "true"
|
|
4940
|
+
}
|
|
4941
|
+
),
|
|
4942
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4943
|
+
"div",
|
|
4944
|
+
{
|
|
4945
|
+
className: "pointer-events-none absolute -bottom-24 -left-16 h-64 w-64 rounded-full bg-primary/5 blur-3xl",
|
|
4946
|
+
"aria-hidden": "true"
|
|
4947
|
+
}
|
|
4948
|
+
),
|
|
4949
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
4950
|
+
/* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx(
|
|
4729
4951
|
"svg",
|
|
4730
4952
|
{
|
|
4731
|
-
className: "
|
|
4953
|
+
className: "h-10 w-10",
|
|
4732
4954
|
fill: "none",
|
|
4733
4955
|
viewBox: "0 0 24 24",
|
|
4734
4956
|
stroke: "currentColor",
|
|
4957
|
+
"aria-hidden": "true",
|
|
4735
4958
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4736
4959
|
"path",
|
|
4737
4960
|
{
|
|
4738
4961
|
strokeLinecap: "round",
|
|
4739
4962
|
strokeLinejoin: "round",
|
|
4740
4963
|
strokeWidth: 1.5,
|
|
4741
|
-
d: "
|
|
4964
|
+
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"
|
|
4742
4965
|
}
|
|
4743
4966
|
)
|
|
4744
4967
|
}
|
|
4745
4968
|
) }),
|
|
4746
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4969
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-8 text-2xl font-bold tracking-tight text-foreground sm:text-3xl", children: title }),
|
|
4970
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mt-4 max-w-2xl text-base leading-relaxed text-muted-foreground sm:text-lg", children: subtitle }),
|
|
4971
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row", children: [
|
|
4972
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4973
|
+
"a",
|
|
4974
|
+
{
|
|
4975
|
+
href: contactHref,
|
|
4976
|
+
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",
|
|
4977
|
+
children: [
|
|
4978
|
+
contactLabel,
|
|
4979
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4980
|
+
"svg",
|
|
4981
|
+
{
|
|
4982
|
+
className: "h-4 w-4",
|
|
4983
|
+
viewBox: "0 0 20 20",
|
|
4984
|
+
fill: "currentColor",
|
|
4985
|
+
"aria-hidden": "true",
|
|
4986
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4987
|
+
"path",
|
|
4988
|
+
{
|
|
4989
|
+
fillRule: "evenodd",
|
|
4990
|
+
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",
|
|
4991
|
+
clipRule: "evenodd"
|
|
4992
|
+
}
|
|
4993
|
+
)
|
|
4994
|
+
}
|
|
4995
|
+
)
|
|
4996
|
+
]
|
|
4997
|
+
}
|
|
4998
|
+
),
|
|
4999
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5000
|
+
"a",
|
|
5001
|
+
{
|
|
5002
|
+
href: exploreHref,
|
|
5003
|
+
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",
|
|
5004
|
+
children: exploreLabel
|
|
5005
|
+
}
|
|
5006
|
+
)
|
|
4762
5007
|
] })
|
|
4763
|
-
]
|
|
4764
|
-
}
|
|
4765
|
-
|
|
5008
|
+
] })
|
|
5009
|
+
] }),
|
|
5010
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-8 grid gap-4 sm:grid-cols-3", children: highlights.map((h) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5011
|
+
"div",
|
|
5012
|
+
{
|
|
5013
|
+
className: "rounded-2xl border bg-card/60 p-5 text-left transition-colors hover:border-primary/30",
|
|
5014
|
+
children: [
|
|
5015
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5016
|
+
"svg",
|
|
5017
|
+
{
|
|
5018
|
+
className: "h-5 w-5",
|
|
5019
|
+
fill: "none",
|
|
5020
|
+
viewBox: "0 0 24 24",
|
|
5021
|
+
stroke: "currentColor",
|
|
5022
|
+
"aria-hidden": "true",
|
|
5023
|
+
children: h.icon
|
|
5024
|
+
}
|
|
5025
|
+
) }),
|
|
5026
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mt-4 text-sm font-semibold text-foreground", children: h.title }),
|
|
5027
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-sm leading-relaxed text-muted-foreground", children: h.body })
|
|
5028
|
+
]
|
|
5029
|
+
},
|
|
5030
|
+
h.title
|
|
5031
|
+
)) })
|
|
5032
|
+
] });
|
|
4766
5033
|
}
|
|
4767
5034
|
function CaseStudiesListPage(props) {
|
|
4768
5035
|
const {
|
|
4769
5036
|
productName,
|
|
5037
|
+
eyebrow = "Customer Stories",
|
|
4770
5038
|
heroTitle = "Case Studies",
|
|
4771
|
-
heroSubtitle = "Real-world stories of teams building with our platform",
|
|
5039
|
+
heroSubtitle = "Real-world stories of teams building with our platform.",
|
|
4772
5040
|
caseStudyBasePath = "/case-studies",
|
|
4773
5041
|
className = "",
|
|
4774
5042
|
seoTitle,
|
|
4775
5043
|
seoDescription,
|
|
4776
|
-
seoKeywords
|
|
5044
|
+
seoKeywords,
|
|
5045
|
+
contactHref = "/contact",
|
|
5046
|
+
contactLabel = "Get in touch",
|
|
5047
|
+
exploreHref = "/features",
|
|
5048
|
+
exploreLabel = "Explore the product",
|
|
5049
|
+
emptyTitle,
|
|
5050
|
+
emptySubtitle
|
|
4777
5051
|
} = props;
|
|
4778
5052
|
const client = useWebSDK();
|
|
4779
5053
|
const config = useWebSDKConfig();
|
|
4780
5054
|
const { product } = useProduct();
|
|
4781
5055
|
const resolvedProductId = product?.id || config.productId;
|
|
5056
|
+
const productLabel = product?.name || productName || "our platform";
|
|
4782
5057
|
const [posts, setPosts] = React.useState([]);
|
|
4783
5058
|
const [total, setTotal] = React.useState(0);
|
|
4784
5059
|
const [loading, setLoading] = React.useState(true);
|
|
4785
5060
|
const [error, setError] = React.useState(null);
|
|
4786
5061
|
const [offset, setOffset] = React.useState(0);
|
|
5062
|
+
const [activeCategory, setActiveCategory] = React.useState("All");
|
|
4787
5063
|
const limit = 12;
|
|
4788
5064
|
const fetchPosts = React.useCallback(async () => {
|
|
4789
5065
|
if (!resolvedProductId) return;
|
|
@@ -4796,6 +5072,7 @@ function CaseStudiesListPage(props) {
|
|
|
4796
5072
|
});
|
|
4797
5073
|
if (result.errors?.length) {
|
|
4798
5074
|
setError(result.errors[0]?.message ?? "Failed to load case studies");
|
|
5075
|
+
setPosts([]);
|
|
4799
5076
|
return;
|
|
4800
5077
|
}
|
|
4801
5078
|
const caseStudies = (result.data?.publicContentPages?.items || []).filter(
|
|
@@ -4805,7 +5082,8 @@ function CaseStudiesListPage(props) {
|
|
|
4805
5082
|
setTotal(result.data?.publicContentPages?.total || 0);
|
|
4806
5083
|
setError(null);
|
|
4807
5084
|
} catch {
|
|
4808
|
-
setError("
|
|
5085
|
+
setError("load-failed");
|
|
5086
|
+
setPosts([]);
|
|
4809
5087
|
} finally {
|
|
4810
5088
|
setLoading(false);
|
|
4811
5089
|
}
|
|
@@ -4813,9 +5091,25 @@ function CaseStudiesListPage(props) {
|
|
|
4813
5091
|
React.useEffect(() => {
|
|
4814
5092
|
fetchPosts();
|
|
4815
5093
|
}, [fetchPosts]);
|
|
4816
|
-
const
|
|
4817
|
-
|
|
4818
|
-
|
|
5094
|
+
const categories = React.useMemo(() => {
|
|
5095
|
+
const set = /* @__PURE__ */ new Set();
|
|
5096
|
+
posts.forEach((p) => {
|
|
5097
|
+
if (p.category) set.add(p.category);
|
|
5098
|
+
});
|
|
5099
|
+
return ["All", ...Array.from(set)];
|
|
5100
|
+
}, [posts]);
|
|
5101
|
+
const visiblePosts = React.useMemo(() => {
|
|
5102
|
+
if (activeCategory === "All") return posts;
|
|
5103
|
+
return posts.filter((p) => p.category === activeCategory);
|
|
5104
|
+
}, [posts, activeCategory]);
|
|
5105
|
+
const featuredPosts = visiblePosts.filter((p) => p.featured);
|
|
5106
|
+
const regularPosts = visiblePosts.filter((p) => !p.featured);
|
|
5107
|
+
const hasContent = !loading && !error && posts.length > 0;
|
|
5108
|
+
const showEmpty = !loading && (error !== null || posts.length === 0);
|
|
5109
|
+
const resolvedEmptyTitle = emptyTitle ?? "Case studies are on the way";
|
|
5110
|
+
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.`;
|
|
5111
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, "data-cs": "case-studies-v2", children: [
|
|
5112
|
+
/* @__PURE__ */ jsxRuntime.jsx(AnimationStyles, {}),
|
|
4819
5113
|
seoTitle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4820
5114
|
PageHead,
|
|
4821
5115
|
{
|
|
@@ -4825,35 +5119,69 @@ function CaseStudiesListPage(props) {
|
|
|
4825
5119
|
keywords: seoKeywords
|
|
4826
5120
|
}
|
|
4827
5121
|
),
|
|
4828
|
-
/* @__PURE__ */ jsxRuntime.
|
|
4829
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
5122
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "relative overflow-hidden", children: [
|
|
5123
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5124
|
+
"div",
|
|
5125
|
+
{
|
|
5126
|
+
className: "pointer-events-none absolute inset-x-0 -top-32 mx-auto h-72 max-w-3xl rounded-full bg-primary/10 blur-3xl",
|
|
5127
|
+
"aria-hidden": "true"
|
|
5128
|
+
}
|
|
5129
|
+
),
|
|
5130
|
+
/* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-3xl text-center", children: [
|
|
5131
|
+
/* @__PURE__ */ jsxRuntime.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: [
|
|
5132
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-primary" }),
|
|
5133
|
+
eyebrow
|
|
5134
|
+
] }),
|
|
5135
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-5 text-3xl font-bold tracking-tight text-foreground sm:text-4xl md:text-5xl", children: heroTitle }),
|
|
5136
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: heroSubtitle })
|
|
5137
|
+
] }) })
|
|
5138
|
+
] }),
|
|
5139
|
+
/* @__PURE__ */ jsxRuntime.jsx("section", { className: "pb-20 sm:pb-24", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8", children: loading ? /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(
|
|
4833
5140
|
"div",
|
|
4834
5141
|
{
|
|
4835
|
-
className: "
|
|
5142
|
+
className: "overflow-hidden rounded-xl border bg-card animate-pulse",
|
|
4836
5143
|
children: [
|
|
4837
5144
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/9] bg-muted" }),
|
|
4838
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "
|
|
4839
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4
|
|
4840
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6
|
|
4841
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-muted
|
|
4842
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4
|
|
5145
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 p-6", children: [
|
|
5146
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-1/4 rounded bg-muted" }),
|
|
5147
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-6 w-3/4 rounded bg-muted" }),
|
|
5148
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 rounded bg-muted" }),
|
|
5149
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-1/2 rounded bg-muted" })
|
|
4843
5150
|
] })
|
|
4844
5151
|
]
|
|
4845
5152
|
},
|
|
4846
5153
|
i
|
|
4847
|
-
)) }) :
|
|
4848
|
-
|
|
4849
|
-
|
|
5154
|
+
)) }) : showEmpty ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5155
|
+
EmptyState,
|
|
5156
|
+
{
|
|
5157
|
+
productLabel,
|
|
5158
|
+
title: resolvedEmptyTitle,
|
|
5159
|
+
subtitle: resolvedEmptySubtitle,
|
|
5160
|
+
contactHref,
|
|
5161
|
+
contactLabel,
|
|
5162
|
+
exploreHref,
|
|
5163
|
+
exploreLabel
|
|
5164
|
+
}
|
|
5165
|
+
) : hasContent ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5166
|
+
categories.length > 2 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10 flex flex-wrap justify-center gap-2", children: categories.map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5167
|
+
"button",
|
|
5168
|
+
{
|
|
5169
|
+
type: "button",
|
|
5170
|
+
onClick: () => setActiveCategory(cat),
|
|
5171
|
+
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"}`,
|
|
5172
|
+
children: cat
|
|
5173
|
+
},
|
|
5174
|
+
cat
|
|
5175
|
+
)) }),
|
|
5176
|
+
featuredPosts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10 grid gap-6 sm:gap-8 lg:grid-cols-2", children: featuredPosts.map((post) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5177
|
+
FeaturedCard,
|
|
4850
5178
|
{
|
|
4851
5179
|
post,
|
|
4852
5180
|
basePath: caseStudyBasePath
|
|
4853
5181
|
},
|
|
4854
5182
|
post.id
|
|
4855
5183
|
)) }),
|
|
4856
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid md:grid-cols-2 lg:grid-cols-3
|
|
5184
|
+
regularPosts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-6 sm:gap-8 md:grid-cols-2 lg:grid-cols-3", children: regularPosts.map((post) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4857
5185
|
CaseStudyCard,
|
|
4858
5186
|
{
|
|
4859
5187
|
post,
|
|
@@ -4861,13 +5189,13 @@ function CaseStudiesListPage(props) {
|
|
|
4861
5189
|
},
|
|
4862
5190
|
post.id
|
|
4863
5191
|
)) }),
|
|
4864
|
-
total > limit && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-center gap-4
|
|
5192
|
+
activeCategory === "All" && total > limit && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-14 flex justify-center gap-4", children: [
|
|
4865
5193
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4866
5194
|
"button",
|
|
4867
5195
|
{
|
|
4868
5196
|
onClick: () => setOffset(Math.max(0, offset - limit)),
|
|
4869
5197
|
disabled: offset === 0,
|
|
4870
|
-
className: "px-5 py-2.5 text-sm font-medium
|
|
5198
|
+
className: "rounded-lg border px-5 py-2.5 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-40",
|
|
4871
5199
|
children: "Previous"
|
|
4872
5200
|
}
|
|
4873
5201
|
),
|
|
@@ -4876,12 +5204,29 @@ function CaseStudiesListPage(props) {
|
|
|
4876
5204
|
{
|
|
4877
5205
|
onClick: () => setOffset(offset + limit),
|
|
4878
5206
|
disabled: offset + limit >= total,
|
|
4879
|
-
className: "px-5 py-2.5 text-sm font-medium
|
|
5207
|
+
className: "rounded-lg border px-5 py-2.5 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-40",
|
|
4880
5208
|
children: "Next"
|
|
4881
5209
|
}
|
|
4882
5210
|
)
|
|
5211
|
+
] }),
|
|
5212
|
+
/* @__PURE__ */ jsxRuntime.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: [
|
|
5213
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground sm:text-2xl", children: "Want results like these?" }),
|
|
5214
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mx-auto mt-2 max-w-xl text-sm text-muted-foreground sm:text-base", children: [
|
|
5215
|
+
"Tell us about your goals and we\u2019ll show you exactly how",
|
|
5216
|
+
" ",
|
|
5217
|
+
productLabel,
|
|
5218
|
+
" can help."
|
|
5219
|
+
] }),
|
|
5220
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5221
|
+
"a",
|
|
5222
|
+
{
|
|
5223
|
+
href: contactHref,
|
|
5224
|
+
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",
|
|
5225
|
+
children: contactLabel
|
|
5226
|
+
}
|
|
5227
|
+
)
|
|
4883
5228
|
] })
|
|
4884
|
-
] }) }) })
|
|
5229
|
+
] }) : null }) })
|
|
4885
5230
|
] });
|
|
4886
5231
|
}
|
|
4887
5232
|
function CaseStudyPage(props) {
|
|
@@ -4889,12 +5234,15 @@ function CaseStudyPage(props) {
|
|
|
4889
5234
|
productName,
|
|
4890
5235
|
caseStudiesListUrl = "/case-studies",
|
|
4891
5236
|
backLabel = "Back to Case Studies",
|
|
5237
|
+
contactHref = "/contact",
|
|
5238
|
+
contactLabel = "Get in touch",
|
|
4892
5239
|
className = ""
|
|
4893
5240
|
} = props;
|
|
4894
5241
|
const client = useWebSDK();
|
|
4895
5242
|
const config = useWebSDKConfig();
|
|
4896
5243
|
const { product } = useProduct();
|
|
4897
5244
|
const resolvedProductId = product?.id || config.productId;
|
|
5245
|
+
const productLabel = product?.name || productName || "our team";
|
|
4898
5246
|
const [post, setPost] = React.useState(null);
|
|
4899
5247
|
const [loading, setLoading] = React.useState(true);
|
|
4900
5248
|
const [error, setError] = React.useState(null);
|
|
@@ -4923,36 +5271,64 @@ function CaseStudyPage(props) {
|
|
|
4923
5271
|
fetchPost();
|
|
4924
5272
|
}, [client, slug, resolvedProductId]);
|
|
4925
5273
|
if (loading) {
|
|
4926
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-4xl
|
|
4927
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8
|
|
4928
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4
|
|
4929
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/9] bg-muted
|
|
4930
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 bg-muted
|
|
5274
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto max-w-4xl px-4 py-24 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "animate-pulse space-y-6", children: [
|
|
5275
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8 w-2/3 rounded bg-muted" }),
|
|
5276
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-1/3 rounded bg-muted" }),
|
|
5277
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/9] rounded-xl bg-muted" }),
|
|
5278
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 rounded bg-muted" }, i)) })
|
|
4931
5279
|
] }) }) });
|
|
4932
5280
|
}
|
|
4933
5281
|
if (error || !post) {
|
|
4934
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-
|
|
4935
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
4936
|
-
|
|
4937
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4938
|
-
"a",
|
|
5282
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-full ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto max-w-2xl px-4 py-24 text-center sm:px-6 lg:px-8", children: [
|
|
5283
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10 text-primary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5284
|
+
"svg",
|
|
4939
5285
|
{
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4945
|
-
|
|
5286
|
+
className: "h-8 w-8",
|
|
5287
|
+
fill: "none",
|
|
5288
|
+
viewBox: "0 0 24 24",
|
|
5289
|
+
stroke: "currentColor",
|
|
5290
|
+
"aria-hidden": "true",
|
|
5291
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5292
|
+
"path",
|
|
5293
|
+
{
|
|
5294
|
+
strokeLinecap: "round",
|
|
5295
|
+
strokeLinejoin: "round",
|
|
5296
|
+
strokeWidth: 1.5,
|
|
5297
|
+
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"
|
|
5298
|
+
}
|
|
5299
|
+
)
|
|
4946
5300
|
}
|
|
4947
|
-
)
|
|
5301
|
+
) }),
|
|
5302
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mt-6 text-2xl font-bold text-foreground", children: "Case study not found" }),
|
|
5303
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mx-auto mt-3 max-w-md text-muted-foreground", children: [
|
|
5304
|
+
"This story isn\u2019t available yet \u2014 but there\u2019s plenty more to explore, and we\u2019re always happy to talk through what ",
|
|
5305
|
+
productLabel,
|
|
5306
|
+
" can do."
|
|
5307
|
+
] }),
|
|
5308
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row", children: [
|
|
5309
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5310
|
+
"a",
|
|
5311
|
+
{
|
|
5312
|
+
href: caseStudiesListUrl,
|
|
5313
|
+
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",
|
|
5314
|
+
children: [
|
|
5315
|
+
"\u2190 ",
|
|
5316
|
+
backLabel
|
|
5317
|
+
]
|
|
5318
|
+
}
|
|
5319
|
+
),
|
|
5320
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5321
|
+
"a",
|
|
5322
|
+
{
|
|
5323
|
+
href: contactHref,
|
|
5324
|
+
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",
|
|
5325
|
+
children: contactLabel
|
|
5326
|
+
}
|
|
5327
|
+
)
|
|
5328
|
+
] })
|
|
4948
5329
|
] }) });
|
|
4949
5330
|
}
|
|
4950
|
-
const
|
|
4951
|
-
const formattedDate = date ? new Date(date).toLocaleDateString("en-US", {
|
|
4952
|
-
year: "numeric",
|
|
4953
|
-
month: "long",
|
|
4954
|
-
day: "numeric"
|
|
4955
|
-
}) : "";
|
|
5331
|
+
const formattedDate = formatDate(post.publishedAt || post.lastUpdated);
|
|
4956
5332
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `w-full ${className}`, children: [
|
|
4957
5333
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4958
5334
|
PageHead,
|
|
@@ -4963,41 +5339,57 @@ function CaseStudyPage(props) {
|
|
|
4963
5339
|
keywords: post.seoKeywords || ""
|
|
4964
5340
|
}
|
|
4965
5341
|
),
|
|
4966
|
-
/* @__PURE__ */ jsxRuntime.jsxs("article", { className: "max-w-4xl
|
|
5342
|
+
/* @__PURE__ */ jsxRuntime.jsxs("article", { className: "mx-auto max-w-4xl px-4 py-16 sm:px-6 sm:py-20 lg:px-8", children: [
|
|
4967
5343
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4968
5344
|
"a",
|
|
4969
5345
|
{
|
|
4970
5346
|
href: caseStudiesListUrl,
|
|
4971
|
-
className: "inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground
|
|
5347
|
+
className: "mb-8 inline-flex items-center gap-1 text-sm text-muted-foreground transition-colors hover:text-foreground",
|
|
4972
5348
|
children: [
|
|
4973
5349
|
"\u2190 ",
|
|
4974
5350
|
backLabel
|
|
4975
5351
|
]
|
|
4976
5352
|
}
|
|
4977
5353
|
),
|
|
4978
|
-
post.category && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block
|
|
4979
|
-
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "
|
|
4980
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 text-sm text-muted-foreground
|
|
5354
|
+
post.category && /* @__PURE__ */ jsxRuntime.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 }),
|
|
5355
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "mb-4 text-3xl font-bold tracking-tight text-foreground sm:text-4xl md:text-5xl", children: post.title }),
|
|
5356
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-8 flex flex-wrap items-center gap-3 text-sm text-muted-foreground", children: [
|
|
4981
5357
|
post.author && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: post.author }),
|
|
4982
5358
|
post.author && formattedDate && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
4983
5359
|
formattedDate && /* @__PURE__ */ jsxRuntime.jsx("span", { children: formattedDate }),
|
|
4984
|
-
post.readingTime
|
|
5360
|
+
post.readingTime ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4985
5361
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\xB7" }),
|
|
4986
5362
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
4987
5363
|
post.readingTime,
|
|
4988
5364
|
" min read"
|
|
4989
5365
|
] })
|
|
4990
|
-
] })
|
|
5366
|
+
] }) : null
|
|
4991
5367
|
] }),
|
|
4992
|
-
post.thumbnail && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/9]
|
|
5368
|
+
post.thumbnail && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10 aspect-[16/9] overflow-hidden rounded-xl", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4993
5369
|
"img",
|
|
4994
5370
|
{
|
|
4995
5371
|
src: post.thumbnail,
|
|
4996
5372
|
alt: post.title,
|
|
4997
|
-
className: "
|
|
5373
|
+
className: "h-full w-full object-cover"
|
|
4998
5374
|
}
|
|
4999
5375
|
) }),
|
|
5000
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-gray dark:prose-invert
|
|
5376
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose prose-gray max-w-none dark:prose-invert", children: /* @__PURE__ */ jsxRuntime.jsx(ContentRenderer, { content: post.content, format: post.contentFormat }) }),
|
|
5377
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-14 rounded-2xl border bg-gradient-to-br from-primary/10 via-card to-card p-8 text-center", children: [
|
|
5378
|
+
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xl font-bold text-foreground", children: [
|
|
5379
|
+
"Curious what ",
|
|
5380
|
+
productLabel,
|
|
5381
|
+
" could do for you?"
|
|
5382
|
+
] }),
|
|
5383
|
+
/* @__PURE__ */ jsxRuntime.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." }),
|
|
5384
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5385
|
+
"a",
|
|
5386
|
+
{
|
|
5387
|
+
href: contactHref,
|
|
5388
|
+
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",
|
|
5389
|
+
children: contactLabel
|
|
5390
|
+
}
|
|
5391
|
+
)
|
|
5392
|
+
] })
|
|
5001
5393
|
] })
|
|
5002
5394
|
] });
|
|
5003
5395
|
}
|
|
@@ -5033,7 +5425,7 @@ var CHANGELOG_ENTRY_QUERY = `
|
|
|
5033
5425
|
}
|
|
5034
5426
|
}
|
|
5035
5427
|
`;
|
|
5036
|
-
function
|
|
5428
|
+
function formatDate2(value) {
|
|
5037
5429
|
if (!value) return "";
|
|
5038
5430
|
return new Date(value).toLocaleDateString("en-US", {
|
|
5039
5431
|
year: "numeric",
|
|
@@ -5155,7 +5547,7 @@ function CmsTimeline(props) {
|
|
|
5155
5547
|
),
|
|
5156
5548
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 sm:p-8", children: [
|
|
5157
5549
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground mb-2", children: [
|
|
5158
|
-
entry.publishedAt && /* @__PURE__ */ jsxRuntime.jsx("time", { dateTime: entry.publishedAt, children:
|
|
5550
|
+
entry.publishedAt && /* @__PURE__ */ jsxRuntime.jsx("time", { dateTime: entry.publishedAt, children: formatDate2(entry.publishedAt || entry.lastUpdated) }),
|
|
5159
5551
|
entry.author && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5160
5552
|
" \xB7 ",
|
|
5161
5553
|
entry.author
|
|
@@ -5299,7 +5691,7 @@ function EntriesTimeline(props) {
|
|
|
5299
5691
|
{
|
|
5300
5692
|
className: "text-xs text-muted-foreground",
|
|
5301
5693
|
dateTime: entry.date,
|
|
5302
|
-
children:
|
|
5694
|
+
children: formatDate2(entry.date)
|
|
5303
5695
|
}
|
|
5304
5696
|
)
|
|
5305
5697
|
] }),
|