@opensite/ui 0.8.4 → 0.8.5

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 (51) hide show
  1. package/dist/article-breadcrumb-social.cjs +57 -73
  2. package/dist/article-breadcrumb-social.d.cts +2 -24
  3. package/dist/article-breadcrumb-social.d.ts +2 -24
  4. package/dist/article-breadcrumb-social.js +57 -73
  5. package/dist/article-compact-toc.cjs +1 -1
  6. package/dist/article-compact-toc.js +1 -1
  7. package/dist/article-sidebar-sticky.cjs +73 -26
  8. package/dist/article-sidebar-sticky.js +73 -26
  9. package/dist/blog-horizontal-timeline.cjs +7 -4
  10. package/dist/blog-horizontal-timeline.js +7 -4
  11. package/dist/faq-split-hero.cjs +704 -0
  12. package/dist/faq-split-hero.d.cts +118 -0
  13. package/dist/faq-split-hero.d.ts +118 -0
  14. package/dist/faq-split-hero.js +682 -0
  15. package/dist/feature-badge-grid-six.cjs +1 -1
  16. package/dist/feature-badge-grid-six.js +1 -1
  17. package/dist/feature-card-grid-linked.cjs +92 -22
  18. package/dist/feature-card-grid-linked.js +92 -22
  19. package/dist/feature-carousel-progress.cjs +1 -1
  20. package/dist/feature-carousel-progress.js +1 -1
  21. package/dist/feature-checklist-image.cjs +88 -15
  22. package/dist/feature-checklist-image.js +88 -15
  23. package/dist/feature-checklist-three-column.cjs +1 -1
  24. package/dist/feature-checklist-three-column.js +1 -1
  25. package/dist/feature-icon-grid-accent.cjs +50 -8
  26. package/dist/feature-icon-grid-accent.js +50 -8
  27. package/dist/feature-icon-grid-bordered.cjs +84 -14
  28. package/dist/feature-icon-grid-bordered.js +84 -14
  29. package/dist/feature-icon-tabs-content.cjs +217 -84
  30. package/dist/feature-icon-tabs-content.js +217 -84
  31. package/dist/feature-image-overlay-badge.cjs +106 -33
  32. package/dist/feature-image-overlay-badge.js +106 -33
  33. package/dist/feature-numbered-cards.cjs +154 -35
  34. package/dist/feature-numbered-cards.js +154 -35
  35. package/dist/feature-showcase.cjs +67 -71
  36. package/dist/feature-showcase.d.cts +1 -5
  37. package/dist/feature-showcase.d.ts +1 -5
  38. package/dist/feature-showcase.js +68 -72
  39. package/dist/feature-split-image-reverse.cjs +90 -15
  40. package/dist/feature-split-image-reverse.js +90 -15
  41. package/dist/feature-split-image.cjs +87 -15
  42. package/dist/feature-split-image.js +87 -15
  43. package/dist/feature-stats-highlight.cjs +2 -2
  44. package/dist/feature-stats-highlight.js +2 -2
  45. package/dist/feature-tabbed-content-image.cjs +207 -72
  46. package/dist/feature-tabbed-content-image.js +207 -72
  47. package/dist/feature-three-column-values.cjs +107 -14
  48. package/dist/feature-three-column-values.js +107 -14
  49. package/dist/registry.cjs +1460 -461
  50. package/dist/registry.js +1460 -461
  51. package/package.json +1 -1
package/dist/registry.cjs CHANGED
@@ -20331,7 +20331,6 @@ function FeatureShowcase({
20331
20331
  slideClassName,
20332
20332
  contentClassName,
20333
20333
  mediaClassName,
20334
- arrowClassName,
20335
20334
  equalizeOnMobile,
20336
20335
  stretchMediaOnMobile,
20337
20336
  background,
@@ -20340,10 +20339,21 @@ function FeatureShowcase({
20340
20339
  patternOpacity,
20341
20340
  patternClassName
20342
20341
  }) {
20343
- const baseArrowClassName = React52.useMemo(
20344
- () => "bottom-4 top-auto size-12 translate-y-0 rounded-full border border-current bg-transparent text-current shadow-sm focus:ring-current focus:ring-offset-2 focus:ring-offset-transparent hover:bg-current/10 md:bottom-6",
20345
- []
20346
- );
20342
+ const [api, setApi] = React52__namespace.useState();
20343
+ const [canScrollPrevious, setCanScrollPrevious] = React52__namespace.useState(false);
20344
+ const [canScrollNext, setCanScrollNext] = React52__namespace.useState(false);
20345
+ React52__namespace.useEffect(() => {
20346
+ if (!api) return;
20347
+ const updateScrollState = () => {
20348
+ setCanScrollPrevious(api.canScrollPrev());
20349
+ setCanScrollNext(api.canScrollNext());
20350
+ };
20351
+ updateScrollState();
20352
+ api.on("select", updateScrollState);
20353
+ return () => {
20354
+ api.off("select", updateScrollState);
20355
+ };
20356
+ }, [api]);
20347
20357
  const [mobileSlideHeight, setMobileSlideHeight] = React52.useState(
20348
20358
  null
20349
20359
  );
@@ -20386,7 +20396,7 @@ function FeatureShowcase({
20386
20396
  }, [equalizeOnMobile, items]);
20387
20397
  const carouselContent = React52.useMemo(() => {
20388
20398
  if (!items || items.length === 0) return null;
20389
- return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, children: [
20399
+ return /* @__PURE__ */ jsxRuntime.jsxs(Carousel, { className: carouselClassName, setApi, children: [
20390
20400
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsxRuntime.jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsxRuntime.jsx(CarouselItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(
20391
20401
  "div",
20392
20402
  {
@@ -20415,15 +20425,14 @@ function FeatureShowcase({
20415
20425
  }
20416
20426
  ) }, `slide-${itemIndex}`)) }) }),
20417
20427
  /* @__PURE__ */ jsxRuntime.jsx(
20418
- CarouselPrevious,
20428
+ CarouselPagination,
20419
20429
  {
20420
- className: cn(baseArrowClassName, "right-16", arrowClassName)
20421
- }
20422
- ),
20423
- /* @__PURE__ */ jsxRuntime.jsx(
20424
- CarouselNext,
20425
- {
20426
- className: cn(baseArrowClassName, "right-0", arrowClassName)
20430
+ onPrevious: () => api?.scrollPrev(),
20431
+ onNext: () => api?.scrollNext(),
20432
+ canScrollPrevious,
20433
+ canScrollNext,
20434
+ className: "absolute bottom-4 right-0 md:bottom-6",
20435
+ buttonClassName: "size-12 rounded-full border border-current bg-transparent text-current shadow-sm hover:bg-current/10"
20427
20436
  }
20428
20437
  )
20429
20438
  ] });
@@ -20436,8 +20445,9 @@ function FeatureShowcase({
20436
20445
  contentClassName,
20437
20446
  mediaWrapperClassName,
20438
20447
  mediaClassName,
20439
- baseArrowClassName,
20440
- arrowClassName
20448
+ api,
20449
+ canScrollPrevious,
20450
+ canScrollNext
20441
20451
  ]);
20442
20452
  return /* @__PURE__ */ jsxRuntime.jsxs(
20443
20453
  Section,
@@ -20473,7 +20483,7 @@ function FeatureSplitImage({
20473
20483
  imageClassName,
20474
20484
  optixFlowConfig,
20475
20485
  background,
20476
- spacing,
20486
+ spacing = "py-6 md:py-32",
20477
20487
  pattern,
20478
20488
  patternOpacity,
20479
20489
  patternClassName
@@ -20490,11 +20500,20 @@ function FeatureSplitImage({
20490
20500
  className: actionClassName,
20491
20501
  ...pressableProps
20492
20502
  } = action;
20493
- return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20494
- icon,
20495
- label,
20496
- iconAfter
20497
- ] }) }, index);
20503
+ return /* @__PURE__ */ jsxRuntime.jsx(
20504
+ Pressable,
20505
+ {
20506
+ className: actionClassName,
20507
+ asButton: true,
20508
+ ...pressableProps,
20509
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20510
+ icon,
20511
+ label,
20512
+ iconAfter
20513
+ ] })
20514
+ },
20515
+ index
20516
+ );
20498
20517
  });
20499
20518
  }, [actionsSlot, actions]);
20500
20519
  const imageContent = React52.useMemo(() => {
@@ -20505,7 +20524,10 @@ function FeatureSplitImage({
20505
20524
  {
20506
20525
  src: imageSrc,
20507
20526
  alt: imageAlt || "",
20508
- className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
20527
+ className: cn(
20528
+ "max-h-96 w-full rounded-md object-cover",
20529
+ imageClassName
20530
+ ),
20509
20531
  loading: "lazy",
20510
20532
  optixFlowConfig
20511
20533
  }
@@ -20521,14 +20543,74 @@ function FeatureSplitImage({
20521
20543
  patternClassName,
20522
20544
  className,
20523
20545
  containerClassName,
20524
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid items-center gap-8 lg:grid-cols-2", gridClassName), children: [
20525
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
20526
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
20527
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
20528
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20529
- ] }),
20530
- imageContent
20531
- ] })
20546
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
20547
+ "div",
20548
+ {
20549
+ className: cn("grid items-center gap-8 lg:grid-cols-2", gridClassName),
20550
+ children: [
20551
+ /* @__PURE__ */ jsxRuntime.jsxs(
20552
+ "div",
20553
+ {
20554
+ className: cn(
20555
+ "flex flex-col items-center text-center lg:items-start lg:text-left",
20556
+ contentClassName
20557
+ ),
20558
+ children: [
20559
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20560
+ "h2",
20561
+ {
20562
+ className: cn(
20563
+ "my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
20564
+ titleClassName
20565
+ ),
20566
+ children: title
20567
+ }
20568
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20569
+ "div",
20570
+ {
20571
+ className: cn(
20572
+ "my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
20573
+ titleClassName
20574
+ ),
20575
+ children: title
20576
+ }
20577
+ )),
20578
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20579
+ "p",
20580
+ {
20581
+ className: cn(
20582
+ "mb-8 max-w-xl text-muted-foreground lg:text-lg",
20583
+ descriptionClassName
20584
+ ),
20585
+ children: description
20586
+ }
20587
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20588
+ "div",
20589
+ {
20590
+ className: cn(
20591
+ "mb-8 max-w-xl text-muted-foreground lg:text-lg",
20592
+ descriptionClassName
20593
+ ),
20594
+ children: description
20595
+ }
20596
+ )),
20597
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
20598
+ "div",
20599
+ {
20600
+ className: cn(
20601
+ "flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start",
20602
+ actionsClassName
20603
+ ),
20604
+ children: actionsContent
20605
+ }
20606
+ )
20607
+ ]
20608
+ }
20609
+ ),
20610
+ imageContent
20611
+ ]
20612
+ }
20613
+ )
20532
20614
  }
20533
20615
  );
20534
20616
  }
@@ -20550,7 +20632,7 @@ function FeatureSplitImageReverse({
20550
20632
  actionsClassName,
20551
20633
  optixFlowConfig,
20552
20634
  background,
20553
- spacing,
20635
+ spacing = "py-6 md:py-32",
20554
20636
  pattern,
20555
20637
  patternOpacity,
20556
20638
  patternClassName
@@ -20567,11 +20649,20 @@ function FeatureSplitImageReverse({
20567
20649
  className: actionClassName,
20568
20650
  ...pressableProps
20569
20651
  } = action;
20570
- return /* @__PURE__ */ jsxRuntime.jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20571
- icon,
20572
- label,
20573
- iconAfter
20574
- ] }) }, index);
20652
+ return /* @__PURE__ */ jsxRuntime.jsx(
20653
+ Pressable,
20654
+ {
20655
+ className: actionClassName,
20656
+ asButton: true,
20657
+ ...pressableProps,
20658
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20659
+ icon,
20660
+ label,
20661
+ iconAfter
20662
+ ] })
20663
+ },
20664
+ index
20665
+ );
20575
20666
  });
20576
20667
  }, [actionsSlot, actions]);
20577
20668
  const imageContent = React52.useMemo(() => {
@@ -20582,7 +20673,10 @@ function FeatureSplitImageReverse({
20582
20673
  {
20583
20674
  src: imageSrc,
20584
20675
  alt: imageAlt || "",
20585
- className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
20676
+ className: cn(
20677
+ "max-h-96 w-full rounded-md object-cover",
20678
+ imageClassName
20679
+ ),
20586
20680
  loading: "lazy",
20587
20681
  optixFlowConfig
20588
20682
  }
@@ -20598,14 +20692,77 @@ function FeatureSplitImageReverse({
20598
20692
  patternClassName,
20599
20693
  className,
20600
20694
  containerClassName,
20601
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid items-center gap-8 md:gap-16 lg:grid-cols-2", gridClassName), children: [
20602
- imageContent,
20603
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
20604
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
20605
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
20606
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20607
- ] })
20608
- ] })
20695
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
20696
+ "div",
20697
+ {
20698
+ className: cn(
20699
+ "grid items-center gap-8 md:gap-16 lg:grid-cols-2",
20700
+ gridClassName
20701
+ ),
20702
+ children: [
20703
+ imageContent,
20704
+ /* @__PURE__ */ jsxRuntime.jsxs(
20705
+ "div",
20706
+ {
20707
+ className: cn(
20708
+ "flex flex-col items-center text-center lg:items-start lg:text-left",
20709
+ contentClassName
20710
+ ),
20711
+ children: [
20712
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20713
+ "h2",
20714
+ {
20715
+ className: cn(
20716
+ "my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
20717
+ titleClassName
20718
+ ),
20719
+ children: title
20720
+ }
20721
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20722
+ "div",
20723
+ {
20724
+ className: cn(
20725
+ "my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl",
20726
+ titleClassName
20727
+ ),
20728
+ children: title
20729
+ }
20730
+ )),
20731
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20732
+ "p",
20733
+ {
20734
+ className: cn(
20735
+ "mb-8 max-w-xl text-muted-foreground lg:text-lg",
20736
+ descriptionClassName
20737
+ ),
20738
+ children: description
20739
+ }
20740
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20741
+ "div",
20742
+ {
20743
+ className: cn(
20744
+ "mb-8 max-w-xl text-muted-foreground lg:text-lg",
20745
+ descriptionClassName
20746
+ ),
20747
+ children: description
20748
+ }
20749
+ )),
20750
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
20751
+ "div",
20752
+ {
20753
+ className: cn(
20754
+ "flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start",
20755
+ actionsClassName
20756
+ ),
20757
+ children: actionsContent
20758
+ }
20759
+ )
20760
+ ]
20761
+ }
20762
+ )
20763
+ ]
20764
+ }
20765
+ )
20609
20766
  }
20610
20767
  );
20611
20768
  }
@@ -20621,7 +20778,7 @@ function FeatureIconGridBordered({
20621
20778
  gridClassName,
20622
20779
  cardClassName,
20623
20780
  background,
20624
- spacing,
20781
+ spacing = "py-6 md:py-32",
20625
20782
  pattern,
20626
20783
  patternOpacity,
20627
20784
  patternClassName
@@ -20639,18 +20796,67 @@ function FeatureIconGridBordered({
20639
20796
  return features.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
20640
20797
  "div",
20641
20798
  {
20642
- className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
20799
+ className: cn(
20800
+ "relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5",
20801
+ cardClassName,
20802
+ feature.className
20803
+ ),
20643
20804
  children: [
20644
- (feature.icon || feature.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", feature.iconClassName), children: renderIcon(feature) }),
20805
+ (feature.icon || feature.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
20806
+ "span",
20807
+ {
20808
+ className: cn(
20809
+ "mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground md:size-12",
20810
+ feature.iconClassName
20811
+ ),
20812
+ children: renderIcon(feature)
20813
+ }
20814
+ ),
20645
20815
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
20646
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20647
- feature.title,
20648
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20649
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20650
- feature.title,
20651
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20652
- ] })),
20653
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
20816
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsxs(
20817
+ "h3",
20818
+ {
20819
+ className: cn(
20820
+ "font-medium md:mb-2 md:text-xl",
20821
+ feature.titleClassName
20822
+ ),
20823
+ children: [
20824
+ feature.title,
20825
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20826
+ ]
20827
+ }
20828
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
20829
+ "div",
20830
+ {
20831
+ className: cn(
20832
+ "font-medium md:mb-2 md:text-xl",
20833
+ feature.titleClassName
20834
+ ),
20835
+ children: [
20836
+ feature.title,
20837
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20838
+ ]
20839
+ }
20840
+ )),
20841
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20842
+ "p",
20843
+ {
20844
+ className: cn(
20845
+ "text-sm md:text-base",
20846
+ feature.descriptionClassName
20847
+ ),
20848
+ children: feature.description
20849
+ }
20850
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20851
+ "div",
20852
+ {
20853
+ className: cn(
20854
+ "text-sm md:text-base",
20855
+ feature.descriptionClassName
20856
+ ),
20857
+ children: feature.description
20858
+ }
20859
+ ))
20654
20860
  ] })
20655
20861
  ]
20656
20862
  },
@@ -20668,9 +20874,30 @@ function FeatureIconGridBordered({
20668
20874
  className,
20669
20875
  containerClassName,
20670
20876
  children: [
20671
- label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label })),
20672
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
20673
- (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
20877
+ label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-xs ", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-xs ", labelClassName), children: label })),
20878
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
20879
+ "h2",
20880
+ {
20881
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
20882
+ children: title
20883
+ }
20884
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
20885
+ "div",
20886
+ {
20887
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
20888
+ children: title
20889
+ }
20890
+ )),
20891
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
20892
+ "div",
20893
+ {
20894
+ className: cn(
20895
+ "mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4",
20896
+ gridClassName
20897
+ ),
20898
+ children: featuresContent
20899
+ }
20900
+ )
20674
20901
  ]
20675
20902
  }
20676
20903
  );
@@ -20696,7 +20923,7 @@ function FeatureChecklistImage({
20696
20923
  checklistClassName,
20697
20924
  optixFlowConfig,
20698
20925
  background,
20699
- spacing,
20926
+ spacing = "py-6 md:py-32",
20700
20927
  pattern,
20701
20928
  patternOpacity,
20702
20929
  patternClassName
@@ -20749,7 +20976,10 @@ function FeatureChecklistImage({
20749
20976
  {
20750
20977
  src: imageSrc,
20751
20978
  alt: imageAlt || "Feature illustration",
20752
- className: cn("max-h-96 w-full rounded-lg object-cover md:max-h-[500px] md:w-1/2", imageClassName),
20979
+ className: cn(
20980
+ "max-h-96 w-full rounded-lg object-cover md:max-h-[500px] md:w-1/2",
20981
+ imageClassName
20982
+ ),
20753
20983
  loading: "lazy",
20754
20984
  optixFlowConfig
20755
20985
  }
@@ -20763,10 +20993,17 @@ function FeatureChecklistImage({
20763
20993
  const content = isString ? item : item.content;
20764
20994
  const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }));
20765
20995
  const itemClassName = isString ? void 0 : item.className;
20766
- return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-center gap-3", itemClassName), children: [
20767
- iconElement,
20768
- content
20769
- ] }, index);
20996
+ return /* @__PURE__ */ jsxRuntime.jsxs(
20997
+ "li",
20998
+ {
20999
+ className: cn("flex items-center gap-3", itemClassName),
21000
+ children: [
21001
+ iconElement,
21002
+ content
21003
+ ]
21004
+ },
21005
+ index
21006
+ );
20770
21007
  });
20771
21008
  }, [checklistSlot, checklistItems]);
20772
21009
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -20779,15 +21016,78 @@ function FeatureChecklistImage({
20779
21016
  patternClassName,
20780
21017
  className,
20781
21018
  containerClassName: cn("max-w-6xl", containerClassName),
20782
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-12 md:flex-row", contentWrapperClassName), children: [
20783
- imageContent,
20784
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
20785
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
20786
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
20787
- actionsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent }),
20788
- checklistContent && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
20789
- ] })
20790
- ] })
21019
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
21020
+ "div",
21021
+ {
21022
+ className: cn(
21023
+ "flex flex-col gap-12 md:flex-row",
21024
+ contentWrapperClassName
21025
+ ),
21026
+ children: [
21027
+ imageContent,
21028
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
21029
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21030
+ "h2",
21031
+ {
21032
+ className: cn(
21033
+ "text-3xl font-medium text-balance md:text-5xl",
21034
+ titleClassName
21035
+ ),
21036
+ children: title
21037
+ }
21038
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21039
+ "div",
21040
+ {
21041
+ className: cn(
21042
+ "text-3xl font-medium text-balance md:text-5xl",
21043
+ titleClassName
21044
+ ),
21045
+ children: title
21046
+ }
21047
+ )),
21048
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21049
+ "p",
21050
+ {
21051
+ className: cn(
21052
+ "mt-1 text-muted-foreground md:mt-6",
21053
+ descriptionClassName
21054
+ ),
21055
+ children: description
21056
+ }
21057
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21058
+ "div",
21059
+ {
21060
+ className: cn(
21061
+ "mt-1 text-muted-foreground md:mt-6",
21062
+ descriptionClassName
21063
+ ),
21064
+ children: description
21065
+ }
21066
+ )),
21067
+ actionsContent && /* @__PURE__ */ jsxRuntime.jsx(
21068
+ "div",
21069
+ {
21070
+ className: cn(
21071
+ "flex flex-wrap items-center gap-2",
21072
+ actionsClassName
21073
+ ),
21074
+ children: actionsContent
21075
+ }
21076
+ ),
21077
+ checklistContent && /* @__PURE__ */ jsxRuntime.jsx(
21078
+ "ul",
21079
+ {
21080
+ className: cn(
21081
+ "mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0",
21082
+ checklistClassName
21083
+ ),
21084
+ children: checklistContent
21085
+ }
21086
+ )
21087
+ ] })
21088
+ ]
21089
+ }
21090
+ )
20791
21091
  }
20792
21092
  );
20793
21093
  }
@@ -20863,7 +21163,7 @@ function FeatureCarouselProgress({
20863
21163
  {
20864
21164
  className: "basis-full md:basis-1/2 lg:basis-1/3",
20865
21165
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1", children: /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
20866
- (slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
21166
+ (slide.icon || slide.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-primary text-primary-foreground lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
20867
21167
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
20868
21168
  slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
20869
21169
  ] }) }) }) })
@@ -20920,27 +21220,30 @@ function FeatureCardGridLinked({
20920
21220
  cardClassName,
20921
21221
  optixFlowConfig,
20922
21222
  background,
20923
- spacing,
21223
+ spacing = "py-6 md:py-32",
20924
21224
  pattern,
20925
21225
  patternOpacity,
20926
21226
  patternClassName
20927
21227
  }) {
20928
- const renderImage = React52.useCallback((feature, imageAlt) => {
20929
- if (feature.imageSlot) return feature.imageSlot;
20930
- if (feature.image) {
20931
- return /* @__PURE__ */ jsxRuntime.jsx(
20932
- img.Img,
20933
- {
20934
- src: feature.image,
20935
- alt: imageAlt,
20936
- className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
20937
- loading: "lazy",
20938
- optixFlowConfig
20939
- }
20940
- );
20941
- }
20942
- return null;
20943
- }, [optixFlowConfig]);
21228
+ const renderImage = React52.useCallback(
21229
+ (feature, imageAlt) => {
21230
+ if (feature.imageSlot) return feature.imageSlot;
21231
+ if (feature.image) {
21232
+ return /* @__PURE__ */ jsxRuntime.jsx(
21233
+ img.Img,
21234
+ {
21235
+ src: feature.image,
21236
+ alt: imageAlt,
21237
+ className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
21238
+ loading: "lazy",
21239
+ optixFlowConfig
21240
+ }
21241
+ );
21242
+ }
21243
+ return null;
21244
+ },
21245
+ [optixFlowConfig]
21246
+ );
20944
21247
  const featuresContent = React52.useMemo(() => {
20945
21248
  if (featuresSlot) return featuresSlot;
20946
21249
  if (!features || features.length === 0) return null;
@@ -20950,16 +21253,56 @@ function FeatureCardGridLinked({
20950
21253
  return /* @__PURE__ */ jsxRuntime.jsxs(
20951
21254
  "div",
20952
21255
  {
20953
- className: cn("flex flex-col justify-between rounded-lg bg-muted", cardClassName, feature.className),
21256
+ className: cn(
21257
+ "flex flex-col justify-between rounded-lg bg-muted border",
21258
+ cardClassName,
21259
+ feature.className
21260
+ ),
20954
21261
  children: [
20955
21262
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-between gap-10 border-b", children: [
20956
21263
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-8 py-6 pl-4 md:gap-14 md:py-10 md:pl-8 lg:justify-normal", children: [
20957
- feature.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
20958
- feature.heading && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) })
21264
+ feature.label && /* @__PURE__ */ jsxRuntime.jsx(
21265
+ "span",
21266
+ {
21267
+ className: cn(
21268
+ "font-bold text-xs uppercase opacity-75",
21269
+ feature.labelClassName
21270
+ ),
21271
+ children: feature.label
21272
+ }
21273
+ ),
21274
+ feature.heading && /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21275
+ "h3",
21276
+ {
21277
+ className: cn(
21278
+ "text-xl transition-all hover:opacity-80 md:text-2xl font-semibold leading-snug tracking-tighter",
21279
+ feature.headingClassName
21280
+ ),
21281
+ children: feature.heading
21282
+ }
21283
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21284
+ "div",
21285
+ {
21286
+ className: cn(
21287
+ "text-xl transition-all hover:opacity-80 md:text-2xl font-semibold leading-snug tracking-tighter",
21288
+ feature.headingClassName
21289
+ ),
21290
+ children: feature.heading
21291
+ }
21292
+ ) })
20959
21293
  ] }),
20960
21294
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
20961
21295
  ] }),
20962
- feature.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
21296
+ feature.description && /* @__PURE__ */ jsxRuntime.jsx(
21297
+ "p",
21298
+ {
21299
+ className: cn(
21300
+ "p-4 text-muted-foreground md:p-8",
21301
+ feature.descriptionClassName
21302
+ ),
21303
+ children: feature.description
21304
+ }
21305
+ )
20963
21306
  ]
20964
21307
  },
20965
21308
  featureKey
@@ -20977,7 +21320,34 @@ function FeatureCardGridLinked({
20977
21320
  className,
20978
21321
  containerClassName,
20979
21322
  children: [
20980
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mb-16 max-w-3xl text-center", titleWrapperClassName), children: typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-4xl font-medium text-pretty lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-4xl font-medium text-pretty lg:text-5xl", titleClassName), children: title }) }),
21323
+ title && /* @__PURE__ */ jsxRuntime.jsx(
21324
+ "div",
21325
+ {
21326
+ className: cn(
21327
+ "mx-auto mb-16 max-w-3xl text-center",
21328
+ titleWrapperClassName
21329
+ ),
21330
+ children: typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21331
+ "h2",
21332
+ {
21333
+ className: cn(
21334
+ "text-4xl font-medium text-pretty lg:text-5xl",
21335
+ titleClassName
21336
+ ),
21337
+ children: title
21338
+ }
21339
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21340
+ "div",
21341
+ {
21342
+ className: cn(
21343
+ "text-4xl font-medium text-pretty lg:text-5xl",
21344
+ titleClassName
21345
+ ),
21346
+ children: title
21347
+ }
21348
+ )
21349
+ }
21350
+ ),
20981
21351
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-8 lg:grid-cols-2", gridClassName), children: featuresContent })
20982
21352
  ]
20983
21353
  }
@@ -21001,27 +21371,45 @@ function FeatureNumberedCards({
21001
21371
  patternOpacity,
21002
21372
  patternClassName
21003
21373
  }) {
21004
- const renderChecklistItems = React52.useCallback((feature) => {
21005
- if (feature.checklistSlot) return feature.checklistSlot;
21006
- if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
21007
- return feature.checklistItems.map((item, itemIndex) => {
21008
- const isString = typeof item === "string";
21009
- const content = isString ? item : item.content;
21010
- const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(
21011
- DynamicIcon,
21012
- {
21013
- name: "lucide/check-circle",
21014
- size: 16,
21015
- className: "mt-0.5 shrink-0 sm:mt-1"
21016
- }
21017
- ) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16, className: "mt-0.5 shrink-0 sm:mt-1" }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle", size: 16, className: "mt-0.5 shrink-0 sm:mt-1" }));
21018
- const itemClassName = isString ? void 0 : item.className;
21019
- return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex gap-x-3", itemClassName), children: [
21020
- iconElement,
21021
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
21022
- ] }, itemIndex);
21023
- });
21024
- }, []);
21374
+ const renderChecklistItems = React52.useCallback(
21375
+ (feature) => {
21376
+ if (feature.checklistSlot) return feature.checklistSlot;
21377
+ if (!feature.checklistItems || feature.checklistItems.length === 0)
21378
+ return null;
21379
+ return feature.checklistItems.map((item, itemIndex) => {
21380
+ const isString = typeof item === "string";
21381
+ const content = isString ? item : item.content;
21382
+ const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(
21383
+ DynamicIcon,
21384
+ {
21385
+ name: "lucide/check-circle",
21386
+ size: 16,
21387
+ className: "mt-0.5 shrink-0 sm:mt-1"
21388
+ }
21389
+ ) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(
21390
+ DynamicIcon,
21391
+ {
21392
+ name: item.iconName,
21393
+ size: 16,
21394
+ className: "mt-0.5 shrink-0 sm:mt-1"
21395
+ }
21396
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21397
+ DynamicIcon,
21398
+ {
21399
+ name: "lucide/check-circle",
21400
+ size: 16,
21401
+ className: "mt-0.5 shrink-0 sm:mt-1"
21402
+ }
21403
+ ));
21404
+ const itemClassName = isString ? void 0 : item.className;
21405
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex gap-x-3", itemClassName), children: [
21406
+ iconElement,
21407
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm md:text-base", children: content })
21408
+ ] }, itemIndex);
21409
+ });
21410
+ },
21411
+ []
21412
+ );
21025
21413
  const featuresContent = React52.useMemo(() => {
21026
21414
  if (featuresSlot) return featuresSlot;
21027
21415
  if (!features || features.length === 0) return null;
@@ -21035,7 +21423,7 @@ function FeatureNumberedCards({
21035
21423
  {
21036
21424
  src: feature.image,
21037
21425
  alt: imageAlt,
21038
- className: "h-full w-full object-cover",
21426
+ className: "h-full w-full object-cover rounded-tr-lg rounded-tl-lg md:rounded-tl-0 rounded-br-0 md:rounded-br-lg",
21039
21427
  loading: "lazy",
21040
21428
  optixFlowConfig
21041
21429
  }
@@ -21043,19 +21431,111 @@ function FeatureNumberedCards({
21043
21431
  }
21044
21432
  return null;
21045
21433
  };
21046
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid rounded-lg border md:grid-cols-2", cardClassName, feature.className), children: [
21047
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col px-6 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20", feature.contentClassName), children: [
21048
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl", titleClassName), children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl", titleClassName), children: feature.title })),
21049
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 text-sm text-muted-foreground sm:mb-10 md:text-base", descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-8 text-sm text-muted-foreground sm:mb-10 md:text-base", descriptionClassName), children: feature.description })),
21050
- feature.checklistItems && feature.checklistItems.length > 0 || feature.checklistSlot ? /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-auto space-y-2 sm:space-y-3", checklistClassName), children: renderChecklistItems(feature) }) : null
21051
- ] }),
21052
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative order-first max-h-80 md:order-last md:max-h-[500px]", feature.imageWrapperClassName), children: [
21053
- renderImage(),
21054
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("absolute top-5 left-5 flex size-6 items-center justify-center rounded-sm bg-primary font-mono text-xs text-primary-foreground md:top-10 md:left-10", badgeClassName), children: String(index + 1).padStart(2, "0") })
21055
- ] })
21056
- ] }, index);
21434
+ return /* @__PURE__ */ jsxRuntime.jsxs(
21435
+ "div",
21436
+ {
21437
+ className: cn(
21438
+ "grid rounded-lg border md:grid-cols-2",
21439
+ cardClassName,
21440
+ feature.className
21441
+ ),
21442
+ children: [
21443
+ /* @__PURE__ */ jsxRuntime.jsxs(
21444
+ "div",
21445
+ {
21446
+ className: cn(
21447
+ "flex flex-col px-6 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20",
21448
+ feature.contentClassName
21449
+ ),
21450
+ children: [
21451
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21452
+ "h3",
21453
+ {
21454
+ className: cn(
21455
+ "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl",
21456
+ titleClassName
21457
+ ),
21458
+ children: feature.title
21459
+ }
21460
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21461
+ "div",
21462
+ {
21463
+ className: cn(
21464
+ "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl lg:text-4xl",
21465
+ titleClassName
21466
+ ),
21467
+ children: feature.title
21468
+ }
21469
+ )),
21470
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21471
+ "div",
21472
+ {
21473
+ className: cn(
21474
+ "mb-8 text-sm sm:mb-10 md:text-base",
21475
+ descriptionClassName
21476
+ ),
21477
+ children: feature.description
21478
+ }
21479
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21480
+ "div",
21481
+ {
21482
+ className: cn(
21483
+ "mb-8 text-sm sm:mb-10 md:text-base",
21484
+ descriptionClassName
21485
+ ),
21486
+ children: feature.description
21487
+ }
21488
+ )),
21489
+ feature.checklistItems && feature.checklistItems.length > 0 || feature.checklistSlot ? /* @__PURE__ */ jsxRuntime.jsx(
21490
+ "ul",
21491
+ {
21492
+ className: cn(
21493
+ "mt-auto space-y-2 sm:space-y-3",
21494
+ checklistClassName
21495
+ ),
21496
+ children: renderChecklistItems(feature)
21497
+ }
21498
+ ) : null
21499
+ ]
21500
+ }
21501
+ ),
21502
+ /* @__PURE__ */ jsxRuntime.jsxs(
21503
+ "div",
21504
+ {
21505
+ className: cn(
21506
+ "relative order-first max-h-80 md:order-last md:max-h-[500px]",
21507
+ feature.imageWrapperClassName
21508
+ ),
21509
+ children: [
21510
+ renderImage(),
21511
+ /* @__PURE__ */ jsxRuntime.jsx(
21512
+ "span",
21513
+ {
21514
+ className: cn(
21515
+ "absolute top-5 left-5 flex size-6 items-center justify-center rounded-sm bg-primary font-mono text-xs text-primary-foreground md:top-10 md:left-10",
21516
+ badgeClassName
21517
+ ),
21518
+ children: String(index + 1).padStart(2, "0")
21519
+ }
21520
+ )
21521
+ ]
21522
+ }
21523
+ )
21524
+ ]
21525
+ },
21526
+ index
21527
+ );
21057
21528
  });
21058
- }, [featuresSlot, features, cardClassName, titleClassName, descriptionClassName, checklistClassName, badgeClassName, optixFlowConfig]);
21529
+ }, [
21530
+ featuresSlot,
21531
+ features,
21532
+ cardClassName,
21533
+ titleClassName,
21534
+ descriptionClassName,
21535
+ checklistClassName,
21536
+ badgeClassName,
21537
+ optixFlowConfig
21538
+ ]);
21059
21539
  return /* @__PURE__ */ jsxRuntime.jsx(
21060
21540
  Section,
21061
21541
  {
@@ -21066,7 +21546,16 @@ function FeatureNumberedCards({
21066
21546
  patternClassName,
21067
21547
  className,
21068
21548
  containerClassName,
21069
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-10 rounded-lg border py-10 md:px-4", cardsWrapperClassName), children: featuresContent })
21549
+ children: /* @__PURE__ */ jsxRuntime.jsx(
21550
+ "div",
21551
+ {
21552
+ className: cn(
21553
+ "space-y-4 md:space-y-10 rounded-lg border-none md:border md:bg-background p-0 md:p-10",
21554
+ cardsWrapperClassName
21555
+ ),
21556
+ children: featuresContent
21557
+ }
21558
+ )
21070
21559
  }
21071
21560
  );
21072
21561
  }
@@ -21099,12 +21588,21 @@ function FeatureIconGridAccent({
21099
21588
  "div",
21100
21589
  {
21101
21590
  className: cn(
21102
- "flex flex-col justify-between rounded-lg bg-accent p-6 md:min-h-[300px] md:p-8",
21591
+ "flex flex-col justify-between rounded-lg p-6 md:min-h-[300px] md:p-8",
21103
21592
  cardClassName,
21104
21593
  feature.className
21105
21594
  ),
21106
21595
  children: [
21107
- iconElement && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-6 flex size-11 items-center justify-center rounded-full bg-background", feature.iconClassName), children: iconElement }),
21596
+ iconElement && /* @__PURE__ */ jsxRuntime.jsx(
21597
+ "span",
21598
+ {
21599
+ className: cn(
21600
+ "mb-6 flex size-11 items-center justify-center rounded-full",
21601
+ feature.iconClassName
21602
+ ),
21603
+ children: iconElement
21604
+ }
21605
+ ),
21108
21606
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
21109
21607
  feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-medium md:text-2xl", children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-lg font-medium md:text-2xl", children: feature.title })),
21110
21608
  feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-muted-foreground", children: feature.description }))
@@ -21126,12 +21624,45 @@ function FeatureIconGridAccent({
21126
21624
  className,
21127
21625
  containerClassName,
21128
21626
  children: [
21129
- (label || title || description) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
21130
- label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: labelClassName, children: label })),
21131
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
21132
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
21133
- ] }) }),
21134
- featuresContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
21627
+ (label || title || description) && /* @__PURE__ */ jsxRuntime.jsx(
21628
+ "div",
21629
+ {
21630
+ className: cn("flex w-full flex-col items-center", headerClassName),
21631
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
21632
+ label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: labelClassName, children: label })),
21633
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21634
+ "h2",
21635
+ {
21636
+ className: cn(
21637
+ "text-3xl font-medium md:text-5xl text-balance",
21638
+ titleClassName
21639
+ ),
21640
+ children: title
21641
+ }
21642
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
21643
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21644
+ "p",
21645
+ {
21646
+ className: cn(
21647
+ "md:max-w-2xl text-balance",
21648
+ descriptionClassName
21649
+ ),
21650
+ children: description
21651
+ }
21652
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
21653
+ ] })
21654
+ }
21655
+ ),
21656
+ featuresContent && /* @__PURE__ */ jsxRuntime.jsx(
21657
+ "div",
21658
+ {
21659
+ className: cn(
21660
+ "mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2",
21661
+ gridClassName
21662
+ ),
21663
+ children: featuresContent
21664
+ }
21665
+ )
21135
21666
  ]
21136
21667
  }
21137
21668
  );
@@ -21148,24 +21679,78 @@ function FeatureThreeColumnValues({
21148
21679
  gridClassName,
21149
21680
  cardClassName,
21150
21681
  background,
21151
- spacing,
21682
+ spacing = "py-6 md:py-32",
21152
21683
  pattern,
21153
21684
  patternOpacity,
21154
21685
  patternClassName
21155
21686
  }) {
21156
- const renderValueIcon = React52__namespace.useCallback((value) => {
21157
- if (value.icon) return value.icon;
21158
- if (value.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
21159
- return null;
21160
- }, []);
21687
+ const renderValueIcon = React52__namespace.useCallback(
21688
+ (value) => {
21689
+ if (value.icon) return value.icon;
21690
+ if (value.iconName)
21691
+ return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
21692
+ return null;
21693
+ },
21694
+ []
21695
+ );
21161
21696
  const valuesContent = React52.useMemo(() => {
21162
21697
  if (valuesSlot) return valuesSlot;
21163
21698
  if (!values || values.length === 0) return null;
21164
- return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
21165
- (value.icon || value.iconName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
21166
- value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title })),
21167
- value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }))
21168
- ] }, index));
21699
+ return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs(
21700
+ "div",
21701
+ {
21702
+ className: cn(
21703
+ "rounded-lg bg-accent p-5",
21704
+ cardClassName,
21705
+ value.className
21706
+ ),
21707
+ children: [
21708
+ (value.icon || value.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
21709
+ "span",
21710
+ {
21711
+ className: cn(
21712
+ "mb-8 flex size-12 items-center justify-center rounded-full bg-background",
21713
+ value.iconClassName
21714
+ ),
21715
+ children: renderValueIcon(value)
21716
+ }
21717
+ ),
21718
+ value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21719
+ "h3",
21720
+ {
21721
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
21722
+ children: value.title
21723
+ }
21724
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21725
+ "div",
21726
+ {
21727
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
21728
+ children: value.title
21729
+ }
21730
+ )),
21731
+ value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21732
+ "p",
21733
+ {
21734
+ className: cn(
21735
+ "leading-7 text-muted-foreground",
21736
+ value.descriptionClassName
21737
+ ),
21738
+ children: value.description
21739
+ }
21740
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21741
+ "div",
21742
+ {
21743
+ className: cn(
21744
+ "leading-7 text-muted-foreground",
21745
+ value.descriptionClassName
21746
+ ),
21747
+ children: value.description
21748
+ }
21749
+ ))
21750
+ ]
21751
+ },
21752
+ index
21753
+ ));
21169
21754
  }, [valuesSlot, values, cardClassName, renderValueIcon]);
21170
21755
  return /* @__PURE__ */ jsxRuntime.jsxs(
21171
21756
  Section,
@@ -21178,9 +21763,48 @@ function FeatureThreeColumnValues({
21178
21763
  className,
21179
21764
  containerClassName,
21180
21765
  children: [
21181
- label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label })),
21182
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
21183
- (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
21766
+ label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21767
+ "p",
21768
+ {
21769
+ className: cn(
21770
+ "mb-4 text-sm text-muted-foreground lg:text-base",
21771
+ labelClassName
21772
+ ),
21773
+ children: label
21774
+ }
21775
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21776
+ "div",
21777
+ {
21778
+ className: cn(
21779
+ "mb-4 text-sm text-muted-foreground lg:text-base",
21780
+ labelClassName
21781
+ ),
21782
+ children: label
21783
+ }
21784
+ )),
21785
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
21786
+ "h2",
21787
+ {
21788
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
21789
+ children: title
21790
+ }
21791
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
21792
+ "div",
21793
+ {
21794
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
21795
+ children: title
21796
+ }
21797
+ )),
21798
+ (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
21799
+ "div",
21800
+ {
21801
+ className: cn(
21802
+ "mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3",
21803
+ gridClassName
21804
+ ),
21805
+ children: valuesContent
21806
+ }
21807
+ )
21184
21808
  ]
21185
21809
  }
21186
21810
  );
@@ -21236,7 +21860,7 @@ function FeatureBadgeGridSix({
21236
21860
  {
21237
21861
  className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
21238
21862
  children: [
21239
- iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: iconContent }),
21863
+ iconContent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground md:size-12", children: iconContent }),
21240
21864
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
21241
21865
  feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
21242
21866
  feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
@@ -21449,31 +22073,57 @@ function FeatureTabbedContentImage({
21449
22073
  contentGridClassName,
21450
22074
  optixFlowConfig,
21451
22075
  background,
21452
- spacing,
22076
+ spacing = "py-6 md:py-32",
21453
22077
  pattern,
21454
22078
  patternOpacity,
21455
22079
  patternClassName
21456
22080
  }) {
21457
- const renderFeatures = React52__namespace.useCallback((slide) => {
21458
- if (slide.featuresSlot) return slide.featuresSlot;
21459
- if (!slide.features || slide.features.length === 0) return null;
21460
- return slide.features.map((feature, index) => {
21461
- const isString = typeof feature === "string";
21462
- const content = isString ? feature : feature.content;
21463
- const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }) : feature.icon ?? (feature.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }));
21464
- const itemClassName = isString ? void 0 : feature.className;
21465
- return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-center gap-2", itemClassName), children: [
21466
- iconElement,
21467
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: content })
21468
- ] }, index);
21469
- });
21470
- }, []);
21471
- const renderActions = React52__namespace.useCallback((slide) => {
21472
- if (slide.actionsSlot) return slide.actionsSlot;
21473
- if (!slide.actions || slide.actions.length === 0) return null;
21474
- return slide.actions.map((action, index) => {
21475
- if (action.children) {
21476
- return /* @__PURE__ */ jsxRuntime.jsx(
22081
+ const renderFeatures = React52__namespace.useCallback(
22082
+ (slide) => {
22083
+ if (slide.featuresSlot) return slide.featuresSlot;
22084
+ if (!slide.features || slide.features.length === 0) return null;
22085
+ return slide.features.map((feature, index) => {
22086
+ const isString = typeof feature === "string";
22087
+ const content = isString ? feature : feature.content;
22088
+ const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }) : feature.icon ?? (feature.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: feature.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check-circle-2", size: 16 }));
22089
+ const itemClassName = isString ? void 0 : feature.className;
22090
+ return /* @__PURE__ */ jsxRuntime.jsxs(
22091
+ "li",
22092
+ {
22093
+ className: cn("flex items-center gap-2", itemClassName),
22094
+ children: [
22095
+ iconElement,
22096
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: content })
22097
+ ]
22098
+ },
22099
+ index
22100
+ );
22101
+ });
22102
+ },
22103
+ []
22104
+ );
22105
+ const renderActions = React52__namespace.useCallback(
22106
+ (slide) => {
22107
+ if (slide.actionsSlot) return slide.actionsSlot;
22108
+ if (!slide.actions || slide.actions.length === 0) return null;
22109
+ return slide.actions.map((action, index) => {
22110
+ if (action.children) {
22111
+ return /* @__PURE__ */ jsxRuntime.jsx(
22112
+ Pressable,
22113
+ {
22114
+ href: action.href,
22115
+ onClick: action.onClick,
22116
+ variant: action.variant,
22117
+ size: action.size,
22118
+ className: cn("mt-8", action.className),
22119
+ "aria-label": action["aria-label"],
22120
+ asButton: true,
22121
+ children: action.children
22122
+ },
22123
+ index
22124
+ );
22125
+ }
22126
+ return /* @__PURE__ */ jsxRuntime.jsxs(
21477
22127
  Pressable,
21478
22128
  {
21479
22129
  href: action.href,
@@ -21483,46 +22133,39 @@ function FeatureTabbedContentImage({
21483
22133
  className: cn("mt-8", action.className),
21484
22134
  "aria-label": action["aria-label"],
21485
22135
  asButton: true,
21486
- children: action.children
22136
+ children: [
22137
+ action.icon,
22138
+ action.label,
22139
+ action.iconAfter
22140
+ ]
21487
22141
  },
21488
22142
  index
21489
22143
  );
21490
- }
21491
- return /* @__PURE__ */ jsxRuntime.jsxs(
21492
- Pressable,
22144
+ });
22145
+ },
22146
+ []
22147
+ );
22148
+ const renderImage = React52__namespace.useCallback(
22149
+ (slide) => {
22150
+ if (slide.imageSlot) return slide.imageSlot;
22151
+ if (!slide.image) return null;
22152
+ const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
22153
+ return /* @__PURE__ */ jsxRuntime.jsx(
22154
+ img.Img,
21493
22155
  {
21494
- href: action.href,
21495
- onClick: action.onClick,
21496
- variant: action.variant,
21497
- size: action.size,
21498
- className: cn("mt-8", action.className),
21499
- "aria-label": action["aria-label"],
21500
- asButton: true,
21501
- children: [
21502
- action.icon,
21503
- action.label,
21504
- action.iconAfter
21505
- ]
21506
- },
21507
- index
22156
+ src: slide.image,
22157
+ alt: imageAlt,
22158
+ className: cn(
22159
+ "order-first max-h-[400px] w-full rounded-lg object-cover md:order-last",
22160
+ slide.imageClassName
22161
+ ),
22162
+ loading: "lazy",
22163
+ optixFlowConfig
22164
+ }
21508
22165
  );
21509
- });
21510
- }, []);
21511
- const renderImage = React52__namespace.useCallback((slide) => {
21512
- if (slide.imageSlot) return slide.imageSlot;
21513
- if (!slide.image) return null;
21514
- const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
21515
- return /* @__PURE__ */ jsxRuntime.jsx(
21516
- img.Img,
21517
- {
21518
- src: slide.image,
21519
- alt: imageAlt,
21520
- className: cn("order-first max-h-[400px] w-full rounded-lg object-cover md:order-last", slide.imageClassName),
21521
- loading: "lazy",
21522
- optixFlowConfig
21523
- }
21524
- );
21525
- }, [optixFlowConfig]);
22166
+ },
22167
+ [optixFlowConfig]
22168
+ );
21526
22169
  const slidesContent = React52.useMemo(() => {
21527
22170
  if (slidesSlot) return slidesSlot;
21528
22171
  if (!slides || slides.length === 0) return null;
@@ -21531,7 +22174,10 @@ function FeatureTabbedContentImage({
21531
22174
  TabsTrigger,
21532
22175
  {
21533
22176
  value: slide.id.toString(),
21534
- className: cn("text-sm hover:bg-background md:text-base", tabTriggerClassName),
22177
+ className: cn(
22178
+ "text-sm hover:bg-background md:text-base",
22179
+ tabTriggerClassName
22180
+ ),
21535
22181
  children: slide.tabName
21536
22182
  },
21537
22183
  slide.id
@@ -21541,20 +22187,85 @@ function FeatureTabbedContentImage({
21541
22187
  {
21542
22188
  value: slide.id.toString(),
21543
22189
  className: cn("max-w-5xl", tabContentClassName),
21544
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid grid-cols-1 items-center gap-10 md:grid-cols-2", contentGridClassName, slide.className), children: [
21545
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
21546
- slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("mb-4 text-2xl font-semibold lg:text-4xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-2xl font-semibold lg:text-4xl", slide.titleClassName), children: slide.title })),
21547
- slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-xl", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-xl", slide.descriptionClassName), children: slide.description })),
21548
- slide.features && slide.features.length > 0 || slide.featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("mt-8 grid grid-cols-1 gap-2 lg:grid-cols-2", slide.featuresClassName), children: renderFeatures(slide) }) : null,
21549
- renderActions(slide)
21550
- ] }),
21551
- renderImage(slide)
21552
- ] })
22190
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
22191
+ "div",
22192
+ {
22193
+ className: cn(
22194
+ "grid grid-cols-1 items-center gap-10 md:grid-cols-2",
22195
+ contentGridClassName,
22196
+ slide.className
22197
+ ),
22198
+ children: [
22199
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
22200
+ slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22201
+ "h2",
22202
+ {
22203
+ className: cn(
22204
+ "mb-4 text-2xl font-semibold lg:text-4xl",
22205
+ slide.titleClassName
22206
+ ),
22207
+ children: slide.title
22208
+ }
22209
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22210
+ "div",
22211
+ {
22212
+ className: cn(
22213
+ "mb-4 text-2xl font-semibold lg:text-4xl",
22214
+ slide.titleClassName
22215
+ ),
22216
+ children: slide.title
22217
+ }
22218
+ )),
22219
+ slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22220
+ "p",
22221
+ {
22222
+ className: cn(
22223
+ "text-muted-foreground lg:text-xl",
22224
+ slide.descriptionClassName
22225
+ ),
22226
+ children: slide.description
22227
+ }
22228
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22229
+ "div",
22230
+ {
22231
+ className: cn(
22232
+ "text-muted-foreground lg:text-xl",
22233
+ slide.descriptionClassName
22234
+ ),
22235
+ children: slide.description
22236
+ }
22237
+ )),
22238
+ slide.features && slide.features.length > 0 || slide.featuresSlot ? /* @__PURE__ */ jsxRuntime.jsx(
22239
+ "ul",
22240
+ {
22241
+ className: cn(
22242
+ "mt-8 grid grid-cols-1 gap-2 lg:grid-cols-2",
22243
+ slide.featuresClassName
22244
+ ),
22245
+ children: renderFeatures(slide)
22246
+ }
22247
+ ) : null,
22248
+ renderActions(slide)
22249
+ ] }),
22250
+ renderImage(slide)
22251
+ ]
22252
+ }
22253
+ )
21553
22254
  },
21554
22255
  slide.id
21555
22256
  ))
21556
22257
  ] });
21557
- }, [slidesSlot, slides, tabsListClassName, tabTriggerClassName, tabContentClassName, contentGridClassName, renderFeatures, renderActions, renderImage]);
22258
+ }, [
22259
+ slidesSlot,
22260
+ slides,
22261
+ tabsListClassName,
22262
+ tabTriggerClassName,
22263
+ tabContentClassName,
22264
+ contentGridClassName,
22265
+ renderFeatures,
22266
+ renderActions,
22267
+ renderImage
22268
+ ]);
21558
22269
  const effectiveDefaultTab = React52.useMemo(() => {
21559
22270
  if (defaultTab) return defaultTab;
21560
22271
  if (slides && slides.length > 0) return slides[0].id.toString();
@@ -21571,15 +22282,63 @@ function FeatureTabbedContentImage({
21571
22282
  className,
21572
22283
  containerClassName,
21573
22284
  children: [
21574
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto flex max-w-3xl flex-col items-center gap-6", headerClassName), children: [
21575
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
21576
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }))
21577
- ] }),
22285
+ /* @__PURE__ */ jsxRuntime.jsxs(
22286
+ "div",
22287
+ {
22288
+ className: cn(
22289
+ "mx-auto flex max-w-3xl flex-col items-center gap-6",
22290
+ headerClassName
22291
+ ),
22292
+ children: [
22293
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22294
+ "h2",
22295
+ {
22296
+ className: cn(
22297
+ "text-center text-3xl font-semibold lg:text-5xl",
22298
+ titleClassName
22299
+ ),
22300
+ children: title
22301
+ }
22302
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22303
+ "div",
22304
+ {
22305
+ className: cn(
22306
+ "text-center text-3xl font-semibold lg:text-5xl",
22307
+ titleClassName
22308
+ ),
22309
+ children: title
22310
+ }
22311
+ )),
22312
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22313
+ "p",
22314
+ {
22315
+ className: cn(
22316
+ "text-center text-balance text-muted-foreground lg:text-xl",
22317
+ descriptionClassName
22318
+ ),
22319
+ children: description
22320
+ }
22321
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22322
+ "div",
22323
+ {
22324
+ className: cn(
22325
+ "text-center text-balance text-muted-foreground lg:text-xl",
22326
+ descriptionClassName
22327
+ ),
22328
+ children: description
22329
+ }
22330
+ ))
22331
+ ]
22332
+ }
22333
+ ),
21578
22334
  (slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
21579
22335
  Tabs,
21580
22336
  {
21581
22337
  defaultValue: effectiveDefaultTab,
21582
- className: cn("mx-auto flex w-fit flex-col items-center gap-8 md:gap-12", tabsClassName),
22338
+ className: cn(
22339
+ "mx-auto flex w-fit flex-col items-center gap-8 md:gap-12",
22340
+ tabsClassName
22341
+ ),
21583
22342
  children: slidesContent
21584
22343
  }
21585
22344
  ) })
@@ -21892,7 +22651,7 @@ function FeatureChecklistThreeColumn({
21892
22651
  Badge,
21893
22652
  {
21894
22653
  variant: "outline",
21895
- className: cn("absolute top-5 left-5 bg-primary-foreground", card.badgeClassName),
22654
+ className: cn("absolute top-5 left-5 bg-background", card.badgeClassName),
21896
22655
  children: card.badge
21897
22656
  }
21898
22657
  )
@@ -22060,7 +22819,7 @@ function FeatureIconTabsContent({
22060
22819
  tabContentClassName,
22061
22820
  optixFlowConfig,
22062
22821
  background,
22063
- spacing,
22822
+ spacing = "py-6 md:py-32",
22064
22823
  pattern,
22065
22824
  patternOpacity,
22066
22825
  patternClassName
@@ -22070,12 +22829,28 @@ function FeatureIconTabsContent({
22070
22829
  if (tab.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: tab.iconName, size: 16 });
22071
22830
  return null;
22072
22831
  }, []);
22073
- const renderTabContentActions = React52.useCallback((content) => {
22074
- if (content.actionsSlot) return content.actionsSlot;
22075
- if (!content.actions || content.actions.length === 0) return null;
22076
- return content.actions.map((action, index) => {
22077
- if (action.children) {
22078
- return /* @__PURE__ */ jsxRuntime.jsx(
22832
+ const renderTabContentActions = React52.useCallback(
22833
+ (content) => {
22834
+ if (content.actionsSlot) return content.actionsSlot;
22835
+ if (!content.actions || content.actions.length === 0) return null;
22836
+ return content.actions.map((action, index) => {
22837
+ if (action.children) {
22838
+ return /* @__PURE__ */ jsxRuntime.jsx(
22839
+ Pressable,
22840
+ {
22841
+ href: action.href,
22842
+ onClick: action.onClick,
22843
+ variant: action.variant,
22844
+ size: action.size,
22845
+ className: cn("mt-2.5 w-fit gap-2", action.className),
22846
+ "aria-label": action["aria-label"],
22847
+ asButton: true,
22848
+ children: action.children
22849
+ },
22850
+ index
22851
+ );
22852
+ }
22853
+ return /* @__PURE__ */ jsxRuntime.jsxs(
22079
22854
  Pressable,
22080
22855
  {
22081
22856
  href: action.href,
@@ -22085,106 +22860,223 @@ function FeatureIconTabsContent({
22085
22860
  className: cn("mt-2.5 w-fit gap-2", action.className),
22086
22861
  "aria-label": action["aria-label"],
22087
22862
  asButton: true,
22088
- children: action.children
22863
+ children: [
22864
+ action.icon,
22865
+ action.label,
22866
+ action.iconAfter
22867
+ ]
22089
22868
  },
22090
22869
  index
22091
22870
  );
22871
+ });
22872
+ },
22873
+ []
22874
+ );
22875
+ const renderTabContentImage = React52.useCallback(
22876
+ (content) => {
22877
+ if (content.imageSlot) return content.imageSlot;
22878
+ if (content.imageSrc) {
22879
+ return /* @__PURE__ */ jsxRuntime.jsx(
22880
+ img.Img,
22881
+ {
22882
+ src: content.imageSrc,
22883
+ alt: content.imageAlt || "Tab content image",
22884
+ className: cn(
22885
+ "h-full w-full rounded-xl object-cover",
22886
+ content.imageClassName
22887
+ ),
22888
+ loading: "lazy",
22889
+ optixFlowConfig
22890
+ }
22891
+ );
22092
22892
  }
22093
- return /* @__PURE__ */ jsxRuntime.jsxs(
22094
- Pressable,
22095
- {
22096
- href: action.href,
22097
- onClick: action.onClick,
22098
- variant: action.variant,
22099
- size: action.size,
22100
- className: cn("mt-2.5 w-fit gap-2", action.className),
22101
- "aria-label": action["aria-label"],
22102
- asButton: true,
22103
- children: [
22104
- action.icon,
22105
- action.label,
22106
- action.iconAfter
22107
- ]
22108
- },
22109
- index
22110
- );
22111
- });
22112
- }, []);
22113
- const renderTabContentImage = React52.useCallback((content) => {
22114
- if (content.imageSlot) return content.imageSlot;
22115
- if (content.imageSrc) {
22116
- return /* @__PURE__ */ jsxRuntime.jsx(
22117
- img.Img,
22118
- {
22119
- src: content.imageSrc,
22120
- alt: content.imageAlt || "Tab content image",
22121
- className: cn("h-full w-full rounded-xl object-cover", content.imageClassName),
22122
- loading: "lazy",
22123
- optixFlowConfig
22124
- }
22125
- );
22126
- }
22127
- return null;
22128
- }, [optixFlowConfig]);
22893
+ return null;
22894
+ },
22895
+ [optixFlowConfig]
22896
+ );
22129
22897
  const tabsContent = React52.useMemo(() => {
22130
22898
  if (tabsSlot) return tabsSlot;
22131
22899
  if (!tabs || tabs.length === 0) return null;
22132
22900
  const activeDefaultTab = defaultTab || tabs[0]?.value;
22133
22901
  return /* @__PURE__ */ jsxRuntime.jsxs(Tabs, { defaultValue: activeDefaultTab, className: "mt-8", children: [
22134
- /* @__PURE__ */ jsxRuntime.jsx(TabsList, { className: cn("container flex flex-col items-center justify-center gap-4 bg-transparent sm:flex-row md:gap-10", tabsListClassName), children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
22135
- TabsTrigger,
22902
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "container overflow-x-auto px-4 pb-2 md:px-6", children: /* @__PURE__ */ jsxRuntime.jsx(
22903
+ TabsList,
22136
22904
  {
22137
- value: tab.value,
22138
- className: cn("flex items-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold text-muted-foreground data-[state=active]:bg-muted data-[state=active]:text-primary", tabTriggerClassName, tab.className),
22139
- children: [
22140
- (tab.icon || tab.iconName) && renderTabIcon(tab),
22141
- tab.label
22142
- ]
22143
- },
22144
- tab.value
22145
- )) }),
22146
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto mt-8 max-w-7xl rounded-2xl bg-muted/70 p-6 lg:p-16", contentWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: tabs.map((tab) => {
22147
- if (tab.contentSlot) {
22148
- return /* @__PURE__ */ jsxRuntime.jsx(TabsContent, { value: tab.value, className: tabContentClassName, children: tab.contentSlot }, tab.value);
22905
+ className: cn(
22906
+ "inline-flex w-auto min-w-full items-center justify-start gap-2 bg-transparent md:justify-center md:gap-4",
22907
+ tabsListClassName
22908
+ ),
22909
+ children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
22910
+ TabsTrigger,
22911
+ {
22912
+ value: tab.value,
22913
+ className: cn(
22914
+ "flex shrink-0 items-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground data-[state=active]:border-primary data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",
22915
+ tabTriggerClassName,
22916
+ tab.className
22917
+ ),
22918
+ children: [
22919
+ (tab.icon || tab.iconName) && renderTabIcon(tab),
22920
+ tab.label
22921
+ ]
22922
+ },
22923
+ tab.value
22924
+ ))
22149
22925
  }
22150
- const content = tab.content;
22151
- if (!content) return null;
22152
- return /* @__PURE__ */ jsxRuntime.jsxs(
22153
- TabsContent,
22926
+ ) }),
22927
+ /* @__PURE__ */ jsxRuntime.jsx(
22928
+ "div",
22929
+ {
22930
+ className: cn(
22931
+ "mx-auto mt-8 max-w-7xl rounded-2xl bg-muted/70 p-6 lg:p-16",
22932
+ contentWrapperClassName
22933
+ ),
22934
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: tabs.map((tab) => {
22935
+ if (tab.contentSlot) {
22936
+ return /* @__PURE__ */ jsxRuntime.jsx(
22937
+ TabsContent,
22938
+ {
22939
+ value: tab.value,
22940
+ className: tabContentClassName,
22941
+ children: tab.contentSlot
22942
+ },
22943
+ tab.value
22944
+ );
22945
+ }
22946
+ const content = tab.content;
22947
+ if (!content) return null;
22948
+ return /* @__PURE__ */ jsxRuntime.jsxs(
22949
+ TabsContent,
22950
+ {
22951
+ value: tab.value,
22952
+ className: cn(
22953
+ "grid place-items-start gap-20 lg:grid-cols-2 lg:gap-10",
22954
+ tabContentClassName,
22955
+ content.className
22956
+ ),
22957
+ children: [
22958
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
22959
+ content.badge && /* @__PURE__ */ jsxRuntime.jsx(
22960
+ Badge,
22961
+ {
22962
+ variant: "outline",
22963
+ className: cn(
22964
+ "w-fit bg-background",
22965
+ content.badgeClassName
22966
+ ),
22967
+ children: content.badge
22968
+ }
22969
+ ),
22970
+ content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22971
+ "h3",
22972
+ {
22973
+ className: cn(
22974
+ "text-3xl font-semibold lg:text-5xl",
22975
+ content.titleClassName
22976
+ ),
22977
+ children: content.title
22978
+ }
22979
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22980
+ "div",
22981
+ {
22982
+ className: cn(
22983
+ "text-3xl font-semibold lg:text-5xl",
22984
+ content.titleClassName
22985
+ ),
22986
+ children: content.title
22987
+ }
22988
+ )),
22989
+ content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
22990
+ "p",
22991
+ {
22992
+ className: cn(
22993
+ "text-muted-foreground lg:text-lg",
22994
+ content.descriptionClassName
22995
+ ),
22996
+ children: content.description
22997
+ }
22998
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
22999
+ "div",
23000
+ {
23001
+ className: cn(
23002
+ "text-muted-foreground lg:text-lg",
23003
+ content.descriptionClassName
23004
+ ),
23005
+ children: content.description
23006
+ }
23007
+ )),
23008
+ (content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
23009
+ ] }),
23010
+ (content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
23011
+ ]
23012
+ },
23013
+ tab.value
23014
+ );
23015
+ }) })
23016
+ }
23017
+ )
23018
+ ] });
23019
+ }, [
23020
+ tabsSlot,
23021
+ tabs,
23022
+ defaultTab,
23023
+ tabsListClassName,
23024
+ tabTriggerClassName,
23025
+ contentWrapperClassName,
23026
+ tabContentClassName,
23027
+ renderTabIcon,
23028
+ renderTabContentActions,
23029
+ renderTabContentImage
23030
+ ]);
23031
+ return /* @__PURE__ */ jsxRuntime.jsxs(
23032
+ Section,
23033
+ {
23034
+ background,
23035
+ spacing,
23036
+ pattern,
23037
+ patternOpacity,
23038
+ patternClassName,
23039
+ className,
23040
+ containerClassName: cn("mx-auto", containerClassName),
23041
+ children: [
23042
+ (badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs(
23043
+ "div",
22154
23044
  {
22155
- value: tab.value,
22156
- className: cn("grid place-items-start gap-20 lg:grid-cols-2 lg:gap-10", tabContentClassName, content.className),
23045
+ className: cn(
23046
+ "flex flex-col items-center gap-4 text-center",
23047
+ headerClassName
23048
+ ),
22157
23049
  children: [
22158
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
22159
- content.badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
22160
- content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title })),
22161
- content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description })),
22162
- (content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
22163
- ] }),
22164
- (content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
23050
+ badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
23051
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
23052
+ "h1",
23053
+ {
23054
+ className: cn(
23055
+ "max-w-2xl text-3xl font-semibold md:text-4xl",
23056
+ headingClassName
23057
+ ),
23058
+ children: heading
23059
+ }
23060
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
23061
+ "div",
23062
+ {
23063
+ className: cn(
23064
+ "max-w-2xl text-3xl font-semibold md:text-4xl",
23065
+ headingClassName
23066
+ ),
23067
+ children: heading
23068
+ }
23069
+ )),
23070
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
23071
+ "div",
23072
+ {
23073
+ className: cn("text-muted-foreground", descriptionClassName),
23074
+ children: description
23075
+ }
23076
+ ))
22165
23077
  ]
22166
- },
22167
- tab.value
22168
- );
22169
- }) }) })
22170
- ] });
22171
- }, [tabsSlot, tabs, defaultTab, tabsListClassName, tabTriggerClassName, contentWrapperClassName, tabContentClassName, renderTabIcon, renderTabContentActions, renderTabContentImage]);
22172
- return /* @__PURE__ */ jsxRuntime.jsxs(
22173
- Section,
22174
- {
22175
- background,
22176
- spacing,
22177
- pattern,
22178
- patternOpacity,
22179
- patternClassName,
22180
- className,
22181
- containerClassName: cn("mx-auto", containerClassName),
22182
- children: [
22183
- (badge || heading || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
22184
- badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
22185
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
22186
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
22187
- ] }),
23078
+ }
23079
+ ),
22188
23080
  tabsContent
22189
23081
  ]
22190
23082
  }
@@ -22265,7 +23157,7 @@ function FeatureImageOverlayBadge({
22265
23157
  overlayTitleClassName,
22266
23158
  optixFlowConfig,
22267
23159
  background,
22268
- spacing,
23160
+ spacing = "py-6 md:py-32",
22269
23161
  pattern,
22270
23162
  patternOpacity,
22271
23163
  patternClassName
@@ -22318,7 +23210,10 @@ function FeatureImageOverlayBadge({
22318
23210
  {
22319
23211
  src: imageSrc,
22320
23212
  alt: imageAlt || "Feature illustration",
22321
- className: cn("rounded-xl object-cover md:aspect-video lg:aspect-auto", imageClassName),
23213
+ className: cn(
23214
+ "rounded-2xl object-cover md:aspect-video lg:aspect-auto w-full h-auto",
23215
+ imageClassName
23216
+ ),
22322
23217
  loading: "lazy",
22323
23218
  optixFlowConfig
22324
23219
  }
@@ -22336,41 +23231,111 @@ function FeatureImageOverlayBadge({
22336
23231
  patternClassName,
22337
23232
  className,
22338
23233
  containerClassName,
22339
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid place-items-center gap-10 lg:grid-cols-2", gridClassName), children: [
22340
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
22341
- badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", badgeClassName), children: badge }),
22342
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
22343
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
22344
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actionsContent })
22345
- ] }),
22346
- imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
22347
- imageContent,
22348
- (avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
22349
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute top-0 right-0 bottom-0 left-0 rounded-xl bg-linear-to-t from-primary via-transparent to-transparent", overlayClassName) }),
22350
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22351
- (avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm", avatarBadgeClassName), children: [
22352
- avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
22353
- avatarBadgeText
22354
- ] }),
22355
- (overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
22356
- overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
22357
- overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
22358
- Pressable,
23234
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
23235
+ "div",
23236
+ {
23237
+ className: cn(
23238
+ "grid place-items-center gap-10 lg:grid-cols-2",
23239
+ gridClassName
23240
+ ),
23241
+ children: [
23242
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-5", contentClassName), children: [
23243
+ badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "outline", className: cn("", badgeClassName), children: badge }),
23244
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
23245
+ "h3",
23246
+ {
23247
+ className: cn(
23248
+ "text-3xl font-semibold lg:text-4xl leading-snug text-balance",
23249
+ titleClassName
23250
+ ),
23251
+ children: title
23252
+ }
23253
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
23254
+ "div",
23255
+ {
23256
+ className: cn(
23257
+ "text-3xl font-semibold lg:text-5xl",
23258
+ titleClassName
23259
+ ),
23260
+ children: title
23261
+ }
23262
+ )),
23263
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("lg:text-lg", descriptionClassName), children: description })),
23264
+ /* @__PURE__ */ jsxRuntime.jsx(
23265
+ "div",
23266
+ {
23267
+ className: cn(
23268
+ "flex items-center gap-4 flex-wrap",
23269
+ actionsClassName
23270
+ ),
23271
+ children: actionsContent
23272
+ }
23273
+ )
23274
+ ] }),
23275
+ imageContent && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative rounded-2xl", imageWrapperClassName), children: [
23276
+ imageContent,
23277
+ (avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23278
+ /* @__PURE__ */ jsxRuntime.jsx(
23279
+ "div",
22359
23280
  {
22360
- href: overlayLinkUrl,
22361
- onClick: overlayLinkOnClick,
22362
- className: "flex items-center gap-1 font-medium",
22363
- children: [
22364
- overlayLinkText,
22365
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
22366
- ]
23281
+ className: cn(
23282
+ "absolute top-0 right-0 bottom-0 left-0 rounded-2xl bg-linear-to-t from-black via-black/20 to-transparent",
23283
+ overlayClassName
23284
+ )
22367
23285
  }
22368
- )
23286
+ ),
23287
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between pt-4 pr-4 pl-4 pb-8 md:pt-7 md:bpr-7 md:pl-7 md:pb-7 rounded-2xl", children: [
23288
+ (avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxRuntime.jsxs(
23289
+ "span",
23290
+ {
23291
+ className: cn(
23292
+ "ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm shadow-xl",
23293
+ avatarBadgeClassName
23294
+ ),
23295
+ children: [
23296
+ avatarSrc && /* @__PURE__ */ jsxRuntime.jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
23297
+ avatarBadgeText
23298
+ ]
23299
+ }
23300
+ ),
23301
+ (overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", children: [
23302
+ overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
23303
+ "h4",
23304
+ {
23305
+ className: cn(
23306
+ "text-lg font-semibold lg:text-3xl",
23307
+ overlayTitleClassName
23308
+ ),
23309
+ children: overlayTitle
23310
+ }
23311
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
23312
+ "div",
23313
+ {
23314
+ className: cn(
23315
+ "text-lg font-semibold lg:text-3xl",
23316
+ overlayTitleClassName
23317
+ ),
23318
+ children: overlayTitle
23319
+ }
23320
+ )),
23321
+ overlayLinkText && /* @__PURE__ */ jsxRuntime.jsxs(
23322
+ Pressable,
23323
+ {
23324
+ href: overlayLinkUrl,
23325
+ onClick: overlayLinkOnClick,
23326
+ children: [
23327
+ overlayLinkText,
23328
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-right", size: 18 })
23329
+ ]
23330
+ }
23331
+ )
23332
+ ] })
23333
+ ] })
22369
23334
  ] })
22370
23335
  ] })
22371
- ] })
22372
- ] })
22373
- ] })
23336
+ ]
23337
+ }
23338
+ )
22374
23339
  }
22375
23340
  );
22376
23341
  }
@@ -22814,9 +23779,9 @@ function FeatureStatsHighlight({
22814
23779
  return stats.map((stat, index) => /* @__PURE__ */ jsxRuntime.jsxs(
22815
23780
  "div",
22816
23781
  {
22817
- className: cn("flex flex-col gap-2 rounded-xl border bg-muted/30 p-6", statCardClassName, stat.className),
23782
+ className: cn("flex flex-col gap-2 rounded-xl border bg-card p-6", statCardClassName, stat.className),
22818
23783
  children: [
22819
- stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
23784
+ stat.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-4xl font-bold lg:text-5xl", stat.valueClassName), children: stat.value }),
22820
23785
  stat.label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
22821
23786
  ]
22822
23787
  },
@@ -34789,7 +35754,10 @@ function BlogHorizontalTimelineComponent({
34789
35754
  /* @__PURE__ */ jsxRuntime.jsx(
34790
35755
  Card,
34791
35756
  {
34792
- className: cn("w-full border-none shadow-none", postCardClassName),
35757
+ className: cn(
35758
+ "w-full border-none shadow-none pt-0 pb-6 md:pt-6 md:pb-6",
35759
+ postCardClassName
35760
+ ),
34793
35761
  children: /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "p-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
34794
35762
  "div",
34795
35763
  {
@@ -34804,9 +35772,9 @@ function BlogHorizontalTimelineComponent({
34804
35772
  ] }),
34805
35773
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-start gap-4 md:h-full md:justify-between md:gap-6", children: [
34806
35774
  postDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base leading-relaxed font-normal tracking-tight text-muted-foreground md:text-xl line-clamp-3", children: postDescription }),
34807
- readText && /* @__PURE__ */ jsxRuntime.jsxs(Pressable, { href: postHref, asButton: true, variant: "link", children: [
35775
+ readText && /* @__PURE__ */ jsxRuntime.jsxs(Pressable, { href: postHref, asButton: true, variant: "ghost", children: [
34808
35776
  readText,
34809
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-right", size: 20 })
35777
+ /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 })
34810
35778
  ] })
34811
35779
  ] })
34812
35780
  ]
@@ -34847,7 +35815,7 @@ function BlogHorizontalTimelineComponent({
34847
35815
  children: heading
34848
35816
  }
34849
35817
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-12", headingClassName), children: heading })),
34850
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col", postsClassName), children: renderPosts })
35818
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-0 md:gap-20", postsClassName), children: renderPosts })
34851
35819
  ] })
34852
35820
  }
34853
35821
  );
@@ -35463,7 +36431,7 @@ function ArticleSidebarStickyComponent({
35463
36431
  children,
35464
36432
  optixFlowConfig,
35465
36433
  background,
35466
- spacing,
36434
+ spacing = "py-6 md:py-32",
35467
36435
  pattern,
35468
36436
  patternOpacity
35469
36437
  }) {
@@ -35474,7 +36442,10 @@ function ArticleSidebarStickyComponent({
35474
36442
  Pressable,
35475
36443
  {
35476
36444
  href: backHref,
35477
- className: cn("inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground", backLinkClassName),
36445
+ className: cn(
36446
+ "inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground",
36447
+ backLinkClassName
36448
+ ),
35478
36449
  children: [
35479
36450
  backIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 16 }),
35480
36451
  backText
@@ -35482,21 +36453,38 @@ function ArticleSidebarStickyComponent({
35482
36453
  }
35483
36454
  );
35484
36455
  }, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
35485
- const renderAuthor = React52__namespace.useCallback((isMobile = false) => {
35486
- if (authorSlot) return authorSlot;
35487
- if (!authorName) return null;
35488
- const avatarSize = isMobile ? "h-8 w-8" : "h-10 w-10";
35489
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
35490
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: avatarSize, children: [
35491
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: authorImage }),
35492
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: authorName.charAt(0) })
35493
- ] }),
35494
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
35495
- authorHref ? /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: authorHref, className: "text-sm font-medium hover:underline", children: authorName }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: authorName }),
35496
- publishDate && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: publishDate })
35497
- ] })
35498
- ] });
35499
- }, [authorSlot, authorName, authorImage, authorHref, publishDate, authorClassName]);
36456
+ const renderAuthor = React52__namespace.useCallback(
36457
+ (isMobile = false) => {
36458
+ if (authorSlot) return authorSlot;
36459
+ if (!authorName) return null;
36460
+ const avatarSize = isMobile ? "h-8 w-8" : "h-10 w-10";
36461
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
36462
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: avatarSize, children: [
36463
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: authorImage }),
36464
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: authorName.charAt(0) })
36465
+ ] }),
36466
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
36467
+ authorHref ? /* @__PURE__ */ jsxRuntime.jsx(
36468
+ Pressable,
36469
+ {
36470
+ href: authorHref,
36471
+ className: "text-sm font-medium hover:underline",
36472
+ children: authorName
36473
+ }
36474
+ ) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: authorName }),
36475
+ publishDate && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: publishDate })
36476
+ ] })
36477
+ ] });
36478
+ },
36479
+ [
36480
+ authorSlot,
36481
+ authorName,
36482
+ authorImage,
36483
+ authorHref,
36484
+ publishDate,
36485
+ authorClassName
36486
+ ]
36487
+ );
35500
36488
  const heroMediaContent = React52__namespace.useMemo(() => {
35501
36489
  if (heroMediaSlot) return heroMediaSlot;
35502
36490
  if (!heroImageSrc) return null;
@@ -35505,11 +36493,20 @@ function ArticleSidebarStickyComponent({
35505
36493
  {
35506
36494
  src: heroImageSrc,
35507
36495
  alt: heroImageAlt,
35508
- className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
36496
+ className: cn(
36497
+ "my-8 aspect-video w-full rounded-lg object-cover",
36498
+ heroImageClassName
36499
+ ),
35509
36500
  optixFlowConfig
35510
36501
  }
35511
36502
  );
35512
- }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
36503
+ }, [
36504
+ heroMediaSlot,
36505
+ heroImageSrc,
36506
+ heroImageAlt,
36507
+ heroImageClassName,
36508
+ optixFlowConfig
36509
+ ]);
35513
36510
  return /* @__PURE__ */ jsxRuntime.jsx(
35514
36511
  Section,
35515
36512
  {
@@ -35523,13 +36520,31 @@ function ArticleSidebarStickyComponent({
35523
36520
  backLinkContent,
35524
36521
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: renderAuthor(false) })
35525
36522
  ] }) }),
35526
- /* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
35527
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 lg:hidden", children: backLinkContent }),
35528
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
35529
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-4 lg:hidden", children: renderAuthor(true) }),
35530
- heroMediaContent,
35531
- children
35532
- ] })
36523
+ /* @__PURE__ */ jsxRuntime.jsxs(
36524
+ "article",
36525
+ {
36526
+ className: cn(
36527
+ "prose max-w-none dark:prose-invert",
36528
+ articleClassName
36529
+ ),
36530
+ children: [
36531
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 lg:hidden", children: backLinkContent }),
36532
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
36533
+ "h1",
36534
+ {
36535
+ className: cn(
36536
+ "text-4xl font-bold tracking-tight md:text-5xl",
36537
+ titleClassName
36538
+ ),
36539
+ children: title
36540
+ }
36541
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
36542
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-4 lg:hidden", children: renderAuthor(true) }),
36543
+ heroMediaContent,
36544
+ children
36545
+ ]
36546
+ }
36547
+ )
35533
36548
  ] }) })
35534
36549
  }
35535
36550
  );
@@ -35723,7 +36738,6 @@ function ArticleBreadcrumbSocialComponent({
35723
36738
  authorClassName,
35724
36739
  heroImageClassName,
35725
36740
  tocClassName,
35726
- shareClassName,
35727
36741
  breadcrumbs,
35728
36742
  breadcrumbsSlot,
35729
36743
  currentPage,
@@ -35738,9 +36752,6 @@ function ArticleBreadcrumbSocialComponent({
35738
36752
  sections,
35739
36753
  tocSlot,
35740
36754
  renderSectionLink,
35741
- socialLinks: socialLinksProp,
35742
- shareUrls,
35743
- shareSlot,
35744
36755
  heroImageSrc,
35745
36756
  heroImageAlt,
35746
36757
  heroMediaSlot,
@@ -35749,35 +36760,11 @@ function ArticleBreadcrumbSocialComponent({
35749
36760
  enableBackToTop,
35750
36761
  optixFlowConfig,
35751
36762
  background,
35752
- spacing,
36763
+ spacing = "py-6 md:py-32",
35753
36764
  pattern,
35754
36765
  patternOpacity
35755
36766
  }) {
35756
36767
  const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
35757
- const platformLabels = {
35758
- twitter: "Twitter",
35759
- x: "X",
35760
- facebook: "Facebook",
35761
- linkedin: "LinkedIn",
35762
- instagram: "Instagram",
35763
- github: "GitHub"
35764
- };
35765
- const socialIconMap2 = {
35766
- twitter: "simple-icons/x",
35767
- // Twitter is now X
35768
- x: "simple-icons/x",
35769
- facebook: "simple-icons/facebook",
35770
- linkedin: "simple-icons/linkedin",
35771
- instagram: "simple-icons/instagram",
35772
- github: "simple-icons/github"
35773
- };
35774
- const socialLinks = socialLinksProp ?? (shareUrls ? Object.entries(shareUrls).filter(([, href]) => href).map(([platform, href]) => ({
35775
- platform,
35776
- href,
35777
- icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: socialIconMap2[platform] || `simple-icons/${platform}`, size: 16 }),
35778
- "aria-label": `Share on ${platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1)}`,
35779
- className: void 0
35780
- })) : []);
35781
36768
  const [activeSection, setActiveSection] = React52__namespace.useState(
35782
36769
  sections?.[0]?.id || ""
35783
36770
  );
@@ -35829,16 +36816,25 @@ function ArticleBreadcrumbSocialComponent({
35829
36816
  const authorContent = React52__namespace.useMemo(() => {
35830
36817
  if (authorSlot) return authorSlot;
35831
36818
  if (!author) return null;
35832
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-4 not-prose", authorClassName), children: [
35833
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-12 w-12", children: [
35834
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: author.image }),
35835
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
35836
- ] }),
35837
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
35838
- author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
35839
- (author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
35840
- ] })
35841
- ] });
36819
+ return /* @__PURE__ */ jsxRuntime.jsxs(
36820
+ "div",
36821
+ {
36822
+ className: cn(
36823
+ "mt-6 flex items-center gap-4 not-prose",
36824
+ authorClassName
36825
+ ),
36826
+ children: [
36827
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-12 w-12", children: [
36828
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: author.image }),
36829
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
36830
+ ] }),
36831
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
36832
+ author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
36833
+ (author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
36834
+ ] })
36835
+ ]
36836
+ }
36837
+ );
35842
36838
  }, [authorSlot, author, publishDate, readTime, authorClassName]);
35843
36839
  const heroMediaContent = React52__namespace.useMemo(() => {
35844
36840
  if (heroMediaSlot) return heroMediaSlot;
@@ -35848,11 +36844,20 @@ function ArticleBreadcrumbSocialComponent({
35848
36844
  {
35849
36845
  src: heroImageSrc,
35850
36846
  alt: heroImageAlt,
35851
- className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
36847
+ className: cn(
36848
+ "my-8 aspect-video w-full rounded-lg object-cover",
36849
+ heroImageClassName
36850
+ ),
35852
36851
  optixFlowConfig
35853
36852
  }
35854
36853
  );
35855
- }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
36854
+ }, [
36855
+ heroMediaSlot,
36856
+ heroImageSrc,
36857
+ heroImageAlt,
36858
+ heroImageClassName,
36859
+ optixFlowConfig
36860
+ ]);
35856
36861
  const tocContent = React52__namespace.useMemo(() => {
35857
36862
  if (tocSlot) return tocSlot;
35858
36863
  if (!sections || sections.length === 0) return null;
@@ -35878,26 +36883,6 @@ function ArticleBreadcrumbSocialComponent({
35878
36883
  }) })
35879
36884
  ] });
35880
36885
  }, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
35881
- const shareButtonsContent = React52__namespace.useMemo(() => {
35882
- if (shareSlot) return shareSlot;
35883
- if (!socialLinks || socialLinks.length === 0) return null;
35884
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", shareClassName), children: [
35885
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-semibold", children: "Share this article" }),
35886
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2", children: socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
35887
- Pressable,
35888
- {
35889
- href: link.href,
35890
- className: cn(
35891
- "flex h-9 w-9 items-center justify-center rounded-md border hover:bg-muted",
35892
- link.className
35893
- ),
35894
- "aria-label": link["aria-label"],
35895
- children: link.icon
35896
- },
35897
- index
35898
- )) })
35899
- ] });
35900
- }, [shareSlot, socialLinks, shareClassName]);
35901
36886
  return /* @__PURE__ */ jsxRuntime.jsxs(
35902
36887
  Section,
35903
36888
  {
@@ -35910,18 +36895,32 @@ function ArticleBreadcrumbSocialComponent({
35910
36895
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
35911
36896
  breadcrumbsContent,
35912
36897
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
35913
- children && /* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
35914
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
35915
- authorContent,
35916
- /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
35917
- heroMediaContent,
35918
- children,
35919
- shareButtonsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-8 lg:hidden", children: shareButtonsContent })
35920
- ] }),
35921
- /* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-8 space-y-6", children: [
35922
- tocContent,
35923
- shareButtonsContent
35924
- ] }) })
36898
+ children && /* @__PURE__ */ jsxRuntime.jsxs(
36899
+ "article",
36900
+ {
36901
+ className: cn(
36902
+ "prose max-w-none dark:prose-invert",
36903
+ articleClassName
36904
+ ),
36905
+ children: [
36906
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
36907
+ "h1",
36908
+ {
36909
+ className: cn(
36910
+ "text-4xl font-bold tracking-tight md:text-5xl",
36911
+ titleClassName
36912
+ ),
36913
+ children: title
36914
+ }
36915
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
36916
+ authorContent,
36917
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
36918
+ heroMediaContent,
36919
+ children
36920
+ ]
36921
+ }
36922
+ ),
36923
+ /* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-8 space-y-6", children: tocContent }) })
35925
36924
  ] })
35926
36925
  ] }),
35927
36926
  enableBackToTop && showBackToTop && /* @__PURE__ */ jsxRuntime.jsx(
@@ -35998,7 +36997,7 @@ function ArticleCompactTocComponent({
35998
36997
  enableTocTracking = true,
35999
36998
  optixFlowConfig,
36000
36999
  background,
36001
- spacing,
37000
+ spacing = "py-6 md:py-32",
36002
37001
  pattern,
36003
37002
  patternOpacity
36004
37003
  }) {