@opensite/ui 0.8.4 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) 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-badge-support.cjs +18 -5
  12. package/dist/faq-badge-support.js +18 -5
  13. package/dist/faq-bordered-badge.cjs +23 -7
  14. package/dist/faq-bordered-badge.js +23 -7
  15. package/dist/faq-card-categories.cjs +20 -4
  16. package/dist/faq-card-categories.js +20 -4
  17. package/dist/faq-categorized-sections.cjs +19 -4
  18. package/dist/faq-categorized-sections.js +19 -4
  19. package/dist/faq-centered-accordion.cjs +18 -5
  20. package/dist/faq-centered-accordion.js +18 -5
  21. package/dist/faq-gradient-categories.cjs +19 -4
  22. package/dist/faq-gradient-categories.js +19 -4
  23. package/dist/faq-icon-benefits.cjs +11 -2
  24. package/dist/faq-icon-benefits.js +11 -2
  25. package/dist/faq-muted-cards.cjs +19 -6
  26. package/dist/faq-muted-cards.js +19 -6
  27. package/dist/faq-numbered-grid.cjs +11 -3
  28. package/dist/faq-numbered-grid.js +11 -3
  29. package/dist/faq-numbered-list.cjs +11 -3
  30. package/dist/faq-numbered-list.js +11 -3
  31. package/dist/faq-profile-sidebar.cjs +57 -20
  32. package/dist/faq-profile-sidebar.js +57 -20
  33. package/dist/faq-rounded-cards.cjs +26 -19
  34. package/dist/faq-rounded-cards.js +26 -19
  35. package/dist/faq-sidebar-navigation.cjs +48 -28
  36. package/dist/faq-sidebar-navigation.js +48 -28
  37. package/dist/faq-simple-accordion.cjs +17 -4
  38. package/dist/faq-simple-accordion.js +17 -4
  39. package/dist/faq-split-help.cjs +25 -6
  40. package/dist/faq-split-help.js +25 -6
  41. package/dist/faq-split-hero.cjs +604 -0
  42. package/dist/faq-split-hero.d.cts +116 -0
  43. package/dist/faq-split-hero.d.ts +116 -0
  44. package/dist/faq-split-hero.js +582 -0
  45. package/dist/faq-static-list.cjs +9 -2
  46. package/dist/faq-static-list.js +9 -2
  47. package/dist/feature-accordion-image.cjs +8 -2
  48. package/dist/feature-accordion-image.js +8 -2
  49. package/dist/feature-badge-grid-six.cjs +1 -1
  50. package/dist/feature-badge-grid-six.js +1 -1
  51. package/dist/feature-card-grid-linked.cjs +92 -22
  52. package/dist/feature-card-grid-linked.js +92 -22
  53. package/dist/feature-carousel-progress.cjs +1 -1
  54. package/dist/feature-carousel-progress.js +1 -1
  55. package/dist/feature-checklist-image.cjs +88 -15
  56. package/dist/feature-checklist-image.js +88 -15
  57. package/dist/feature-checklist-three-column.cjs +1 -1
  58. package/dist/feature-checklist-three-column.js +1 -1
  59. package/dist/feature-icon-grid-accent.cjs +50 -8
  60. package/dist/feature-icon-grid-accent.js +50 -8
  61. package/dist/feature-icon-grid-bordered.cjs +84 -14
  62. package/dist/feature-icon-grid-bordered.js +84 -14
  63. package/dist/feature-icon-tabs-content.cjs +217 -84
  64. package/dist/feature-icon-tabs-content.js +217 -84
  65. package/dist/feature-image-overlay-badge.cjs +106 -33
  66. package/dist/feature-image-overlay-badge.js +106 -33
  67. package/dist/feature-numbered-cards.cjs +154 -35
  68. package/dist/feature-numbered-cards.js +154 -35
  69. package/dist/feature-showcase.cjs +66 -71
  70. package/dist/feature-showcase.d.cts +1 -5
  71. package/dist/feature-showcase.d.ts +1 -5
  72. package/dist/feature-showcase.js +67 -72
  73. package/dist/feature-split-image-reverse.cjs +84 -15
  74. package/dist/feature-split-image-reverse.js +84 -15
  75. package/dist/feature-split-image.cjs +87 -15
  76. package/dist/feature-split-image.js +87 -15
  77. package/dist/feature-stats-highlight.cjs +50 -13
  78. package/dist/feature-stats-highlight.js +50 -13
  79. package/dist/feature-tabbed-content-image.cjs +198 -72
  80. package/dist/feature-tabbed-content-image.js +198 -72
  81. package/dist/feature-three-column-values.cjs +67 -14
  82. package/dist/feature-three-column-values.js +67 -14
  83. package/dist/feature-utility-cards-grid.cjs +83 -36
  84. package/dist/feature-utility-cards-grid.js +83 -36
  85. package/dist/navbar-animated-preview.cjs +8 -2
  86. package/dist/navbar-animated-preview.js +8 -2
  87. package/dist/navbar-centered-menu.cjs +8 -2
  88. package/dist/navbar-centered-menu.js +8 -2
  89. package/dist/navbar-dark-icons.cjs +8 -2
  90. package/dist/navbar-dark-icons.js +8 -2
  91. package/dist/navbar-dropdown-menu.cjs +8 -2
  92. package/dist/navbar-dropdown-menu.js +8 -2
  93. package/dist/navbar-education-platform.cjs +8 -2
  94. package/dist/navbar-education-platform.js +8 -2
  95. package/dist/navbar-enterprise-mega.cjs +8 -2
  96. package/dist/navbar-enterprise-mega.js +8 -2
  97. package/dist/navbar-feature-grid.cjs +8 -2
  98. package/dist/navbar-feature-grid.js +8 -2
  99. package/dist/navbar-multi-column-groups.cjs +8 -2
  100. package/dist/navbar-multi-column-groups.js +8 -2
  101. package/dist/navbar-platform-resources.cjs +8 -2
  102. package/dist/navbar-platform-resources.js +8 -2
  103. package/dist/navbar-sidebar-mobile.cjs +8 -2
  104. package/dist/navbar-sidebar-mobile.js +8 -2
  105. package/dist/registry.cjs +1873 -680
  106. package/dist/registry.js +1873 -680
  107. package/package.json +1 -1
@@ -522,24 +522,56 @@ function FeatureThreeColumnValues({
522
522
  gridClassName,
523
523
  cardClassName,
524
524
  background,
525
- spacing,
525
+ spacing = "py-6 md:py-32",
526
526
  pattern,
527
527
  patternOpacity,
528
528
  patternClassName
529
529
  }) {
530
- const renderValueIcon = React__namespace.useCallback((value) => {
531
- if (value.icon) return value.icon;
532
- if (value.iconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
533
- return null;
534
- }, []);
530
+ const renderValueIcon = React__namespace.useCallback(
531
+ (value) => {
532
+ if (value.icon) return value.icon;
533
+ if (value.iconName)
534
+ return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: value.iconName, size: 24 });
535
+ return null;
536
+ },
537
+ []
538
+ );
535
539
  const valuesContent = React.useMemo(() => {
536
540
  if (valuesSlot) return valuesSlot;
537
541
  if (!values || values.length === 0) return null;
538
- return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
539
- (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) }),
540
- 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 })),
541
- 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 }))
542
- ] }, index));
542
+ return values.map((value, index) => /* @__PURE__ */ jsxRuntime.jsxs(
543
+ "div",
544
+ {
545
+ className: cn("rounded-lg p-5", cardClassName, value.className),
546
+ children: [
547
+ (value.icon || value.iconName) && /* @__PURE__ */ jsxRuntime.jsx(
548
+ "span",
549
+ {
550
+ className: cn(
551
+ "mb-8 flex size-12 items-center justify-center rounded-full ",
552
+ value.iconClassName
553
+ ),
554
+ children: renderValueIcon(value)
555
+ }
556
+ ),
557
+ value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
558
+ "h3",
559
+ {
560
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
561
+ children: value.title
562
+ }
563
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
564
+ "div",
565
+ {
566
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
567
+ children: value.title
568
+ }
569
+ )),
570
+ value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-7 ", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("leading-7", value.descriptionClassName), children: value.description }))
571
+ ]
572
+ },
573
+ index
574
+ ));
543
575
  }, [valuesSlot, values, cardClassName, renderValueIcon]);
544
576
  return /* @__PURE__ */ jsxRuntime.jsxs(
545
577
  Section,
@@ -552,9 +584,30 @@ function FeatureThreeColumnValues({
552
584
  className,
553
585
  containerClassName,
554
586
  children: [
555
- 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 })),
556
- 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 })),
557
- (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 })
587
+ label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4 text-sm lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4 text-sm lg:text-base", labelClassName), children: label })),
588
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
589
+ "h2",
590
+ {
591
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
592
+ children: title
593
+ }
594
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
595
+ "div",
596
+ {
597
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
598
+ children: title
599
+ }
600
+ )),
601
+ (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
602
+ "div",
603
+ {
604
+ className: cn(
605
+ "mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3",
606
+ gridClassName
607
+ ),
608
+ children: valuesContent
609
+ }
610
+ )
558
611
  ]
559
612
  }
560
613
  );
@@ -501,24 +501,56 @@ function FeatureThreeColumnValues({
501
501
  gridClassName,
502
502
  cardClassName,
503
503
  background,
504
- spacing,
504
+ spacing = "py-6 md:py-32",
505
505
  pattern,
506
506
  patternOpacity,
507
507
  patternClassName
508
508
  }) {
509
- const renderValueIcon = React.useCallback((value) => {
510
- if (value.icon) return value.icon;
511
- if (value.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: value.iconName, size: 24 });
512
- return null;
513
- }, []);
509
+ const renderValueIcon = React.useCallback(
510
+ (value) => {
511
+ if (value.icon) return value.icon;
512
+ if (value.iconName)
513
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: value.iconName, size: 24 });
514
+ return null;
515
+ },
516
+ []
517
+ );
514
518
  const valuesContent = useMemo(() => {
515
519
  if (valuesSlot) return valuesSlot;
516
520
  if (!values || values.length === 0) return null;
517
- return values.map((value, index) => /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
518
- (value.icon || value.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
519
- value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title })),
520
- value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsx("div", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }))
521
- ] }, index));
521
+ return values.map((value, index) => /* @__PURE__ */ jsxs(
522
+ "div",
523
+ {
524
+ className: cn("rounded-lg p-5", cardClassName, value.className),
525
+ children: [
526
+ (value.icon || value.iconName) && /* @__PURE__ */ jsx(
527
+ "span",
528
+ {
529
+ className: cn(
530
+ "mb-8 flex size-12 items-center justify-center rounded-full ",
531
+ value.iconClassName
532
+ ),
533
+ children: renderValueIcon(value)
534
+ }
535
+ ),
536
+ value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsx(
537
+ "h3",
538
+ {
539
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
540
+ children: value.title
541
+ }
542
+ ) : /* @__PURE__ */ jsx(
543
+ "div",
544
+ {
545
+ className: cn("mb-2 text-xl font-medium", value.titleClassName),
546
+ children: value.title
547
+ }
548
+ )),
549
+ value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-7 ", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsx("div", { className: cn("leading-7", value.descriptionClassName), children: value.description }))
550
+ ]
551
+ },
552
+ index
553
+ ));
522
554
  }, [valuesSlot, values, cardClassName, renderValueIcon]);
523
555
  return /* @__PURE__ */ jsxs(
524
556
  Section,
@@ -531,9 +563,30 @@ function FeatureThreeColumnValues({
531
563
  className,
532
564
  containerClassName,
533
565
  children: [
534
- label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label })),
535
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
536
- (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
566
+ label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-sm lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-sm lg:text-base", labelClassName), children: label })),
567
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
568
+ "h2",
569
+ {
570
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
571
+ children: title
572
+ }
573
+ ) : /* @__PURE__ */ jsx(
574
+ "div",
575
+ {
576
+ className: cn("text-3xl font-medium lg:text-4xl", titleClassName),
577
+ children: title
578
+ }
579
+ )),
580
+ (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsx(
581
+ "div",
582
+ {
583
+ className: cn(
584
+ "mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3",
585
+ gridClassName
586
+ ),
587
+ children: valuesContent
588
+ }
589
+ )
537
590
  ]
538
591
  }
539
592
  );
@@ -985,14 +985,15 @@ function FeatureUtilityCardsGrid({
985
985
  cardClassName,
986
986
  optixFlowConfig,
987
987
  background,
988
- spacing,
988
+ spacing = "py-6 md:py-32",
989
989
  pattern,
990
990
  patternOpacity,
991
991
  patternClassName
992
992
  }) {
993
993
  const renderLabelIcon = React.useMemo(() => {
994
994
  if (labelIcon) return labelIcon;
995
- if (labelIconName) return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
995
+ if (labelIconName)
996
+ return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
996
997
  return null;
997
998
  }, [labelIcon, labelIconName]);
998
999
  const learnMoreContent = React.useMemo(() => {
@@ -1004,7 +1005,10 @@ function FeatureUtilityCardsGrid({
1004
1005
  {
1005
1006
  href: learnMoreAction.href,
1006
1007
  onClick: learnMoreAction.onClick,
1007
- className: cn("hover:text-primary hover:underline", learnMoreAction.className),
1008
+ className: cn(
1009
+ "hover:text-primary hover:underline",
1010
+ learnMoreAction.className
1011
+ ),
1008
1012
  "aria-label": learnMoreAction["aria-label"],
1009
1013
  children: learnMoreAction.children
1010
1014
  }
@@ -1015,7 +1019,7 @@ function FeatureUtilityCardsGrid({
1015
1019
  {
1016
1020
  href: learnMoreAction.href,
1017
1021
  onClick: learnMoreAction.onClick,
1018
- className: cn("hover:text-primary hover:underline", learnMoreAction.className),
1022
+ className: cn(learnMoreAction.className),
1019
1023
  "aria-label": learnMoreAction["aria-label"],
1020
1024
  children: [
1021
1025
  learnMoreAction.icon,
@@ -1025,32 +1029,45 @@ function FeatureUtilityCardsGrid({
1025
1029
  }
1026
1030
  );
1027
1031
  }, [learnMoreSlot, learnMoreAction]);
1028
- const renderUtilityImage = React__namespace.useCallback((utility) => {
1029
- if (utility.imageSlot) return utility.imageSlot;
1030
- if (utility.image) {
1031
- return /* @__PURE__ */ jsxRuntime.jsx(
1032
- img.Img,
1033
- {
1034
- src: utility.image,
1035
- alt: utility.imageAlt || (typeof utility.title === "string" ? utility.title : "Utility image"),
1036
- className: cn("aspect-video w-full object-cover", utility.imageClassName),
1037
- loading: "lazy",
1038
- optixFlowConfig
1039
- }
1040
- );
1041
- }
1042
- return null;
1043
- }, [optixFlowConfig]);
1032
+ const renderUtilityImage = React__namespace.useCallback(
1033
+ (utility) => {
1034
+ if (utility.imageSlot) return utility.imageSlot;
1035
+ if (utility.image) {
1036
+ return /* @__PURE__ */ jsxRuntime.jsx(
1037
+ img.Img,
1038
+ {
1039
+ src: utility.image,
1040
+ alt: utility.imageAlt || (typeof utility.title === "string" ? utility.title : "Utility image"),
1041
+ className: cn(
1042
+ "aspect-video w-full object-cover",
1043
+ utility.imageClassName
1044
+ ),
1045
+ loading: "lazy",
1046
+ optixFlowConfig
1047
+ }
1048
+ );
1049
+ }
1050
+ return null;
1051
+ },
1052
+ [optixFlowConfig]
1053
+ );
1044
1054
  const utilitiesContent = React.useMemo(() => {
1045
1055
  if (utilitiesSlot) return utilitiesSlot;
1046
1056
  if (!utilities || utilities.length === 0) return null;
1047
- return utilities.map((utility, index) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: cn("overflow-hidden pt-0", cardClassName, utility.className), children: [
1048
- renderUtilityImage(utility),
1049
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5", children: [
1050
- utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title })),
1051
- utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }))
1052
- ] })
1053
- ] }, index));
1057
+ return utilities.map((utility, index) => /* @__PURE__ */ jsxRuntime.jsxs(
1058
+ Card,
1059
+ {
1060
+ className: cn("overflow-hidden pt-0", cardClassName, utility.className),
1061
+ children: [
1062
+ renderUtilityImage(utility),
1063
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-5", children: [
1064
+ utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title })),
1065
+ utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("", utility.descriptionClassName), children: utility.description }))
1066
+ ] })
1067
+ ]
1068
+ },
1069
+ index
1070
+ ));
1054
1071
  }, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
1055
1072
  return /* @__PURE__ */ jsxRuntime.jsxs(
1056
1073
  Section,
@@ -1064,20 +1081,50 @@ function FeatureUtilityCardsGrid({
1064
1081
  containerClassName: cn("max-w-7xl", containerClassName),
1065
1082
  children: [
1066
1083
  (label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1067
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
1068
- (label || labelIcon || labelIconName) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
1069
- renderLabelIcon,
1070
- label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: label }))
1071
- ] }),
1072
- learnMoreContent
1073
- ] }),
1084
+ /* @__PURE__ */ jsxRuntime.jsxs(
1085
+ "div",
1086
+ {
1087
+ className: cn(
1088
+ "flex items-center justify-between text-sm",
1089
+ headerClassName
1090
+ ),
1091
+ children: [
1092
+ (label || labelIcon || labelIconName) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-1 ", labelClassName), children: [
1093
+ renderLabelIcon,
1094
+ label && (typeof label === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: label }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: label }))
1095
+ ] }),
1096
+ learnMoreContent
1097
+ ]
1098
+ }
1099
+ ),
1074
1100
  /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mt-3 mb-8" })
1075
1101
  ] }),
1076
1102
  (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
1077
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title })),
1103
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1104
+ "h2",
1105
+ {
1106
+ className: cn("text-3xl font-medium md:w-1/2", titleClassName),
1107
+ children: title
1108
+ }
1109
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1110
+ "div",
1111
+ {
1112
+ className: cn("text-3xl font-medium md:w-1/2", titleClassName),
1113
+ children: title
1114
+ }
1115
+ )),
1078
1116
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("md:w-1/2", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("md:w-1/2", descriptionClassName), children: description }))
1079
1117
  ] }),
1080
- (utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
1118
+ (utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
1119
+ "div",
1120
+ {
1121
+ className: cn(
1122
+ "mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1123
+ gridClassName
1124
+ ),
1125
+ children: utilitiesContent
1126
+ }
1127
+ )
1081
1128
  ]
1082
1129
  }
1083
1130
  );
@@ -963,14 +963,15 @@ function FeatureUtilityCardsGrid({
963
963
  cardClassName,
964
964
  optixFlowConfig,
965
965
  background,
966
- spacing,
966
+ spacing = "py-6 md:py-32",
967
967
  pattern,
968
968
  patternOpacity,
969
969
  patternClassName
970
970
  }) {
971
971
  const renderLabelIcon = useMemo(() => {
972
972
  if (labelIcon) return labelIcon;
973
- if (labelIconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
973
+ if (labelIconName)
974
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
974
975
  return null;
975
976
  }, [labelIcon, labelIconName]);
976
977
  const learnMoreContent = useMemo(() => {
@@ -982,7 +983,10 @@ function FeatureUtilityCardsGrid({
982
983
  {
983
984
  href: learnMoreAction.href,
984
985
  onClick: learnMoreAction.onClick,
985
- className: cn("hover:text-primary hover:underline", learnMoreAction.className),
986
+ className: cn(
987
+ "hover:text-primary hover:underline",
988
+ learnMoreAction.className
989
+ ),
986
990
  "aria-label": learnMoreAction["aria-label"],
987
991
  children: learnMoreAction.children
988
992
  }
@@ -993,7 +997,7 @@ function FeatureUtilityCardsGrid({
993
997
  {
994
998
  href: learnMoreAction.href,
995
999
  onClick: learnMoreAction.onClick,
996
- className: cn("hover:text-primary hover:underline", learnMoreAction.className),
1000
+ className: cn(learnMoreAction.className),
997
1001
  "aria-label": learnMoreAction["aria-label"],
998
1002
  children: [
999
1003
  learnMoreAction.icon,
@@ -1003,32 +1007,45 @@ function FeatureUtilityCardsGrid({
1003
1007
  }
1004
1008
  );
1005
1009
  }, [learnMoreSlot, learnMoreAction]);
1006
- const renderUtilityImage = React.useCallback((utility) => {
1007
- if (utility.imageSlot) return utility.imageSlot;
1008
- if (utility.image) {
1009
- return /* @__PURE__ */ jsx(
1010
- Img,
1011
- {
1012
- src: utility.image,
1013
- alt: utility.imageAlt || (typeof utility.title === "string" ? utility.title : "Utility image"),
1014
- className: cn("aspect-video w-full object-cover", utility.imageClassName),
1015
- loading: "lazy",
1016
- optixFlowConfig
1017
- }
1018
- );
1019
- }
1020
- return null;
1021
- }, [optixFlowConfig]);
1010
+ const renderUtilityImage = React.useCallback(
1011
+ (utility) => {
1012
+ if (utility.imageSlot) return utility.imageSlot;
1013
+ if (utility.image) {
1014
+ return /* @__PURE__ */ jsx(
1015
+ Img,
1016
+ {
1017
+ src: utility.image,
1018
+ alt: utility.imageAlt || (typeof utility.title === "string" ? utility.title : "Utility image"),
1019
+ className: cn(
1020
+ "aspect-video w-full object-cover",
1021
+ utility.imageClassName
1022
+ ),
1023
+ loading: "lazy",
1024
+ optixFlowConfig
1025
+ }
1026
+ );
1027
+ }
1028
+ return null;
1029
+ },
1030
+ [optixFlowConfig]
1031
+ );
1022
1032
  const utilitiesContent = useMemo(() => {
1023
1033
  if (utilitiesSlot) return utilitiesSlot;
1024
1034
  if (!utilities || utilities.length === 0) return null;
1025
- return utilities.map((utility, index) => /* @__PURE__ */ jsxs(Card, { className: cn("overflow-hidden pt-0", cardClassName, utility.className), children: [
1026
- renderUtilityImage(utility),
1027
- /* @__PURE__ */ jsxs("div", { className: "p-5", children: [
1028
- utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title })),
1029
- utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }))
1030
- ] })
1031
- ] }, index));
1035
+ return utilities.map((utility, index) => /* @__PURE__ */ jsxs(
1036
+ Card,
1037
+ {
1038
+ className: cn("overflow-hidden pt-0", cardClassName, utility.className),
1039
+ children: [
1040
+ renderUtilityImage(utility),
1041
+ /* @__PURE__ */ jsxs("div", { className: "p-5", children: [
1042
+ utility.title && (typeof utility.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-1 font-medium", utility.titleClassName), children: utility.title })),
1043
+ utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsx("div", { className: cn("", utility.descriptionClassName), children: utility.description }))
1044
+ ] })
1045
+ ]
1046
+ },
1047
+ index
1048
+ ));
1032
1049
  }, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
1033
1050
  return /* @__PURE__ */ jsxs(
1034
1051
  Section,
@@ -1042,20 +1059,50 @@ function FeatureUtilityCardsGrid({
1042
1059
  containerClassName: cn("max-w-7xl", containerClassName),
1043
1060
  children: [
1044
1061
  (label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxs(Fragment, { children: [
1045
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
1046
- (label || labelIcon || labelIconName) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
1047
- renderLabelIcon,
1048
- label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { children: label }) : /* @__PURE__ */ jsx("div", { children: label }))
1049
- ] }),
1050
- learnMoreContent
1051
- ] }),
1062
+ /* @__PURE__ */ jsxs(
1063
+ "div",
1064
+ {
1065
+ className: cn(
1066
+ "flex items-center justify-between text-sm",
1067
+ headerClassName
1068
+ ),
1069
+ children: [
1070
+ (label || labelIcon || labelIconName) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 ", labelClassName), children: [
1071
+ renderLabelIcon,
1072
+ label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { children: label }) : /* @__PURE__ */ jsx("div", { children: label }))
1073
+ ] }),
1074
+ learnMoreContent
1075
+ ]
1076
+ }
1077
+ ),
1052
1078
  /* @__PURE__ */ jsx(Separator, { className: "mt-3 mb-8" })
1053
1079
  ] }),
1054
1080
  (title || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
1055
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title })),
1081
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
1082
+ "h2",
1083
+ {
1084
+ className: cn("text-3xl font-medium md:w-1/2", titleClassName),
1085
+ children: title
1086
+ }
1087
+ ) : /* @__PURE__ */ jsx(
1088
+ "div",
1089
+ {
1090
+ className: cn("text-3xl font-medium md:w-1/2", titleClassName),
1091
+ children: title
1092
+ }
1093
+ )),
1056
1094
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("md:w-1/2", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("md:w-1/2", descriptionClassName), children: description }))
1057
1095
  ] }),
1058
- (utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
1096
+ (utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsx(
1097
+ "div",
1098
+ {
1099
+ className: cn(
1100
+ "mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3",
1101
+ gridClassName
1102
+ ),
1103
+ children: utilitiesContent
1104
+ }
1105
+ )
1059
1106
  ]
1060
1107
  }
1061
1108
  );
@@ -954,7 +954,7 @@ function AccordionItem({
954
954
  AccordionPrimitive__namespace.Item,
955
955
  {
956
956
  "data-slot": "accordion-item",
957
- className: cn("border-b last:border-b-0", className),
957
+ className: cn("border-b ", className),
958
958
  ...props
959
959
  }
960
960
  );
@@ -975,7 +975,13 @@ function AccordionTrigger({
975
975
  ...props,
976
976
  children: [
977
977
  children,
978
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
978
+ /* @__PURE__ */ jsxRuntime.jsx(
979
+ DynamicIcon,
980
+ {
981
+ name: "lucide/chevron-down",
982
+ className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
983
+ }
984
+ )
979
985
  ]
980
986
  }
981
987
  ) });
@@ -928,7 +928,7 @@ function AccordionItem({
928
928
  AccordionPrimitive.Item,
929
929
  {
930
930
  "data-slot": "accordion-item",
931
- className: cn("border-b last:border-b-0", className),
931
+ className: cn("border-b ", className),
932
932
  ...props
933
933
  }
934
934
  );
@@ -949,7 +949,13 @@ function AccordionTrigger({
949
949
  ...props,
950
950
  children: [
951
951
  children,
952
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
952
+ /* @__PURE__ */ jsx(
953
+ DynamicIcon,
954
+ {
955
+ name: "lucide/chevron-down",
956
+ className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
957
+ }
958
+ )
953
959
  ]
954
960
  }
955
961
  ) });
@@ -949,7 +949,7 @@ function AccordionItem({
949
949
  AccordionPrimitive__namespace.Item,
950
950
  {
951
951
  "data-slot": "accordion-item",
952
- className: cn("border-b last:border-b-0", className),
952
+ className: cn("border-b ", className),
953
953
  ...props
954
954
  }
955
955
  );
@@ -970,7 +970,13 @@ function AccordionTrigger({
970
970
  ...props,
971
971
  children: [
972
972
  children,
973
- /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-down", className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
973
+ /* @__PURE__ */ jsxRuntime.jsx(
974
+ DynamicIcon,
975
+ {
976
+ name: "lucide/chevron-down",
977
+ className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
978
+ }
979
+ )
974
980
  ]
975
981
  }
976
982
  ) });
@@ -925,7 +925,7 @@ function AccordionItem({
925
925
  AccordionPrimitive.Item,
926
926
  {
927
927
  "data-slot": "accordion-item",
928
- className: cn("border-b last:border-b-0", className),
928
+ className: cn("border-b ", className),
929
929
  ...props
930
930
  }
931
931
  );
@@ -946,7 +946,13 @@ function AccordionTrigger({
946
946
  ...props,
947
947
  children: [
948
948
  children,
949
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-down", className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
949
+ /* @__PURE__ */ jsx(
950
+ DynamicIcon,
951
+ {
952
+ name: "lucide/chevron-down",
953
+ className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"
954
+ }
955
+ )
950
956
  ]
951
957
  }
952
958
  ) });