@opensite/ui 3.3.0 → 3.3.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.
Files changed (43) hide show
  1. package/dist/article-breadcrumb-social.cjs +4 -7
  2. package/dist/article-breadcrumb-social.d.cts +2 -11
  3. package/dist/article-breadcrumb-social.d.ts +2 -11
  4. package/dist/article-breadcrumb-social.js +4 -7
  5. package/dist/article-chapters-author.cjs +3 -6
  6. package/dist/article-chapters-author.d.cts +2 -11
  7. package/dist/article-chapters-author.d.ts +2 -11
  8. package/dist/article-chapters-author.js +3 -6
  9. package/dist/article-compact-toc.cjs +4 -7
  10. package/dist/article-compact-toc.d.cts +2 -11
  11. package/dist/article-compact-toc.d.ts +2 -11
  12. package/dist/article-compact-toc.js +4 -7
  13. package/dist/article-hero-prose.cjs +4 -7
  14. package/dist/article-hero-prose.d.cts +2 -11
  15. package/dist/article-hero-prose.d.ts +2 -11
  16. package/dist/article-hero-prose.js +4 -7
  17. package/dist/article-sidebar-sticky.cjs +3 -6
  18. package/dist/article-sidebar-sticky.d.cts +2 -11
  19. package/dist/article-sidebar-sticky.d.ts +2 -11
  20. package/dist/article-sidebar-sticky.js +3 -6
  21. package/dist/article-toc-sidebar.cjs +3 -6
  22. package/dist/article-toc-sidebar.d.cts +1 -10
  23. package/dist/article-toc-sidebar.d.ts +1 -10
  24. package/dist/article-toc-sidebar.js +3 -6
  25. package/dist/feature-capabilities-grid.cjs +10 -43
  26. package/dist/feature-capabilities-grid.d.cts +0 -4
  27. package/dist/feature-capabilities-grid.d.ts +0 -4
  28. package/dist/feature-capabilities-grid.js +10 -43
  29. package/dist/hero-conversation-intelligence.cjs +1 -1
  30. package/dist/hero-conversation-intelligence.js +1 -1
  31. package/dist/longform-content.cjs +1 -1
  32. package/dist/longform-content.d.cts +1 -1
  33. package/dist/longform-content.d.ts +1 -1
  34. package/dist/longform-content.js +1 -1
  35. package/dist/navbar-mega-menu.cjs +14 -5
  36. package/dist/navbar-mega-menu.js +14 -5
  37. package/dist/registry.cjs +64 -117
  38. package/dist/registry.js +64 -117
  39. package/dist/stats-growth-timeline.cjs +87 -64
  40. package/dist/stats-growth-timeline.d.cts +5 -1
  41. package/dist/stats-growth-timeline.d.ts +5 -1
  42. package/dist/stats-growth-timeline.js +88 -65
  43. package/package.json +1 -1
package/dist/registry.js CHANGED
@@ -27126,7 +27126,7 @@ function FeatureCapabilitiesGrid({
27126
27126
  /* @__PURE__ */ jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-background" }),
27127
27127
  /* @__PURE__ */ jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-background" })
27128
27128
  ] }),
27129
- /* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
27129
+ /* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 pt-6 px-6 pb-0", children: [
27130
27130
  iconContent && /* @__PURE__ */ jsx(
27131
27131
  "div",
27132
27132
  {
@@ -27142,31 +27142,13 @@ function FeatureCapabilitiesGrid({
27142
27142
  {
27143
27143
  href: item.href,
27144
27144
  className: "flex-1 h-full flex items-center",
27145
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
27146
- item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(
27147
- "h3",
27148
- {
27149
- className: cn("text-lg font-medium", item.titleClassName),
27150
- children: item.title
27151
- }
27152
- ) : /* @__PURE__ */ jsx(
27153
- "div",
27154
- {
27155
- className: cn("text-lg font-medium", item.titleClassName),
27156
- children: item.title
27157
- }
27158
- )),
27159
- item.badge && /* @__PURE__ */ jsx(
27160
- "span",
27161
- {
27162
- className: cn(
27163
- "rounded-full border px-2 py-0.5 text-[10px] leading-none",
27164
- item.badgeClassName
27165
- ),
27166
- children: item.badge
27167
- }
27168
- )
27169
- ] })
27145
+ children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(
27146
+ "h3",
27147
+ {
27148
+ className: cn("text-lg font-medium", item.titleClassName),
27149
+ children: item.title
27150
+ }
27151
+ ) : item.title) })
27170
27152
  }
27171
27153
  )
27172
27154
  ] }),
@@ -27208,13 +27190,7 @@ function FeatureCapabilitiesGrid({
27208
27190
  containerClassName,
27209
27191
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-6 md:space-y-16", children: [
27210
27192
  eyebrow || heading ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-4 md:space-y-6", children: [
27211
- eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm tracking-widest", eyebrowClassName), children: eyebrow }) : /* @__PURE__ */ jsx(
27212
- "div",
27213
- {
27214
- className: cn("text-sm tracking-widest", eyebrowClassName),
27215
- children: eyebrow
27216
- }
27217
- )),
27193
+ eyebrow && (typeof eyebrow === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm tracking-widest", eyebrowClassName), children: eyebrow }) : eyebrow),
27218
27194
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
27219
27195
  "h2",
27220
27196
  {
@@ -27224,16 +27200,7 @@ function FeatureCapabilitiesGrid({
27224
27200
  ),
27225
27201
  children: heading
27226
27202
  }
27227
- ) : /* @__PURE__ */ jsx(
27228
- "div",
27229
- {
27230
- className: cn(
27231
- "text-4xl font-semibold sm:text-5xl",
27232
- headingClassName
27233
- ),
27234
- children: heading
27235
- }
27236
- ))
27203
+ ) : heading)
27237
27204
  ] }) : null,
27238
27205
  /* @__PURE__ */ jsx(
27239
27206
  "div",
@@ -37940,7 +37907,7 @@ function BlogCarouselAppleComponent({
37940
37907
  }
37941
37908
  function LongformContent({
37942
37909
  children,
37943
- renderMode = "jsx",
37910
+ renderMode = "markdown",
37944
37911
  markdownString,
37945
37912
  optixFlowConfig,
37946
37913
  markdownStyles
@@ -37979,8 +37946,6 @@ function ArticleHeroProseComponent({
37979
37946
  proseClassName,
37980
37947
  heroMediaSlot,
37981
37948
  authorSlot,
37982
- children,
37983
- renderMode = "jsx",
37984
37949
  markdownString,
37985
37950
  markdownStyles,
37986
37951
  dateFormat = "MMMM d, yyyy",
@@ -38094,7 +38059,7 @@ function ArticleHeroProseComponent({
38094
38059
  ]
38095
38060
  }
38096
38061
  ) }),
38097
- (children || renderMode === "markdown" && markdownString) && /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center", children: /* @__PURE__ */ jsx(
38062
+ markdownString && /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center", children: /* @__PURE__ */ jsx(
38098
38063
  "div",
38099
38064
  {
38100
38065
  className: cn(
@@ -38105,11 +38070,10 @@ function ArticleHeroProseComponent({
38105
38070
  children: /* @__PURE__ */ jsx(
38106
38071
  LongformContent,
38107
38072
  {
38108
- renderMode,
38073
+ renderMode: "markdown",
38109
38074
  markdownString,
38110
38075
  optixFlowConfig,
38111
- markdownStyles,
38112
- children
38076
+ markdownStyles
38113
38077
  }
38114
38078
  )
38115
38079
  }
@@ -38150,8 +38114,6 @@ function ArticleSidebarStickyComponent({
38150
38114
  heroImageSrc,
38151
38115
  heroImageAlt,
38152
38116
  heroMediaSlot,
38153
- children,
38154
- renderMode = "jsx",
38155
38117
  markdownString,
38156
38118
  markdownStyles,
38157
38119
  optixFlowConfig,
@@ -38278,11 +38240,10 @@ function ArticleSidebarStickyComponent({
38278
38240
  /* @__PURE__ */ jsx(
38279
38241
  LongformContent,
38280
38242
  {
38281
- renderMode,
38243
+ renderMode: "markdown",
38282
38244
  markdownString,
38283
38245
  optixFlowConfig,
38284
- markdownStyles,
38285
- children
38246
+ markdownStyles
38286
38247
  }
38287
38248
  ),
38288
38249
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx(
@@ -38332,8 +38293,6 @@ function ArticleTocSidebarComponent({
38332
38293
  ctaDescription,
38333
38294
  ctaActions,
38334
38295
  ctaSlot,
38335
- children,
38336
- renderMode = "jsx",
38337
38296
  markdownString,
38338
38297
  markdownStyles,
38339
38298
  enableTocTracking = true,
@@ -38525,11 +38484,10 @@ function ArticleTocSidebarComponent({
38525
38484
  /* @__PURE__ */ jsx(
38526
38485
  LongformContent,
38527
38486
  {
38528
- renderMode,
38487
+ renderMode: "markdown",
38529
38488
  markdownString,
38530
38489
  optixFlowConfig,
38531
- markdownStyles,
38532
- children
38490
+ markdownStyles
38533
38491
  }
38534
38492
  ),
38535
38493
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx(
@@ -38576,8 +38534,6 @@ function ArticleBreadcrumbSocialComponent({
38576
38534
  heroImageSrc,
38577
38535
  heroImageAlt,
38578
38536
  heroMediaSlot,
38579
- children,
38580
- renderMode = "jsx",
38581
38537
  markdownString,
38582
38538
  markdownStyles,
38583
38539
  enableTocTracking,
@@ -38723,7 +38679,7 @@ function ArticleBreadcrumbSocialComponent({
38723
38679
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
38724
38680
  breadcrumbsContent,
38725
38681
  /* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
38726
- (children || renderMode === "markdown" && markdownString) && /* @__PURE__ */ jsxs(
38682
+ markdownString && /* @__PURE__ */ jsxs(
38727
38683
  "article",
38728
38684
  {
38729
38685
  className: cn(
@@ -38746,11 +38702,10 @@ function ArticleBreadcrumbSocialComponent({
38746
38702
  /* @__PURE__ */ jsx(
38747
38703
  LongformContent,
38748
38704
  {
38749
- renderMode,
38705
+ renderMode: "markdown",
38750
38706
  markdownString,
38751
38707
  optixFlowConfig,
38752
- markdownStyles,
38753
- children
38708
+ markdownStyles
38754
38709
  }
38755
38710
  ),
38756
38711
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx(
@@ -38805,8 +38760,6 @@ function ArticleCompactTocComponent({
38805
38760
  heroImageSrc,
38806
38761
  heroImageAlt,
38807
38762
  heroMediaSlot,
38808
- children,
38809
- renderMode = "jsx",
38810
38763
  markdownString,
38811
38764
  markdownStyles,
38812
38765
  enableTocTracking = true,
@@ -38983,7 +38936,7 @@ function ArticleCompactTocComponent({
38983
38936
  }
38984
38937
  ),
38985
38938
  tocContent,
38986
- (children || renderMode === "markdown" && markdownString) && /* @__PURE__ */ jsxs(
38939
+ markdownString && /* @__PURE__ */ jsxs(
38987
38940
  "article",
38988
38941
  {
38989
38942
  className: cn(
@@ -38995,11 +38948,10 @@ function ArticleCompactTocComponent({
38995
38948
  /* @__PURE__ */ jsx(
38996
38949
  LongformContent,
38997
38950
  {
38998
- renderMode,
38951
+ renderMode: "markdown",
38999
38952
  markdownString,
39000
38953
  optixFlowConfig,
39001
- markdownStyles,
39002
- children
38954
+ markdownStyles
39003
38955
  }
39004
38956
  ),
39005
38957
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx(
@@ -39050,8 +39002,6 @@ function ArticleChaptersAuthorComponent({
39050
39002
  conclusionDescription,
39051
39003
  conclusionActions,
39052
39004
  conclusionSlot,
39053
- children,
39054
- renderMode = "jsx",
39055
39005
  markdownString,
39056
39006
  markdownStyles,
39057
39007
  enableChapterTracking = true,
@@ -39310,11 +39260,10 @@ function ArticleChaptersAuthorComponent({
39310
39260
  /* @__PURE__ */ jsx(
39311
39261
  LongformContent,
39312
39262
  {
39313
- renderMode,
39263
+ renderMode: "markdown",
39314
39264
  markdownString,
39315
39265
  optixFlowConfig,
39316
- markdownStyles,
39317
- children
39266
+ markdownStyles
39318
39267
  }
39319
39268
  ),
39320
39269
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsx(
@@ -59640,7 +59589,7 @@ function HeroConversationIntelligence({
59640
59589
  {
59641
59590
  actions,
59642
59591
  actionsSlot,
59643
- actionsClassName
59592
+ actionsClassName: cn(actionsClassName, "justify-center")
59644
59593
  }
59645
59594
  )
59646
59595
  ]
@@ -63594,11 +63543,20 @@ var NavbarMegaMenu = ({
63594
63543
  className: actionClassName,
63595
63544
  ...pressableProps
63596
63545
  } = action;
63597
- return /* @__PURE__ */ jsx(Pressable, { className: actionClassName, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
63598
- icon,
63599
- label,
63600
- iconAfter
63601
- ] }) }, index);
63546
+ return /* @__PURE__ */ jsx(
63547
+ Pressable,
63548
+ {
63549
+ asButton: true,
63550
+ className: actionClassName,
63551
+ ...pressableProps,
63552
+ children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
63553
+ icon,
63554
+ label,
63555
+ iconAfter
63556
+ ] })
63557
+ },
63558
+ index
63559
+ );
63602
63560
  });
63603
63561
  };
63604
63562
  const {
@@ -97373,6 +97331,7 @@ function StatsGrowthTimeline({
97373
97331
  futureSlot,
97374
97332
  actions,
97375
97333
  actionsSlot,
97334
+ actionsClassName,
97376
97335
  background,
97377
97336
  pattern,
97378
97337
  patternOpacity,
@@ -97419,19 +97378,18 @@ function StatsGrowthTimeline({
97419
97378
  "div",
97420
97379
  {
97421
97380
  className: cn(
97422
- "mb-4 inline-flex h-9 w-20 items-center justify-center rounded-full text-sm font-semibold",
97423
- getNestedCardBg(background, "muted"),
97424
- getNestedCardTextColor(background)
97381
+ "bg-muted text-muted-foreground",
97382
+ "mb-4 inline-flex h-fit py-2 w-fit px-4 items-center justify-center rounded-full text-sm font-semibold"
97425
97383
  ),
97426
97384
  children: milestone.year
97427
97385
  }
97428
97386
  ),
97429
- milestone.title && (typeof milestone.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-2 text-xl font-bold", children: milestone.title }) : /* @__PURE__ */ jsx("div", { className: "mb-2", children: milestone.title })),
97430
- milestone.description && (typeof milestone.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mb-4 text-muted-foreground", children: milestone.description }) : /* @__PURE__ */ jsx("div", { className: "mb-4", children: milestone.description })),
97387
+ milestone.title && (typeof milestone.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-2 text-xl font-bold", children: milestone.title }) : milestone.title),
97388
+ milestone.description && (typeof milestone.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mb-4 text-muted-foreground", children: milestone.description }) : milestone.description),
97431
97389
  milestone.metric && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4 rounded-lg border bg-background p-4 shadow-sm", children: [
97432
97390
  renderMilestoneIcon(milestone),
97433
97391
  /* @__PURE__ */ jsxs("div", { children: [
97434
- /* @__PURE__ */ jsx("div", { className: "text-3xl font-bold text-primary", children: milestone.metric.value }),
97392
+ /* @__PURE__ */ jsx("div", { className: "text-2xl font-bold text-primary", children: milestone.metric.value }),
97435
97393
  milestone.metric.label && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: milestone.metric.label })
97436
97394
  ] })
97437
97395
  ] })
@@ -97457,16 +97415,15 @@ function StatsGrowthTimeline({
97457
97415
  "div",
97458
97416
  {
97459
97417
  className: cn(
97460
- "mt-24 rounded-lg p-8",
97461
- getNestedCardBg(background, "muted"),
97462
- getNestedCardTextColor(background),
97418
+ "p-6 md:p-12 bg-card text-card-foreground",
97419
+ "mt-24 rounded-lg border border-border shadow-md",
97463
97420
  currentStatsClassName
97464
97421
  ),
97465
97422
  children: [
97466
- currentStatsHeading && (typeof currentStatsHeading === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-6 text-center text-2xl font-bold", children: currentStatsHeading }) : /* @__PURE__ */ jsx("div", { className: "mb-6 text-center", children: currentStatsHeading })),
97423
+ currentStatsHeading && (typeof currentStatsHeading === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-12 text-center text-4xl lg:text-5xl font-bold", children: currentStatsHeading }) : currentStatsHeading),
97467
97424
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: currentStats.map((stat, index) => /* @__PURE__ */ jsxs("div", { className: cn("text-center", stat.className), children: [
97468
- /* @__PURE__ */ jsx("div", { className: "mb-2 text-3xl font-bold text-primary md:text-4xl", children: stat.value }),
97469
- stat.label && /* @__PURE__ */ jsx("p", { className: "font-medium text-muted-foreground", children: stat.label })
97425
+ /* @__PURE__ */ jsx("div", { className: "text-2xl font-semibold text-primary md:text-3xl xl:text-4xl", children: stat.value }),
97426
+ stat.label && /* @__PURE__ */ jsx("p", { className: "font-medium text-balance text-sm", children: stat.label })
97470
97427
  ] }, index)) })
97471
97428
  ]
97472
97429
  }
@@ -97478,39 +97435,29 @@ function StatsGrowthTimeline({
97478
97435
  currentStatsHeading,
97479
97436
  currentStatsClassName
97480
97437
  ]);
97481
- const actionsContent = useMemo(() => {
97482
- if (actionsSlot) return actionsSlot;
97483
- if (!actions || actions.length === 0) return null;
97484
- return actions.map((action, index) => /* @__PURE__ */ jsxs(
97485
- Pressable,
97486
- {
97487
- href: action.href,
97488
- onClick: action.onClick,
97489
- variant: action.variant,
97490
- className: "inline-flex items-center font-medium text-primary hover:underline",
97491
- children: [
97492
- action.label,
97493
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16, className: "ml-2" })
97494
- ]
97495
- },
97496
- index
97497
- ));
97498
- }, [actionsSlot, actions]);
97499
97438
  const futureContent = useMemo(() => {
97500
97439
  if (futureSlot) return futureSlot;
97501
97440
  if (!futureHeading && !futureDescription && (!actions || actions.length === 0))
97502
97441
  return null;
97503
97442
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-16 text-center", futureClassName), children: [
97504
97443
  futureHeading && (typeof futureHeading === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-4 text-2xl font-bold", children: futureHeading }) : /* @__PURE__ */ jsx("div", { className: "mb-4", children: futureHeading })),
97505
- futureDescription && (typeof futureDescription === "string" ? /* @__PURE__ */ jsx("p", { className: "mx-auto mb-8 max-w-2xl text-muted-foreground", children: futureDescription }) : /* @__PURE__ */ jsx("div", { className: "mx-auto mb-8 max-w-2xl", children: futureDescription })),
97506
- actionsContent
97444
+ futureDescription && (typeof futureDescription === "string" ? /* @__PURE__ */ jsx("p", { className: "mx-auto mb-8 max-w-full md:max-w-lg text-balance", children: futureDescription }) : futureDescription),
97445
+ /* @__PURE__ */ jsx(
97446
+ BlockActions,
97447
+ {
97448
+ actions,
97449
+ actionsSlot,
97450
+ actionsClassName
97451
+ }
97452
+ )
97507
97453
  ] });
97508
97454
  }, [
97509
97455
  futureSlot,
97510
97456
  futureHeading,
97511
97457
  futureDescription,
97512
97458
  futureClassName,
97513
- actionsContent,
97459
+ actionsSlot,
97460
+ actionsClassName,
97514
97461
  actions
97515
97462
  ]);
97516
97463
  const hasHeaderContent = !!(badge || badgeSlot || heading || description);
@@ -97547,7 +97494,7 @@ function StatsGrowthTimeline({
97547
97494
  ),
97548
97495
  children: description
97549
97496
  }
97550
- ) : /* @__PURE__ */ jsx("div", { className: cn("mx-auto max-w-3xl", descriptionClassName), children: description }))
97497
+ ) : description)
97551
97498
  ] }),
97552
97499
  milestonesContent,
97553
97500
  currentStatsContent,
@@ -34,36 +34,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
34
  function cn(...inputs) {
35
35
  return tailwindMerge.twMerge(clsx.clsx(inputs));
36
36
  }
37
- function getNestedCardBg(parentBg, variant = "muted", options) {
38
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
39
- if (isDark) {
40
- switch (variant) {
41
- case "muted":
42
- return "bg-background";
43
- case "card":
44
- return "bg-card";
45
- case "accent":
46
- return "bg-accent";
47
- case "subtle":
48
- return "bg-background/50";
49
- }
50
- } else {
51
- switch (variant) {
52
- case "muted":
53
- return "bg-muted";
54
- case "card":
55
- return "bg-card";
56
- case "accent":
57
- return "bg-accent";
58
- case "subtle":
59
- return "bg-muted/50";
60
- }
61
- }
62
- }
63
- function getNestedCardTextColor(parentBg, options) {
64
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
65
- return isDark ? "text-foreground" : "";
66
- }
67
37
  var badgeVariants = classVarianceAuthority.cva(
68
38
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
69
39
  {
@@ -480,6 +450,70 @@ var Section = React__namespace.default.forwardRef(
480
450
  }
481
451
  );
482
452
  Section.displayName = "Section";
453
+ var MOBILE_CLASSES = {
454
+ "fit-left": "items-start md:items-center",
455
+ "fit-center": "items-center",
456
+ "fit-right": "items-end md:items-center",
457
+ "full-left": "items-stretch md:items-center",
458
+ "full-center": "items-stretch md:items-center",
459
+ "full-right": "items-stretch md:items-center"
460
+ };
461
+ function BlockActions({
462
+ mobileConfig,
463
+ actionsClassName,
464
+ verticalSpacing = "mt-4 md:mt-8",
465
+ actions,
466
+ actionsSlot
467
+ }) {
468
+ const width = mobileConfig?.width ?? "full";
469
+ const position = mobileConfig?.position ?? "center";
470
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
471
+ if (actionsSlot) {
472
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
473
+ } else if (actions && actions?.length > 0) {
474
+ return /* @__PURE__ */ jsxRuntime.jsx(
475
+ "div",
476
+ {
477
+ className: cn(
478
+ "flex flex-col md:flex-row flex-wrap gap-4",
479
+ mobileLayoutClass,
480
+ actionsClassName,
481
+ verticalSpacing
482
+ ),
483
+ children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
484
+ }
485
+ );
486
+ } else {
487
+ return null;
488
+ }
489
+ }
490
+ function ActionComponent({ action }) {
491
+ const {
492
+ label,
493
+ icon,
494
+ iconAfter,
495
+ children,
496
+ href,
497
+ onClick,
498
+ className: actionClassName,
499
+ ...pressableProps
500
+ } = action;
501
+ return /* @__PURE__ */ jsxRuntime.jsx(
502
+ pressable.Pressable,
503
+ {
504
+ href,
505
+ onClick,
506
+ asButton: action.asButton ?? true,
507
+ className: actionClassName,
508
+ ...pressableProps,
509
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
510
+ icon,
511
+ label,
512
+ iconAfter
513
+ ] })
514
+ }
515
+ );
516
+ }
483
517
  function StatsGrowthTimeline({
484
518
  sectionId = "stats-growth-timeline",
485
519
  badge,
@@ -496,6 +530,7 @@ function StatsGrowthTimeline({
496
530
  futureSlot,
497
531
  actions,
498
532
  actionsSlot,
533
+ actionsClassName,
499
534
  background,
500
535
  pattern,
501
536
  patternOpacity,
@@ -542,19 +577,18 @@ function StatsGrowthTimeline({
542
577
  "div",
543
578
  {
544
579
  className: cn(
545
- "mb-4 inline-flex h-9 w-20 items-center justify-center rounded-full text-sm font-semibold",
546
- getNestedCardBg(background, "muted"),
547
- getNestedCardTextColor(background)
580
+ "bg-muted text-muted-foreground",
581
+ "mb-4 inline-flex h-fit py-2 w-fit px-4 items-center justify-center rounded-full text-sm font-semibold"
548
582
  ),
549
583
  children: milestone.year
550
584
  }
551
585
  ),
552
- milestone.title && (typeof milestone.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-xl font-bold", children: milestone.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2", children: milestone.title })),
553
- milestone.description && (typeof milestone.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-muted-foreground", children: milestone.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: milestone.description })),
586
+ milestone.title && (typeof milestone.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-xl font-bold", children: milestone.title }) : milestone.title),
587
+ milestone.description && (typeof milestone.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-muted-foreground", children: milestone.description }) : milestone.description),
554
588
  milestone.metric && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4 rounded-lg border bg-background p-4 shadow-sm", children: [
555
589
  renderMilestoneIcon(milestone),
556
590
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
557
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-3xl font-bold text-primary", children: milestone.metric.value }),
591
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold text-primary", children: milestone.metric.value }),
558
592
  milestone.metric.label && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: milestone.metric.label })
559
593
  ] })
560
594
  ] })
@@ -580,16 +614,15 @@ function StatsGrowthTimeline({
580
614
  "div",
581
615
  {
582
616
  className: cn(
583
- "mt-24 rounded-lg p-8",
584
- getNestedCardBg(background, "muted"),
585
- getNestedCardTextColor(background),
617
+ "p-6 md:p-12 bg-card text-card-foreground",
618
+ "mt-24 rounded-lg border border-border shadow-md",
586
619
  currentStatsClassName
587
620
  ),
588
621
  children: [
589
- currentStatsHeading && (typeof currentStatsHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-6 text-center text-2xl font-bold", children: currentStatsHeading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 text-center", children: currentStatsHeading })),
622
+ currentStatsHeading && (typeof currentStatsHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-12 text-center text-4xl lg:text-5xl font-bold", children: currentStatsHeading }) : currentStatsHeading),
590
623
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: currentStats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("text-center", stat.className), children: [
591
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-3xl font-bold text-primary md:text-4xl", children: stat.value }),
592
- stat.label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-muted-foreground", children: stat.label })
624
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-semibold text-primary md:text-3xl xl:text-4xl", children: stat.value }),
625
+ stat.label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-balance text-sm", children: stat.label })
593
626
  ] }, index)) })
594
627
  ]
595
628
  }
@@ -601,39 +634,29 @@ function StatsGrowthTimeline({
601
634
  currentStatsHeading,
602
635
  currentStatsClassName
603
636
  ]);
604
- const actionsContent = React.useMemo(() => {
605
- if (actionsSlot) return actionsSlot;
606
- if (!actions || actions.length === 0) return null;
607
- return actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsxs(
608
- pressable.Pressable,
609
- {
610
- href: action.href,
611
- onClick: action.onClick,
612
- variant: action.variant,
613
- className: "inline-flex items-center font-medium text-primary hover:underline",
614
- children: [
615
- action.label,
616
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16, className: "ml-2" })
617
- ]
618
- },
619
- index
620
- ));
621
- }, [actionsSlot, actions]);
622
637
  const futureContent = React.useMemo(() => {
623
638
  if (futureSlot) return futureSlot;
624
639
  if (!futureHeading && !futureDescription && (!actions || actions.length === 0))
625
640
  return null;
626
641
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-16 text-center", futureClassName), children: [
627
642
  futureHeading && (typeof futureHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-2xl font-bold", children: futureHeading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: futureHeading })),
628
- futureDescription && (typeof futureDescription === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mb-8 max-w-2xl text-muted-foreground", children: futureDescription }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto mb-8 max-w-2xl", children: futureDescription })),
629
- actionsContent
643
+ futureDescription && (typeof futureDescription === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mx-auto mb-8 max-w-full md:max-w-lg text-balance", children: futureDescription }) : futureDescription),
644
+ /* @__PURE__ */ jsxRuntime.jsx(
645
+ BlockActions,
646
+ {
647
+ actions,
648
+ actionsSlot,
649
+ actionsClassName
650
+ }
651
+ )
630
652
  ] });
631
653
  }, [
632
654
  futureSlot,
633
655
  futureHeading,
634
656
  futureDescription,
635
657
  futureClassName,
636
- actionsContent,
658
+ actionsSlot,
659
+ actionsClassName,
637
660
  actions
638
661
  ]);
639
662
  const hasHeaderContent = !!(badge || badgeSlot || heading || description);
@@ -670,7 +693,7 @@ function StatsGrowthTimeline({
670
693
  ),
671
694
  children: description
672
695
  }
673
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto max-w-3xl", descriptionClassName), children: description }))
696
+ ) : description)
674
697
  ] }),
675
698
  milestonesContent,
676
699
  currentStatsContent,
@@ -126,6 +126,10 @@ interface StatsGrowthTimelineProps {
126
126
  * Custom slot for rendering actions (overrides actions array)
127
127
  */
128
128
  actionsSlot?: React.ReactNode;
129
+ /**
130
+ * Additional CSS classes for the actions container
131
+ */
132
+ actionsClassName?: string;
129
133
  /**
130
134
  * Background style for the section
131
135
  */
@@ -206,6 +210,6 @@ interface StatsGrowthTimelineProps {
206
210
  * />
207
211
  * ```
208
212
  */
209
- declare function StatsGrowthTimeline({ sectionId, badge, badgeSlot, heading, description, milestones, milestonesSlot, currentStats, currentStatsSlot, currentStatsHeading, futureHeading, futureDescription, futureSlot, actions, actionsSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, headerClassName, badgeClassName, headingClassName, descriptionClassName, timelineClassName, milestoneClassName, currentStatsClassName, futureClassName, }: StatsGrowthTimelineProps): react_jsx_runtime.JSX.Element;
213
+ declare function StatsGrowthTimeline({ sectionId, badge, badgeSlot, heading, description, milestones, milestonesSlot, currentStats, currentStatsSlot, currentStatsHeading, futureHeading, futureDescription, futureSlot, actions, actionsSlot, actionsClassName, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, headerClassName, badgeClassName, headingClassName, descriptionClassName, timelineClassName, milestoneClassName, currentStatsClassName, futureClassName, }: StatsGrowthTimelineProps): react_jsx_runtime.JSX.Element;
210
214
 
211
215
  export { type CurrentStat, type Milestone, StatsGrowthTimeline, type StatsGrowthTimelineProps };
@@ -126,6 +126,10 @@ interface StatsGrowthTimelineProps {
126
126
  * Custom slot for rendering actions (overrides actions array)
127
127
  */
128
128
  actionsSlot?: React.ReactNode;
129
+ /**
130
+ * Additional CSS classes for the actions container
131
+ */
132
+ actionsClassName?: string;
129
133
  /**
130
134
  * Background style for the section
131
135
  */
@@ -206,6 +210,6 @@ interface StatsGrowthTimelineProps {
206
210
  * />
207
211
  * ```
208
212
  */
209
- declare function StatsGrowthTimeline({ sectionId, badge, badgeSlot, heading, description, milestones, milestonesSlot, currentStats, currentStatsSlot, currentStatsHeading, futureHeading, futureDescription, futureSlot, actions, actionsSlot, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, headerClassName, badgeClassName, headingClassName, descriptionClassName, timelineClassName, milestoneClassName, currentStatsClassName, futureClassName, }: StatsGrowthTimelineProps): react_jsx_runtime.JSX.Element;
213
+ declare function StatsGrowthTimeline({ sectionId, badge, badgeSlot, heading, description, milestones, milestonesSlot, currentStats, currentStatsSlot, currentStatsHeading, futureHeading, futureDescription, futureSlot, actions, actionsSlot, actionsClassName, background, pattern, patternOpacity, patternClassName, className, containerClassName, spacing, headerClassName, badgeClassName, headingClassName, descriptionClassName, timelineClassName, milestoneClassName, currentStatsClassName, futureClassName, }: StatsGrowthTimelineProps): react_jsx_runtime.JSX.Element;
210
214
 
211
215
  export { type CurrentStat, type Milestone, StatsGrowthTimeline, type StatsGrowthTimelineProps };